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 TABLEDROP TABLEALTER 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名の例として使用します。

次の表に、ソースおよびターゲットのOracleデータベースでOracle GoldenGateを使用するためのGoldenGate管理者ユーザーの重要な権限を示します:
権限 Extract Replicat全モード 目的

RESOURCE

はい

はい

オブジェクトの作成に必要

Oracle Database 12cR1以降では、RESOURCEのかわりに次の権限を付与します。

ALTER USER user QUOTA {size | UNLIMITED} ON tablespace;

CONNECT

はい

はい

共通ユーザーSYSTEMは、ルート・コンテナに接続します。この権限は、DBA ロールがユーザーに割り当てられていない場合に不可欠です。

Oracleマルチテナント・データベースの共通ユーザーに付与される権限の例を参照してください。

CREATE SESSION

はい

はい

データベースへの接続に必要です。

CREATE VIEW

はい

はい

ハートビート表ビューを追加するために必要です。

各オブジェクトに固有にする場合は、各オブジェクトの権限を個別に指定することもできます。このような権限を維持するために、特定のデータベース・ロールの作成を検討できます。

ALTER SYSTEM

はい

はい

ロギングの有効化などの管理変更を実行

ALTER USER

はい

はい

マルチテナント・アーキテクチャに必要であり、GGADMINは有効なOracle GoldenGate管理者スキーマである必要があります。

EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('REPUSER', CONTAINER=>'PDBEAST');

はい はい
  • 自律型データベース(ATPおよびADW)のExtractおよびReplicatには必須です。ルート・コンテナ(CDB$ROOT))のExtractには、ALLまたは特定のPDB (例: pdbeast)の値が必要になることがあります。

  • ExtractおよびReplicatユーザーの権限を付与します。「例: DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGEパッケージを使用した権限の付与」を参照してください

  • 仮想プライベート・データベースから取得する権限を付与します

  • リダクション済データを取得する権限を付与します

SYSユーザーとして、接続されたDV_GOLDENGATE_ADMINおよびDV_GOLDENGATE_REDO_ACCESS権限をExtractおよびReplicatユーザーに付与します。

はい

はい

Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。

レルムに適用する場合は、DBMS_MACADM.ADD_AUTH_TO_REALMの権限をReplicatに付与します。

NA はい

Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。

ターゲット表のINSERTUPDATEDELETE

NA

はい

レプリケートされたDMLをターゲット・オブジェクトに適用「Oracle DMLのオブジェクトと操作のサポートの詳細」を参照してください

GRANT INSERT ANY TO...
GRANT UPDATE ANY TO...
GRANT DELETE ANY TO...

NA

はい

すべての表をレプリケートする場合は、INSERTUPDATEDELETEをすべての表に付与するのではなく、これらの権限をReplicatユーザーに付与します。

DDLレプリケーションを実行する場合は、次の権限をDatabase Vault所有者として付与してください:

EXECUTE DBMS_MACADM.AUTHORIZE_DDL(‘GGADMIN USER', ‘SCHEMA FOR DDL’);
いいえ いいえ

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権限を使用します。
SELECT ANY DICTIONARY

はい

はい

ディクショナリ表で適切に機能するためにすべての権限を許可します。

例: Oracleデータベースの共通ユーザーに付与される権限

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’);