8 アプリケーション・スキーマのデータ・ポンプ・エクスポートの実行
Oracle Database Vaultのレルムまたはコマンド・ルールによって保護されているデータをエクスポートする場合は、ユーザーにタスクの実行を認可する必要があります。Database Vaultは必須アクセス制御ポリシーを適用しているため、Oracle Data Pumpエクスポートを実行するシステム権限のみでは不十分です。
ユーザーがOracle Data Pumpのフル・データベース・エクスポート、別のスキーマへのインポートまたはトランスポータブル表領域操作を実行する場合は、追加の認可および構成が必要です。これらのシナリオの詳細は、『Oracle Database Vault管理者ガイド』のOracle Database Vault環境でのDBA操作を参照してください。
このクイック・スタート・ガイドでは、次の2つのタイプのOracle Data Pumpのエクスポートに焦点を当てます:
- フルスキーマ・エクスポート
- 表のみのエクスポート
スキーマまたは表をスキーマ所有者としてエクスポートしない場合は、エクスポートを実行するための適切なOracle Databaseシステム・ロールが必要です。この2つのエクスポート操作を実行する専用データベース・ユーザーを作成します。
C##JSMITH
として、DP_MGR
という名前のPDBデータベース・ユーザーを作成します:C##JSMITH
としてプラガブル・データベースに接続します:connect c##jsmith@pdb_name
DP_MGR
という名前のユーザーを作成します:CREATE USER DP_MGR IDENTIFIED BY password; GRANT CONNECT, EXP_FULL_DATABASE TO DP_MGR; GRANT UNLIMITED TABLESPACE TO DP_MGR;
DP_MGR
としてOracle Data Pumpエクスポートの実行を試みます:expdp dp_mgr@pdb_name SCHEMAS=HR directory=DATA_PUMP_DIR REUSE_DUMPFILES=y dumpfile=test1.dmp logfile=test1.log
エクスポートしようとしている表データ・オブジェクトごとに、次のエラーが発生します。これは、オブジェクトがDatabase Vaultレルム
Protect HR tables
によって保護されているためです。ORA-31693: Table data object "HR"."COUNTRIES" failed to load/unload and is being skipped due to error: ORA-47415: Insufficient Oracle Database Vault authorization for DATAPUMP.
- データ・ポンプ・エクスポートまたはインポートを実行するシステム権限を持つデータベース・ユーザーを特定します:
C##JSMITH
としてプラガブル・データベースに接続します:connect c##jsmith@pdb_name
- 次のコマンドを実行します。
SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE IN ('EXP_FULL_DATABASE','DATAPUMP_EXP_FULL_DATABASE') ORDER BY 1,2;
DP_MGR
がデータベース権限に基づいて単一の表のみをエクスポートすることを認可します。プラガブル・データベースでOracle Database Vaultが有効になっている場合は、ユーザーに権限の使用を認可する必要があります。システム権限は、データ・ポンプ・エクスポートを実行するのに十分ではありません。
EXEC DBMS_MACADM.AUTHORIZE_DATAPUMP_USER('DP_MGR', 'HR', 'EMPLOYEES');
- Oracle Database Vaultのデータ・ポンプの認可を確認します:
SELECT * FROM DBA_DV_DATAPUMP_AUTH;
DP_MGR
によるTABLE
エクスポートのみを認可する必要があります。GRANTEE SCHEMA OBJECT TYPE ACTION __________ _________ ____________ ________ _________ DP_MGR HR EMPLOYEES TABLE %
- データ・ポンプ・エクスポート・コマンドを実行します:
expdp dp_mgr@pdb_name SCHEMAS=HR directory=DATA_PUMP_DIR REUSE_DUMPFILES=y dumpfile=test1.dmp logfile=test1.log
HR.EMPLOYEES
表がエクスポートされていることがわかりますが、他のすべてのスキーマ表およびビューに対してORA-31693
エラーが発生します。ORA-31693: Table data object "HR"."COUNTRIES" failed to load/unload and is being skipped due to error: ORA-47415: Insufficient Oracle Database Vault authorization for DATAPUMP. . . exported "HR"."EMPLOYEES" 17.32 KB 107 rows
- Database Vault違反なしでデータ・ポンプ・エクスポートを実行するには、エクスポート用に
HR.EMPLOYEES
表を指定する必要があります:expdp dp_mgr@pdb_name TABLES=HR.EMPLOYEES directory=DATA_PUMP_DIR REUSE_DUMPFILES=y dumpfile=test1.dmp logfile=test1.log
- データベース権限に基づいてスキーマをエクスポートすることを
DP_MGR
に認可するには、表固有の認可を取り消し、スキーマ・エクスポートを認可します:EXEC DBMS_MACADM.UNAUTHORIZE_DATAPUMP_USER('DP_MGR', 'HR', 'EMPLOYEES'); EXEC DBMS_MACADM.AUTHORIZE_DATAPUMP_USER('DP_MGR', 'HR');
- Oracle Database Vaultのデータ・ポンプの認可を確認します。
DP_MGR
によるHRスキーマ・エクスポートのみを認可する必要があります:SELECT * FROM DBA_DV_DATAPUMP_AUTH;
GRANTEE SCHEMA OBJECT TYPE ACTION __________ _________ ____________ ________ _________ DP_MGR HR % % %
- データベース権限に基づいてスキーマをエクスポートすることを
DP_MGR
に認可し、次のコマンドを実行します:EXEC DBMS_MACADM.UNAUTHORIZE_DATAPUMP_USER('DP_MGR', 'HR'); EXEC DBMS_MACADM.AUTHORIZE_DATAPUMP_USER('DP_MGR');
ノート:
これには、完全なOracle Data Pumpエクスポートの実行が含まれていません。完全なエクスポートを実行するには、DP_MGR
にDV_OWNER
ロールが必要です。完全なデータ・ポンプ・エクスポートよりも具体的にすることをお薦めします。データベース全体ではなく、要件に基づいて特定のスキーマまたはオブジェクトをエクスポートします。 DP_MGR
のOracle Database Vaultデータ・ポンプの認可を確認します:SELECT * FROM DBA_DV_DATAPUMP_AUTH;
GRANTEE SCHEMA OBJECT TYPE ACTION __________ _________ ____________ ________ _________ DP_MGR % % % %
これで、DP_MGR
ユーザーは、次の例のようにデータ・ポンプ・エクスポートを実行できます:expdp dp_mgr@pdb_name SCHEMAS=HR,SCOTT,SH directory=DATA_PUMP_DIR REUSE_DUMPFILES=y dumpfile=test1.dmp logfile=test1.log
DP_MGR
がデータベース権限を使用する認可を取り消すには、次のコマンドを実行します:exec dbms_macadm.unauthorize_datapump_user('DP_MGR');
データ・ポンプの認可を確認する問合せでは、行が返されません:SELECT * FROM DBA_DV_DATAPUMP_AUTH;