Oracle AI Databaseへの接続の構成
データベース側でOracle GoldenGateに接続するために必要なユーザー権限と、Oracle AI DatabaseからOracle GoldenGateへの接続を設定するための構成手順について学習します。
Oracleのデータベース・ユーザーおよび権限の準備
データベース・ユーザーの作成およびOracle GoldenGate for Oracleの権限の割当てについて学習します。
ノート: ExtractとReplicatの両方で、データベースが読取り/書込みモードである必要があります。DMLリダイレクションが有効な場合でも、Extractは、Data Guardスタンバイ・データベースまたは読取り専用アクティビティ用にオープンしているActive Data Guardスタンバイ・データベースからキャプチャできません。
Oracle AI Database 26ai以上に対するユーザー権限の付与
Oracle AI Database 26aiには、SQL文でデータベース・ユーザーにロールベースの権限を付与するユーザー・ロールが用意されています。
Oracle AI Database 26aiでは、ロールベースのアプローチを使用して、レプリケーションに必要な権限を付与します。これらのロールは、DBMS_GOLDENGATE_AUTHパッケージ内のGRANT_ADMIN_PRIVILEGEプロシージャにかわるものです。
たとえば、Oracle GoldenGate管理ユーザーを作成するには、ユーザーの作成中にそのユーザーに適切なOGG_*ロールを付与する必要があります。Oracle AI Database 26aiでDBMS_GOLDENGATE_AUTHパッケージ内のGRANT_ADMIN_PRIVILEGEプロシージャを引き続使用する場合、権限は付与されません。かわりに、そのプロシージャ・コールが無効であることを示す警告メッセージが表示されます。
Oracle GoldenGate 26aiで導入されているユーザー・ロールを次に示します:
OGG_CAPTURE
OGG_CAPTUREには、Extractプロセスの使用および管理に必要な権限が含まれます。
ExtractでDMLおよびDDLを取得するには、次の権限が必要です。
GRANT CONNECT, RESOURCE to ggadmin CONTAINER = all;
GRANT OGG_CAPTURE to ggadmin CONTAINER = all;
Extractプロセスがルート・コンテナに登録されている場合は、次の追加ステップを実行する必要があります。
ALTER USER ggadmin SET CONTAINER_DATA = all CONTAINER = current;
OGG_APPLY
Oracle GoldenGateのReplicatを使用するために必要な権限を持つロール。
Replicatプロセスを使用するには、ユーザーに、このロールと、ターゲットでDMLおよびDDLを実行するための権限が必要です。たとえば、Replicatプロセスの目的がHRスキーマからEMPLOYEES表に対してDML操作を実行することである場合:
GRANT CONNECT, RESOURCE to ggadmin;
GRANT OGG_APPLY to ggadmin;
GRANT SELECT, INSERT, UPDATE, DELETE on HR.EMPLOYEES TO GGADMIN;
Replicatユーザーの目的がCREATE TABLE、DROP TABLE、ALTER TABLEなどのDDL操作の適用である場合は、このような文の実行に必要なシステム権限が付与されている必要があります。
GRANT CREATE TABLE, ALTER TABLE, DROP TABLE to ggadmin;
OGG_APPLY_PROCREP
Oracle GoldenGateでのプロシージャ・レプリケーションでサポートされているパッケージの実行に必要な権限を備えたロールです。これには実行権限のみが含まれているため、ユーザーにReplicatプロセスの実行とターゲットでのプロシージャの実行を可能にするには、このロールをOGG_APPLYロールとともに使用する必要があります。
たとえば、Replicatによってプロシージャ実行を適用する場合です。その付与プロセスを次に示します:
GRANT CONNECT, RESOURCE to ggadmin;
GRANT OGG_APPLY, OGG_APPLY_PROCREP to ggadmin;
Oracle Database 21c以前のユーザー権限の付与
Oracle GoldenGateからOracle AI Databaseへの接続に必要なユーザー権限は、ユーザーのタイプによって異なります。
権限は、ソース・データベースおよびターゲット・データベースでGoldenGate管理者ユーザーとして実行する必要があるアクションに応じて付与する必要があります。たとえば、トランザクションを挿入、更新および削除するDML操作権限をユーザーに付与するには、GRANT ANY INSERT/UPDATE/DELETE権限を使用し、さらに、DML操作の一部として表および索引を操作することをユーザーに許可するには、GRANT CREATE/DROP/ALTER ANY TABLE/INDEX権限を使用します。
GoldenGate管理者ユーザーにDBAロールがある場合、追加のオブジェクト権限は必要ありません。ただし、GoldenGate管理ユーザーにDBAロールを付与する際にセキュリティ制約がある場合があります。DBAロールは、Oracle GoldenGateに必ずしも必要とはかぎりません。
レプリケートされるオブジェクトが多人数ある場合は、DMLおよびDDL操作にANY権限を使用することを検討してください。これにより、データベース操作に応じていくつかの権限を付与するだけで済むため、GoldenGate管理者ユーザーへの権限のプロビジョニングが簡略化されます。
次の表に、Oracle AI Databaseに対するGoldenGate管理者ユーザーの重要な権限の一部を示します。説明のために、表では、マルチテナント・コンテナ・データベースの共通ユーザーの例としてc##ggadminを使用し、プラガブル・データベース(PDB)ユーザーとしてggadminを使用します。PDBEASTおよびPDBWESTは、PDB名の例として使用されます。
次の表に、ソースおよびターゲットのOracle DatabasesでOracle GoldenGateを使用するためのGoldenGate管理者ユーザーの重要な権限を示します。
| 権限 | Extract | Replicat全モード | 目的 |
|---|---|---|---|
RESOURCE |
はい | はい | オブジェクトの作成に必要 Oracle Database 12cR1以降では、 |
CONNECT |
はい | はい | 共通ユーザー Oracleマルチテナント・データベースの共通ユーザーに付与される権限の例を参照してください。 |
CREATE PROCEDURE |
はい | はい | ハートビート表を追加するために必要です。 |
CREATE SESSION |
はい | はい | データベースへの接続に必要です。 |
CREATE VIEW |
はい | はい | ハートビート表ビューを追加するために必要です。 各オブジェクトに固有にする場合は、各オブジェクトの権限を個別に指定することもできます。このような権限を維持するために、特定のデータベース・ロールの作成を検討できます。 |
ALTER SYSTEM |
はい | はい | ロギングの有効化などの管理変更を実行 |
ALTER USER |
はい | はい | マルチテナント・アーキテクチャに必要であり、GGADMINは有効なOracle GoldenGate管理者スキーマである必要があります。 |
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('REPUSER', CONTAINER=>'PDBEAST'); |
はい | はい |
|
SYSユーザーとして接続されたDV_GOLDENGATE_ADMINおよびDV_GOLDENGATE_REDO_ACCESS権限をExtractおよびReplicatユーザーに付与します。 |
はい | はい | Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
レルムに適用する場合は、DBMS_MACADM.ADD_AUTH_TO_REALMの権限を付与します。 |
はい | はい | Data Vaultからデータを取得するために初期ロードExtractで必要です。「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
ターゲット表のINSERT、UPDATE、DELETE |
NA | はい | レプリケートされたDMLをターゲット・オブジェクトに適用「Oracle DMLのオブジェクトと操作のサポートの詳細」を参照してください |
|
|
NA | はい | すべての表がレプリケートされる場合は、INSERT、UPDATE、DELETEをすべての表に付与するのではなく、Replicatユーザーにこれらの権限を付与します。 |
DDLレプリケーションを実行する場合は、次の権限をDatabase Vault所有者として付与します: |
いいえ | いいえ | Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
| ターゲット・オブジェクトのDDL権限(DDLサポートを使用している場合) | NA | はい | レプリケートされたDDLをターゲット・オブジェクトに発行Oracle DDLのオブジェクトと操作のサポートの詳細を参照してください。 |
GRANT [CREATE\|ALTER\|DROP] ANY [TABLE\|INDEX\|VIEW\|PROCEDURE] to GGADMIN; |
はい | はい | 表のDDLレプリケーションの権限を付与します。 |
CREATE ANY TABLE |
はい | はい | 任意のスキーマで表を作成する権限を付与する。特定のスキーマでのみ表を作成できるようにするには、CREATE TABLE権限を使用します。 |
CREATE ANY VIEW |
はい | はい | 任意のデータベース・スキーマでビューを作成する権限を付与します。特定のスキーマでビューを作成できるようにするには、CREATE VIEW権限を使用します。 |
|
|
はい | はい | ディクショナリ表で適切に機能するためにすべての権限を許可します。 |
例: Oracle AI Databaseの共通ユーザーに付与される権限
Oracle AI Database共通ユーザー(次の例のc##ggadmin)に付与される権限を付与します:
ALTER USER c##ggadmin IDENTIFIED BY ggadmin CONTAINER=all;
ALTER USER c##ggadmin SET CONTAINER_DATA=all CONTAINER=current;
ALTER USER c##ggadmin QUOTA unlimited ON GG_DATA;
TABLESPACE GG_DATA TEMPORARY TABLESPACE temp;
GRANT RESOURCE to c##ggadmin;
GRANT CREATE SESSION to c##ggadmin;
GRANT CREATE VIEW to c##ggadmin;
GRANT CREATE TABLE to c##ggadmin;
GRANT CONNECT to c##ggadmin CONTAINER=all;
GRANT DV_GOLDENGATE_ADMIN; --- for data vault user
GRANT DV_GOLDENGATE_REDO_ACCESS; --- for data vault user
GRANT ALTER SYSTEM to c##ggadmin;
GRANT ALTER USER to c##ggadmin;
GRANT SELECT ANY DICTIONARY to c##ggadmin;
GRANT SELECT ANY TRANSACTION to c##ggadmin;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('c##ggadmin');
この例では、DBA権限は指定されていません。権限がない場合、DBAは必要な権限を追加で付与する必要があります。
PDBユーザーggadminに付与される権限については、次の例を参照してください。
ALTER SESSION SET CONTAINER=dbwest;
ALTER USER c#ggadmin IDENTIFIED BY ggadmin CONTAINER=all;
GRANT CONNECT, RESOURCE, DBA TO c##ggadmin CONTAINER=CURRENT;
GRANT ALTER SESSION TO c##ggadmin CONTAINER=all;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('ggadmin');
ノート: DBAロールの付与は、すべてのユーザーに必須なわけではありません。権限は、ユーザーがデータベースで実行する必要がある操作に応じて付与する必要があります。たとえば、トランザクションを挿入、更新および削除するDML操作権限をggadminに付与するには、GRANT ANY INSERT/UPDATE/DELETE権限を使用します。ユーザーがDML操作の一部として表および索引を操作できるようにするには、GRANT CREATE/DROP/ALTER ANY TABLE/INDEX権限を使用します。
例: DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGEパッケージを使用した権限の付与
このプロシージャでは、ユーザーがOracle GoldenGate管理者になるために必要とする権限を付与します。次の例では、Oracleマルチテナント・データベースに対するExtractの明示的な権限を付与します:
BEGIN
DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE
(GRANTEE => 'c##ggadmin'
,PRIVILEGE_TYPE => 'CAPTURE'
,GRANT_SELECT_PRIVILEGES => TRUE
,DO_GRANTS => TRUE
,CONTAINER => 'ALL');
END;
詳細は、Oracle AI Database PL/SQLパッケージおよびタイプ・リファレンスのDBMS_GOLDENGATE_AUTHを参照してください。
Oracle Data Vaultからキャプチャするための権限
Oracle AI DatabaseでSYSユーザーとして接続されている次の権限を付与します次の権限は、ExtractおよびReplicatのユーザー資格証明に対して設定されます。
-
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('*userID*','*',
GRANT_OPTIONAL_PRIVILEGES=>'*');
GRANT DV_GOLDENGATE_ADMIN, DV_GOLDENGATE_REDO_ACCESS to *userID*;
-
レルムに適用する場合は、
DBMS_MACADM.ADD_AUTH_TO_REALMの権限をReplicatに付与。Database Vault所有者として接続し、次のスクリプトを実行します。
BEGIN DVSYS.DBMS_MACADM.ADD_AUTH_TO_REALM( REALM_NAME => 'Oracle Default Component Protection Realm',GRANTEE => '*userID*',AUTH_OPTIONS => 1) ; END ; / EXECUTE_DBMS_MACADM.AUTHORIZE_DDL('SYS', 'SYSTEM'); -
DDLレプリケーションの場合は、Database Vault所有者として次の権限を付与します。
EXECUTE DBMS_MACADM.AUTHORIZE_DDL ('*userID*', '*SCHEMA FOR DDL*');