Oracle

Data source: External OracleEnterprise Edition+

概要

Oracle は外部データベースとして NocoBase に接続できます。接続すると、NocoBase は Oracle 内のテーブル、フィールド、ビューを読み込み、外部データソース内のデータテーブルとして利用できるようにします。

メインデータベースとは異なり、外部 Oracle の実際のテーブル構造は、元の業務システム、データベースクライアント、またはマイグレーションスクリプトによって引き続き管理されます。NocoBase は構造の読み取り、フィールドメタデータの保存、ページブロック、権限、ワークフロー、API の設定を担当します。

設定項目説明
対応バージョンOracle >= 11g。
商用版Enterprise Edition で利用できます。
対応プラグイン@nocobase/plugin-data-source-external-oracle
接続モードOracle Database 12.1 以降では通常 Thin モードを使用し、12.1 より前のバージョンでは Thick モードを使用します。

外部 Oracle の利用に適したシナリオ:

  • 既存の ERP、MES、WMS、CRM などの業務システムの Oracle データベースに接続する
  • 履歴データを移行せずに、NocoBase で管理画面を構築する
  • 既存のテーブルに対して権限管理、ワークフロー処理、データ修正、レポート表示を行う
  • データベース構造を DBA、マイグレーションスクリプト、または元のシステムで引き続き管理する
注意

外部 Oracle は NocoBase のシステムデータベースではありません。NocoBase がバックアップ、復元、マイグレーション、テーブル構造の変更を管理することはありません。

プラグインのインストール

このプラグインは商用プラグインです。詳しい有効化方法については、商用プラグイン有効化ガイドを参照してください。

接続モードで Thick を選択する場合は、NocoBase の実行環境に Oracle Client libraries をインストールし、データソース設定で「Client directory」を入力する必要があります。

Oracle クライアントのインストール

Oracle Database 12.1 以降では通常 Thin モードを使用するため、Oracle Client を別途インストールする必要はありません。Oracle Database 12.1 より前のバージョンに接続する場合、または Thick モードを使用する必要がある場合のみ、NocoBase の実行環境に Oracle Client libraries をインストールしてください。

データソース設定で「Thick」モードを選択した後、NocoBase サービスが稼働しているマシンから Oracle Client を読み込めることを確認してください。

20241204164359

Linux 環境では、次の方法で Oracle Instant Client をインストールできます。

apt-get update
apt-get install -y unzip wget libaio1
wget https://download.oracle.com/otn_software/linux/instantclient/1925000/instantclient-basic-linux.x64-19.25.0.0.0dbru.zip
unzip instantclient-basic-linux.x64-19.25.0.0.0dbru.zip -d /opt/
echo /opt/instantclient_19_25 > /etc/ld.so.conf.d/oracle-instantclient.conf
ldconfig

Oracle Client をシステムのデフォルトの読み込み場所にインストールしていない場合は、「Client directory」にクライアントライブラリのディレクトリを入力してください。たとえば、上記のインストール方法の場合、対応するディレクトリは /opt/instantclient_19_25 です。

20241204165940

ヒント

Client directory は Thick モードでのみ設定が必要です。Thin モードではこの設定を使用しません。初期化ルールの詳細については、node-oracledb 初期化ドキュメントを参照してください。

データソースの追加

「データソース管理」で「Add new」をクリックし、Oracle を選択して接続情報を入力します。

20241204164359

一般的な接続設定は次のとおりです。

設定説明
Data source nameデータソースを識別する名称です。ページブロック、権限、ワークフロー、API から参照する際に使用します。作成後は変更できません。
Data source display name画面上で表示されるデータソース名です。たとえば「ERP Oracle」「財務 DB」など、業務担当者が理解しやすい名称を使用することをおすすめします。
Host / PortOracle のホストアドレスとポートです。デフォルトのポートは通常 1521 です。
ServerNameOracle のサービス名です。データベースリスナーに設定されている service name を入力します。
Username / PasswordOracle への接続に使用するアカウントとパスワードです。NocoBase はこのアカウントの Owner に属するテーブルとビューを読み取ります。ほかの Owner に属するオブジェクトへの権限付与や読み取りは行いません。
Connection modeOracle の接続モードです。Oracle Database 12.1 以降では通常 Thin モードを使用し、12.1 より前のバージョンでは Thick モードを使用します。
Client directoryOracle Thick モードで使用する Oracle Client libraries のディレクトリです。Thick モードを選択した場合のみ設定が必要です。
Table prefixテーブル名のプレフィックスです。設定すると、NocoBase はこのプレフィックスに一致するテーブルとビューのみを読み込み、NocoBase 内ではプレフィックスを除いたデータテーブル名を生成します。
Collections / Add all collections接続対象の範囲を制御します。「Add all collections」を有効にすると、NocoBase は現在の Owner とプレフィックスの範囲内にあるすべてのテーブルとビューを接続します。無効にすると、「Collections」で選択したオブジェクトのみを接続します。
Enabled the data sourceこのデータソースを有効にするかどうかを指定します。無効にすると、データソース設定は保持されますが、ページブロック、権限、ワークフロー、API からデータを読み取れなくなります。
ヒント

Oracle における接続対象の範囲は、主に接続アカウントの Owner、Table prefix、「Collections」によって決まります。同じインスタンス内に多数のオブジェクトがある場合は、業務で必要な schema に接続する専用アカウントを使用し、不要なオブジェクトが NocoBase に取り込まれないようにすることをおすすめします。

データテーブルの選択

接続情報を入力した後、「Load Collections」をクリックすると、Oracle で利用可能なデータテーブルとビューを読み込めます。読み込み結果は、接続アカウントの Owner、Table prefix、「Collections」の設定によって異なります。

デフォルトでは「Add all collections」が有効になっており、現在の範囲内にあるすべてのテーブルとビューが接続対象になります。一部のオブジェクトのみを接続する場合は、「Add all collections」を無効にして、一覧から必要なデータテーブルまたはビューを選択してください。

add_new_database_configure_load_collection

注意

1 つの外部データソースで接続できるデータテーブルまたはビューは、最大 500 個です。Oracle 内に多数のオブジェクトがある場合は、接続アカウントの Owner、Table prefix、または「Collections」を使って、あらかじめ対象範囲を絞り込むことをおすすめします。

フィールドの同期と設定

外部 Oracle のテーブル構造はデータベース側で管理されます。NocoBase が外部 Oracle にフィールドを作成したり、フィールド型を変更したり、実際のフィールドを削除したりすることはありません。

Oracle 側のテーブル構造が変更された場合は、データソースで「Sync from database」を実行して、テーブルとフィールドのメタデータを再読み込みできます。同期によって、NocoBase に保存されているデータテーブル、フィールド、主キー、ユニークキー、フィールド型のマッピング情報が更新されます。ただし、Oracle 内の実際のテーブルやデータが削除されることはありません。

フィールドの同期後、NocoBase でフィールドのタイトル、フィールドタイプ(Field type)、フィールドコンポーネント(Field interface)を設定できます。NocoBase のリレーションフィールドを作成する場合も、リレーションメタデータは NocoBase に保存され、Oracle のテーブルに実際の外部キーフィールドが自動的に追加されることはありません。

フィールド型のマッピング

NocoBase は Oracle のフィールド型に基づいて、適切な Field type と Field interface に自動的にマッピングします。フィールド設定で画面上の表示方法を変更できます。

一般的なマッピングは次のとおりです。

Oracle フィールド型NocoBase Field type選択可能な Field interface
NUMBERintegerfloatbooleanbigIntunixTimestampsortInteger、Number、Sort、Checkbox、Switch、Select、Radio group。
BINARY_FLOATBINARY_DOUBLEFLOATfloatNumber、Percent。
INTEGERSMALLINTPLSQL_INTEGERintegerbooleansortInteger、Sort、Checkbox、Switch、Select、Radio group。
CHARNCHARVARCHAR2NVARCHAR2stringuuidnanoiddatetimeNoTzInput、Email、Phone、Password、Color、Icon、Select、Radio group、UUID、Nano ID。
LONGNCLOBstringtextInput、Textarea、Markdown、Vditor、Rich text。
CLOBstringInput、Textarea、Rich text。
DATEdatetimeNoTzDate、Time、Created at、Updated at。
TIMESTAMPdatetimeNoTzDate、Time、Created at、Updated at。
TIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TIME ZONEdatetimeTzDate、Time、Created at、Updated at。
ROWIDUROWIDstringtextintegerInput、Textarea、Integer。
JSONjsonJSON。
注意

BLOBBFILE などのバイナリオブジェクト型は、通常のファイルフィールドとして自動的に使用されることはありません。ページ上で添付ファイルを管理する必要がある場合は、通常、NocoBase のファイルテーブルまたは添付ファイルフィールドを使用してファイルメタデータを保存することをおすすめします。

主キーとレコードの一意識別子

ページブロックで表示・編集するデータテーブルには、主キーまたは一意フィールドを設定することをおすすめします。NocoBase はレコードの一意識別子として、主キーを優先的に使用します。

ビュー、主キーのないテーブル、または複合主キーのテーブルを接続する場合は、データテーブル設定で「Record unique key」を手動で設定する必要があります。利用可能な一意識別子がない場合、ページブロックでレコードを正しく表示、編集、削除できないことがあります。

20260709210948 20260709211004

関連リンク