Oracleのデータベース・ユーザーおよび権限の準備
データベース・ユーザーの作成およびOracle GoldenGate for Oracleの権限の割当てについて学習します。
Oracle Database 23ai以降でのユーザー権限の付与
Oracle Database 23aiには、SQL文を使用してデータベース・ユーザーにロールベースの権限を付与するユーザー・ロールが用意されています。
Oracle Database 23aiでは、ロールベースの手法を使用して、レプリケーションに必要な権限を付与します。これらのロールは、DBMS_GOLDENGATE_AUTH
パッケージ内のGRANT_ADMIN_PRIVILEGE
プロシージャにかわるものです。
たとえば、Oracle GoldenGate管理ユーザーを作成するには、ユーザーの作成中にそのユーザーに適切なOGG_*
ロールを付与する必要があります。Oracle Database 23aiでDBMS_GOLDENGATE_AUTH
パッケージ内のGRANT_ADMIN_PRIVILEGE
プロシージャを引き続き使用する場合、権限は付与されません。かわりに、そのプロシージャ・コールが無効であることを示す警告メッセージが表示されます。
Oracle GoldenGate 23aiで導入されているユーザー・ロールを次に示します。
-
OGG_CAPTURE
-
OGG_CAPTURE
には、Extractプロセスの使用および管理に必要な権限があります。ExtractでDMLおよびDDLを取得するには、次の権限が必要です。
GRANT CONNECT, RESOURCE to ggadmin; GRANT OGG_CAPTURE to ggadmin;
Extractプロセスがルート・コンテナに登録されている場合は、次の追加ステップを実行する必要があります。ALTER USER c##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;
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データベースへの接続に必要なユーザー権限は、ユーザーのタイプによって異なります。
権限は、ソース・データベースおよびターゲット・データベースで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
を参照してください。
Oracle Data Vaultからキャプチャするための権限
Oracleデータベースで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’);