12 ORDSデータベースAPIの有効化
この項では、Oracle REST Data Services (ORDS)データベースAPIを有効化する方法について説明します。
ORDSデータベースAPIは、Oracle REST Data Servicesに埋め込まれているデータベース管理およびモニタリングREST APIです。データベースのバージョンおよび構成に応じて、ORDSデータベースAPIは、プラガブル・データベースの管理、データのエクスポート、データベース・パフォーマンスのレビューなどのサービスを提供します。デフォルトでは、ORDSを初めてインストールするとき、ORDSデータベースAPI機能は無効になっています。
ORDSデータベースAPIを有効化するための基本設定
この項では、ORDSデータベースAPIを有効にするための基本設定について説明します。
database.api.enabled
プロパティをtrue
に設定した後、ORDSを再起動します。java -jar ords.war set-property database.api.enabled true
- データベース・ユーザー名とパスワードを使用したデータベース認証
- SQL管理者ロールまたはシステム管理者ロールを持つ中間層ユーザーによる認証
ノート:
特定のロールによってのみアクセス可能な特定のエンドポイントがあります。Oracle DatabaseのREST APIのドキュメントには、各エンドポイントにアクセスできるロールに関する情報が記載されています。restEnabledSql.active
プロパティをtrue
に設定してから、ORDSを再起動する必要があります。
java -jar ords.war set-property restEnabledSql.active true
ノート:
次の例では、sqlplusコマンドライン・ユーティリティを使用してSALESPDBデータベースにシステム・ユーザーとして接続し、そのデータベースにPDBADMINユーザーを構成します。データベースに接続してステップを実行するメカニズムは、環境設定によって異なります。sqlplus system@SALESPDB
GRANT PDB_DBA TO PDBADMIN;
BEGIN
ORDS_ADMIN.ENABLE_SCHEMA(p_schema => 'PDBADMIN');
END;
/
PDBADMINユーザーは、これで、ORDSデータベースAPIサービスを使用できるようになります。
データベース内の表をリストするには、GET
リクエストをhttps://<server>/ords/salespdb/pdbadmin/_/db-api/stable/database/objects/tables/
に送信します。
リクエスト上に、ユーザー名とパスワードを指定する必要があります。ブラウザを使用している場合は、ORDSにより、リクエストにログインして認証するためのリンクが提供されます。認証されると、ブラウザはアクセスCookieを持ち、そのCookieが失効するまでユーザー資格証明を指定する必要がありません。
同じサービスは、curlなどのコマンドライン・ユーティリティを使用してアクセスできます。
curl --user pdbadmin:password https://<server>/ords/salespdb/pdbadmin/_/db-api/stable/database/objects/tables/
使用可能なORDSデータベースAPIサービスを記述したOpenAPI V3ドキュメントには、https://<server>/ords/<my database>/<my admin schema>/_/db-api/stable/metadata-catalog/openapi.json
からアクセスできます。https://<server>/ords/<my database>/<my admin schema>/_/db-api/stable/databases/pdbs/
を除いて、他のすべてのORDSデータベースAPIサービスが使用可能になります。
ORDSデータベースAPIを有効化するための拡張設定
この項では、様々なデータベース・トポロジでORDSデータベースAPIを使用するための構成オプションについて説明します。
ノート:
管理サービスの無効化:database.api.management.services.disabled
プロパティの値をtrue
に設定すると、次のORDSデータベースAPIサービスが無効になります。
- DBCAジョブ: DELETE、GETおよびPOST
- DBCAテンプレート: GET
- Oracleホーム環境: GET
- PDBライフサイクル: DELETE、GET、POST
- Open Service Broker: DELETE、GETおよびPUT
プラガブル・データベースのライフサイクル管理
この項では、プラガブル・データベース(PDB)ライフサイクル管理操作を有効にする方法について説明します。プラガブル・データベース管理はコンテナ・データベース(CDB)で実行され、作成、クローニング、接続、切断および削除操作が含まれます。
コンテナ・データベース内でORDS対応のスキーマを指定することはできません。PDBライフサイクル管理操作を実行するには、デフォルトのCDB管理者資格証明であるdb.cdb.adminUser
およびdb.cdb.adminUser.password
が接続プールで定義されている必要があります。この場合、URIにユーザー・スキーマを指定する必要はありません。
デフォルトCDB管理者の資格証明を定義するには、次のステップを実行します:
ORDSロールのSQL管理者を使用して、https://<server>/ords/_/db-api/stable/database/pdbs/
サービスにアクセスする必要があります。
PDBライフサイクル管理の無効化
この項では、PDBライフサイクル管理サービスを無効にする方法について説明します。
https://<server>/ords/_/db-api/stable/databases/pdbs/
で、ORDSデータベースAPIの有効化およびPDB関連サービスの無効化を実行できます。
オプションのCDB管理者の資格証明が設定されていない場合、ユーザーがhttps://<server>/ords/_/db-api/stable/databases/pdbs/
にアクセスしようとするとHTTP 503 Service Unavailable
レスポンスが生成されます。
ORDSインストールに対してPDB操作が無効になっていることを明確に示すには、次のコード・スニペットに示すように、database.api.management.services.disabled
プロパティをtrue
に設定してから、ORDSを再起動します。
java -jar ords.war set-property database.api.management.services.disabled true
これにより、レスポンスHTTP 503 Service Unavailable
に説明的な理由が生成されます。
デフォルト管理者の作成
この項では、非CDBまたはPDB接続用のデフォルトの管理者ユーザーを作成および使用する方法について説明します。
db.adminUser
およびdb.adminUser.password
を構成することで、対応するSQL文をデフォルトの管理者ユーザーとして実行できます。スキーマにDBAロールが割り当てられている場合は、指定されたORDS対応スキーマを使用して、ORDSデータベースAPIエンドポイントを実行できます。ただし、デフォルトの管理者資格証明が構成されている場合は、これを行う必要はありません。
ノート:
ユーザー資格証明は、すべてのプラガブル・データベースで同じである必要があるため、CDBに共通ユーザーを作成することをお薦めします。デフォルトの管理者を作成してDBAロールを付与するには、次のステップを実行します:
URIリクエストにスキーマを指定する必要はありません。
たとえば、https://<server>/ords/salespdb/_/db-api/stable/database/datapump/jobs/
では、salespdb,
内のすべてのデータ・ポンプ・ジョブがリストされ、そのデータベース内の問合せはdb.adminUser
ユーザーとして実行されます。
ORDSロールSQL管理者
は、データベースAPIサービスを使用する必要があります。
データベースAPI環境サービスの構成
この項では、ORDSデータベースAPI環境サービスの構成方法について説明します。
ORDS 19.2リリース以降では、ORDSがインストールされているシステムで一連の環境サービス操作を実行できます。
たとえば、次のエンドポイントはOracleホームで検出されたすべてのデータベースをリストします。
https://<server>/ords/_/db-api/stable/environment/databases/
ORDSデータベースAPI環境サービスを使用するには、ORDSシステム管理者ロールが必要です。環境サービスにより、ホスト・マシン上のデータベースのOracleホームに関する情報、およびデータベースを作成または削除する際のOracle Database Configuration AssistantへのRESTfulインタフェースが提供されます。
プラガブル・データベースのライフサイクル管理と同様に、環境サービスは無効にできます。
環境サービスを無効にするには、次のようにdatabase.api.management.services.disabled
プロパティをtrue
に設定してORDSを再起動します。
java -jar ords.war set-property database.api.management.services.disabled true
Open Service Broker API互換プラットフォームでのデータベースAPIの構成
この項では、Open Service Broker API互換プラットフォームでORDSデータベースAPIを構成および使用する方法について説明します。
ORDSデータベースAPIは、登録された接続プールごとにサービス・ブローカを提供します。Open Service Broker API仕様に準拠したサービス・ブローカを使用すると、プラットフォームではサービスの新規インスタンスをプロビジョニングできます。ORDSをOracleデータベースへのOpen Service Brokerとして使用すると、プラガブル・データベースおよびデータベース・ユーザーをプロビジョニングできます。データベースの性質によって、ORDSデータベースAPIにより提供されるサービスが決まります。
表12-1 Open Service Brokerサービス・カタログ
データベース・タイプ | サービス | プラン | 前提条件 |
---|---|---|---|
コンテナ・データベース | create-pluggable-database 。
Oracleマルチテナント・コンテナ・データベース内に新しいプラガブル・データベースを作成します。 |
別のローカル・プラガブル・データベースをクローニングして、コンテナ・データベース内に新しいプラガブル・データベースを作成します。ソース・データベースのORDS REST対応スキーマは、新しいデータベース内でREST対応になります。
|
プラガブル・データベースのライフサイクル管理を構成する必要があります。 |
非コンテナ・データベースまたはプラガブル・データベース |
Oracleデータベース・ユーザーを、データベースへのログインに使用できるアカウントを使用して作成および構成します。 |
create-standard-database-user 指定したロールおよび権限を持つOracleデータベース・ユーザーを作成します。ユーザーのオブジェクトは、デフォルトのデータベース表領域に格納されます。ユーザーの一時セグメントは、デフォルトの一時データベース表領域に格納されます。
ORDS対応スキーマを使用してOracleデータベース・ユーザーを作成します。ユーザーのオブジェクトは、デフォルトのデータベース表領域に格納されます。ユーザーの一時セグメントは、デフォルトの一時データベース表領域に格納されます。 |
なし |
create-oracle-database-user
非CDBまたはPDBサービス・カタログを登録するには、非CDBまたはPDBプールのサービス・ブローカURLを使用する必要があります。書式は次のとおりです。
https://<server>/ords/<my database>/<my admin schema>/_/db-api/stable/openservicebroker/
ORDS対応スキーマとしてPDBADMINを指定したSALESPDBの例を使用すると、URLは次のようになります。
https://<server>/ords/salespdb/pdbadmin/_/db-api/stable/openservicebroker/
ノート:
<my database>
には、デフォルトのデータベース接続を指定できます。https://<server>/ords/pdbadmin_/db-api/stable/openservicebroker/
です。- サポートされているOpen Service Broker操作
ORDSデータベースAPIでは、同期プロビジョニング操作がサポートされています。これ以外のOpen Service Broker操作(プロビジョニング解除やサービス・バインドなど)はサポートされていません。
- 特定のプールに対するサービス・ブローカの無効化
特定のプールに対して使用可能なOpen Service Brokerサービスを無効にするには、この機能を設定します。プール名を次のように指定して、
openservicebroker.exclude
プロパティをtrue
に設定します。java -jar ords.war set-property --conf <pool name> feature.openservicebroker.exclude true
その後、ORDSを再起動します。
実行時にコンテナ・データベースおよびプラガブル・データベースのマッピングとともにORDSを直接使用する場合、コンテナに対してOpen Service Brokerを無効にすると、そのコンテナ内のすべてのプラガブル・データベースに対してブローカが無効になります。このような場合、構成はコンテナ・データベース・プール構成ファイルで定義されます。