Oracle Database 21c以前のユーザー権限の付与
Oracle GoldenGateからOracleデータベースへの接続に必要なユーザー権限は、ユーザーのタイプによって異なります。
権限は、ソース・データベースおよびターゲット・データベースで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データベースに対するGoldenGate管理者ユーザーの重要な権限の一部を示します。説明のために、表では、マルチテナント・コンテナ・データベースの共通ユーザーの例としてc##ggadmin
を使用し、プラガブル・データベース(PDB)ユーザーとしてggadmin
を使用します。PDBEAST
およびPDBWEST
は、PDB名の例として使用します。
権限 | Extract | Replicat全モード | 目的 |
---|---|---|---|
|
あり |
あり |
オブジェクトの作成に必要 Oracle Database 12cR1以降では、
|
|
あり |
あり |
共通ユーザー Oracleマルチテナント・データベースの共通ユーザーに付与される権限の例を参照してください。 |
|
あり |
あり |
ハートビート表を追加するために必要です。 |
|
あり |
あり |
データベースへの接続に必要です。 |
|
あり |
あり |
ハートビート表ビューを追加するために必要です。 各オブジェクトに固有にする場合は、各オブジェクトの権限を個別に指定することもできます。このような権限を維持するために、特定のデータベース・ロールの作成を検討できます。 |
|
あり |
あり |
ロギングの有効化などの管理変更を実行 |
|
あり |
あり |
マルチテナント・アーキテクチャに必要であり、 |
|
あり | あり |
|
|
あり |
あり |
Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
レルムに適用する場合は、 |
NA | あり |
Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
ターゲット表の |
NA |
あり |
レプリケートされたDMLをターゲット・オブジェクトに適用「Oracle DMLのオブジェクトと操作のサポートの詳細」を参照してください |
|
NA |
あり |
すべての表をレプリケートする場合は、 |
DDLレプリケーションを実行する場合は、次の権限をDatabase Vault所有者として付与してください:
|
なし | なし |
Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
ターゲット・オブジェクトのDDL権限(DDLサポートを使用している場合) |
NA |
あり |
レプリケートされたDDLをターゲット・オブジェクトに発行Oracle DDLのオブジェクトと操作のサポートの詳細を参照してください。 |
|
あり | あり | 表のDDLレプリケーションの権限を付与します。 |
|
あり |
あり |
任意のスキーマで表を作成する権限を付与します。特定のスキーマでのみ表を作成できるようにするには、 |
CREATE ANY VIEW |
あり |
あり | 任意のデータベース・スキーマでビューを作成する権限を付与します。特定のスキーマでビューを作成できるようにするには、CREATE VIEW 権限を使用します。
|
|
あり |
あり |
ディクショナリ表で適切に機能するためにすべての権限を許可します。 |
例: Oracleデータベースの共通ユーザーに付与される権限
c##ggadmin
)に付与される権限:CREATE USER c##ggadmin IDENTIFIED BY passw0rd CONTAINER=all DEFAULT
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;
ALTER USER c##ggadmin SET CONTAINER_DATA=all CONTAINER=current;
ALTER USER c##ggadmin QUOTA unlimited ON GG_DATA;
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;
CREATE USER ggadmin IDENTIFIED BY PASSWORD CONTAINER=CURRENT;
GRANT CONNECT, RESOURCE, DBA TO ggadmin CONTAINER=CURRENT;
GRANT CREATE SESSION TO ggadmin CONTAINER=CURRENT;
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 Database PL/SQLパッケージおよびタイプ・リファレンスのDBMS_GOLDENGATE_AUTH
を参照してください。