10 ORDSデータベースAPIの有効化
この項では、Oracle REST Data Services (ORDS)データベースAPIを有効化する方法について説明します。
ORDSデータベースAPIは、Oracle REST Data Servicesに埋め込まれているデータベース管理およびモニタリングREST APIです。データベースのバージョンおよび構成に応じて、ORDSデータベースAPIは、プラガブル・データベースの管理、データのエクスポート、データベース・パフォーマンスのレビューなどのサービスを提供します。デフォルトでは、ORDSを初めてインストールするとき、ORDSデータベースAPI機能は無効になっています。
10.1 ORDSデータベースAPIを有効化するための基本設定
この項では、ORDSデータベースAPIを有効にするための基本設定について説明します。
database.api.enabled
プロパティ値をtrue
に設定してから、ORDSを再起動します。java -jar ords.war set-property database.api.enabled true
- データベース・ユーザー名とパスワードを使用したデータベース認証
- SQL管理者ロールを持つ中間層ユーザーを通じて
jdbc.auth.enabled=true
プロパティをtrueに設定してから、ORDSを再起動する必要があります。
java -jar ords.war set-property jdbc.auth.enabled true
データベース認証の場合は、スキーマを使用してデータベース内でデータベースAPI問合せを実行する前に、管理者スキーマがORDS対応であり、11gR2環境でDBAロールを付与されていること、または12c以上のバージョンのデータベースでPDB_DBAロールが付与されていることを確認します。これは、データベースを使用する非CDBまたはプラガブル・データベースごとに実行します。
SALESPDB
データベース内のPDBADMIN
スキーマを使用します。
GRANT PDB_DBA TO PDBADMIN;
ORDS_ADMIN.ENABLE_SCHEMA(p_schema => 'PDBADMIN');
ORDSデータベースAPIサービスが使用可能になりました。
表領域をリストするには、GET
リクエストをhttps://<server>/ords/salespdb/pdbadmin/_/db-api/stable/database/storage/tablespaces/
に送信します。
リクエスト時に、基本認証でユーザー名とパスワードを指定する必要があります。ブラウザを使用している場合は、ORDSによって、リクエストにログインして認証するためのリンクが提供されます。認証されると、ブラウザにアクセスCookieが設定され、これは次の30分間有効です。
使用可能な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サービスが使用可能になります。
10.2 ORDSデータベースAPIを有効化するための拡張設定
この項では、様々なデータベース・トポロジでORDSデータベースAPIを使用するための構成オプションについて説明します。
10.2.1 プラガブル・データベースのライフサイクル管理
この項では、プラガブル・データベース(PDB)ライフサイクル管理操作を有効にする方法について説明します。プラガブル・データベース管理はコンテナ・データベース(CDB)で実行され、作成、クローニング、接続、切断および削除操作が含まれます。
コンテナ・データベース内でORDS対応のスキーマを指定することはできません。PDBライフサイクル管理操作を実行するには、デフォルトのCDB管理者資格証明であるdb.cdb.adminUser
およびdb.cdb.adminUser.password
が接続プールで定義されている必要があります。この場合、URIにユーザー・スキーマを指定する必要はありません。
デフォルトCDB管理者の資格証明を定義するには、次の手順を実行します。
ORDSロールのSQL管理者を使用して、https://<server>/ords/_/db-api/stable/database/pdbs/
サービスにアクセスする必要があります。
10.2.2 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
に説明的な理由が生成されます。
10.3 デフォルト管理者の作成
この項では、非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サービスを使用する必要があります。