DBMS_MACADM
PL/SQLパッケージ・プロシージャおよびDVSYS.CONFIGURE_DV
スタンドアロン・プロシージャは、一般的なメンテナンス・タスクを実行します。
内容は次のとおりです。
DBMS_MACADM
PL/SQLパッケージの一般システム・メンテナンスのプロシージャは、ユーザーの認可またはOracle Database Vaultへの新しい言語の追加などのタスクを実行します。
表20-1に、これらのプロシージャを示します。
表20-1 DBMS_MACADMの一般システム・メンテナンス・プロシージャ
プロシージャ | 説明 |
---|---|
Oracle Database Vaultに新しい言語を追加します。 |
|
Oracle Database Vaultが有効な場合に、Oracle Data Pump操作を実行する権限をユーザーに付与します。 |
|
指定したスキーマに対してデータ定義言語(DDL)文を実行する認可をユーザーに付与します。 |
|
他のユーザー・アカウントをプロキシする認可をプロキシ・ユーザーに付与します。 |
|
Oracle Database Vaultが有効な場合に、データベース・ジョブをスケジュールする権限をユーザーに付与します。 |
|
Oracle Database Vaultが有効な場合に、表領域に対してOracle Data Pumpトランスポータブル表領域操作を実行するようにユーザーを認可します。 |
|
|
|
|
|
|
|
|
|
Oracle Database Vaultが有効な場合に、表領域に対してOracle Data Pumpトランスポータブル表領域操作を実行する認可を付与されたユーザーから認可を取り消します。 |
|
Oracle Database Vaultを無効にします。 |
|
ユーザーが |
|
|
|
Oracle Database Vault環境で |
|
Oracle Database Vaultを有効にします。 |
|
ユーザーが |
|
|
|
Oracle Database Vault環境で |
ADD_NLS_DATA
プロシージャは、Oracle Database Vaultに新しい言語を追加します。
構文
DBMS_MACADM.ADD_NLS_DATA( language IN VARCHAR );
パラメータ
表20-2 ADD_NLS_DATA
パラメータ | 説明 |
---|---|
|
次のいずれかの設定を入力します。(このパラメータでは大/小文字は区別されません。)
|
例
EXEC DBMS_MACADM.ADD_NLS_DATA('french');
AUTHORIZE_DATAPUMP_USER
プロシージャは、Oracle Database Vaultが有効な場合に、ユーザーがOracle Data Pump操作を実行することを認可します。
expdp
とimpdp
の両方のユーティリティに適用されます。
Oracle Database Vault環境でOracle Data Pumpを使用するために必要なその他の認可のレベルなど、使用方法に関するすべての情報については、「Database VaultにおけるOracle Data Pumpの通常操作をユーザーに認可」を参照してください。
構文
DBMS_MACADM.AUTHORIZE_DATAPUMP_USER( user_name IN VARCHAR2, schema_name IN VARCHAR2 DEFAULT NULL, table_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表20-3 AUTHORIZE_DATAPUMP_USER
パラメータ | 説明 |
---|---|
|
権限を付与するOracle Data Pumpユーザーの名前。 Oracle Data Pumpの使用権限( SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE LIKE '%FULL%' |
|
Oracle Data Pumpユーザーがエクスポートまたはインポートする必要のあるデータベース・スキーマ名。このパラメータを省略すると、データベース内のすべてのスキーマをエクスポートおよびインポートするグローバル権限がユーザーに付与されます。この場合、ユーザーに |
|
|
例
EXEC DBMS_MACADM.AUTHORIZE_DATAPUMP_USER('DP_MGR'); EXEC DBMS_MACADM.AUTHORIZE_DATAPUMP_USER('DP_MGR', 'HR'); EXEC DBMS_MACADM.AUTHORIZE_DATAPUMP_USER('DP_MGR', 'HR', 'EMPLOYEES');
AUTHORIZE_DDL
プロシージャは、指定したスキーマに対してデータ定義言語(DDL)文を実行する認可をユーザーに付与します。
この認可を付与されているユーザーの情報を検索するには、DVSYS.DBA_DV_DDL_AUTH
データ・ディクショナリ・ビューに問い合せます。
構文
DBMS_MACADM.AUTHORIZE_DDL( user_name IN VARCHAR2, schema_name IN VARCHAR2);
パラメータ
表20-4 AUTHORIZE_DDL
パラメータ | 説明 |
---|---|
|
DDL認可を付与するユーザーの名前。 |
|
ユーザーがDDL文を実行するデータベース・スキーマの名前。すべてのスキーマを指定するには |
例
次の例では、ユーザーpsmith
はすべてのスキーマでDDL文を実行できます。
EXEC DBMS_MACADM.AUTHORIZE_DDL('psmith', '%');
この例では、ユーザーpsmith
はHR
スキーマでのみDDL文を実行できます。
EXEC DBMS_MACADM.AUTHORIZE_DDL('psmith', 'HR');
AUTHORIZE_PROXY_USER
プロシージャは、プロキシ・ユーザーにデータベースへのアクセスが認可されている場合、他のユーザー・アカウントをプロキシする権限をプロキシ・ユーザーに付与します。
例えば、CREATE SESSION
権限は、データベースに関する有効な認可です。
この認可を付与されているユーザーの情報を検索するには、DVSYS.DBA_DV_PROXY_AUTH
ビューに問い合せます。
構文
DBMS_MACADM.AUTHORIZE_PROXY_USER( proxy_user IN VARCHAR2, user_name IN VARCHAR2);
パラメータ
表20-5 AUTHORIZE_PROXY_USER
パラメータ | 説明 |
---|---|
|
プロキシ・ユーザーの名前。 |
|
|
例
次の例では、プロキシ・ユーザーpreston
はすべてのユーザーをプロキシできます。
EXEC DBMS_MACADM.AUTHORIZE_PROXY_USER('preston', '%');
この例では、プロキシ・ユーザーpreston
はデータベース・ユーザーdkent
のみをプロキシできます。
EXEC DBMS_MACADM.AUTHORIZE_PROXY_USER('preston', 'dkent');
AUTHORIZE_SCHEDULER_USER
プロシージャは、Oracle Database Vaultが有効な場合に、データベース・ジョブをスケジュールする権限をユーザーに付与します。
この権限は、データベース・ジョブのスケジュール権限を持つすべてのユーザーに適用されます。この権限には、CREATE JOB
、CREATE ANY JOB
、CREATE EXTERNAL JOB
、EXECUTE ANY PROGRAM
、EXECUTE ANY CLASS
、MANAGE SCHEDULER
が含まれます。Oracle Database Vault環境でデータベース・ジョブをスケジュールするために必要な権限レベルなど、使用方法の詳細は、「Oracle Database VaultでのOracle Schedulerの使用」を参照してください。
構文
DBMS_MACADM.AUTHORIZE_SCHEDULER_USER( user_name IN VARCHAR2, schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表20-6 AUTHORIZE_SCHEDULER_USER
パラメータ | 説明 |
---|---|
|
権限を付与するユーザーの名前。 ジョブのスケジュール権限を持つユーザーのリストを検索するには、 |
|
ジョブをスケジュールするデータベース・スキーマの名前。このパラメータを省略すると、データベース内のすべてのスキーマをスケジュールするグローバル権限がユーザーに付与されます。 |
例
次の例では、ユーザーJOB_MGR
にすべてのスキーマでジョブを実行する権限を付与します。
EXEC DBMS_MACADM.AUTHORIZE_SCHEDULER_USER('JOB_MGR');
次の例では、ユーザーJOB_MGR
にHR
スキーマでのみジョブを実行する権限を付与します。
EXEC DBMS_MACADM.AUTHORIZE_SCHEDULER_USER('JOB_MGR', 'HR');
AUTHORIZE_TTS_USER
プロシージャは、Oracle Database Vaultが有効な場合に、表領域に対してOracle Data Pumpトランスポータブル表領域操作を実行するようにユーザーを認可します。
EXPDP
とIMPDP
の両方のユーティリティに適用されます。
Oracle Database Vault環境でOracle Data Pumpを使用してトランスポータブル操作を実行するために必要なその他の認可レベルなど、使用方法に関するすべての情報は、「Database VaultにおけるOracle Data Pumpの通常操作をユーザーに認可」に記載されています。
構文
DBMS_MACADM.AUTHORIZE_TTS_USER( uname IN VARCHAR2, tsname IN VARCHAR2);
パラメータ
表20-7 AUTHORIZE_TTS_USER
パラメータ | 説明 |
---|---|
|
Oracle Data Pumpトランスポータブル表領域操作を実行するために認可するユーザーの名前。 ユーザーとその現在の権限のリストを検索するには、 |
|
表領域のリストを検索するには、 |
例
EXEC DBMS_MACADM.AUTHORIZE_TTS_USER('PSMITH', 'HR_TS');
UNAUTHORIZE_DATAPUMP_USER
プロシージャは、AUTHORIZE_DATAPUMP_USER
プロシージャによって付与された権限を取り消します。
このプロシージャを実行する場合は、同等のAUTHORIZE_DATAPUMP_USER
プロシージャと設定が完全に一致することを確認してください。
たとえば、次の2つのプロシージャはパラメータが一致するため、機能します。
EXEC DBMS_MACADM.AUTHORIZE_DATAPUMP_USER('DP_MGR'); EXEC DBMS_MACADM.UNAUTHORIZE_DATAPUMP_USER('DP_MGR');
しかし、次のプロシージャはパラメータが一致しないため、UNAUTHORIZE_DATAPUMP_USER
プロシージャは機能しません。
EXEC DBMS_MACADM.AUTHORIZE_DATAPUMP_USER('JSMITH'); EXEC DBMS_MACADM.UNAUTHORIZE_DATAPUMP_USER('JSMITH', 'HR');
構文
DBMS_MACADM.UNAUTHORIZE_DATAPUMP_USER( user_name IN VARCHAR2, schema_name IN VARCHAR2 DEFAULT NULL, table_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表20-8 UNAUTHORIZE_DATAPUMP_USER
パラメータ | 説明 |
---|---|
|
権限を取り消すOracle Data Pumpユーザーの名前。
SELECT * FROM DVSYS.DBA_DV_DATAPUMP_AUTH; |
|
Oracle Data Pumpユーザーがエクスポートまたはインポート権限を付与されているデータベース・スキーマ名。 |
|
|
例
EXEC DBMS_MACADM.UNAUTHORIZE_DATAPUMP_USER('JSMITH'); EXEC DBMS_MACADM.UNAUTHORIZE_DATAPUMP_USER('JSMITH', 'HR'); EXEC DBMS_MACADM.UNAUTHORIZE_DATAPUMP_USER('JSMITH', 'HR', 'SALARY');
UNAUTHORIZE_DDL
プロシージャは、DBMS_MACDM.AUTHORIZE_DDL
プロシージャを使用してDDL文を実行する認可を付与されたユーザーから認可を取り消します。
この認可を付与されているユーザーの情報を検索するには、DVSYS.DBA_DV_DDL_AUTH
データ・ディクショナリ・ビューに問い合せます。
構文
DBMS_MACADM.UNAUTHORIZE_DDL( user_name IN VARCHAR2, schema_name IN VARCHAR2);
パラメータ
表20-9 UNAUTHORIZE_DDL
パラメータ | 説明 |
---|---|
|
DDL認可を取り消すユーザーの名前。 |
|
ユーザーがDDL文を実行するデータベース・スキーマの名前。すべてのスキーマを指定するには |
例
次の例では、すべてのスキーマについて、DDL文実行の認可をpsmith
ユーザーから取り消します。
EXEC DBMS_MACADM.UNAUTHORIZE_DDL('psmith', '%');
この例では、HR
スキーマについてのみ、DDL文実行の認可をpsmith
ユーザーから取り消します。
EXEC DBMS_MACADM.UNAUTHORIZE_DDL('psmith', 'HR');
UNAUTHORIZE_PROXY_USER
プロシージャは、DBMS_MACADM.AUTHORIZE_PROXY_USER
プロシージャによってプロキシの認可を付与されたユーザーから認可を取り消します。
構文
DBMS_MACADM.UNAUTHORIZE_PROXY_USER( proxy_user IN VARCHAR2, user_name IN VARCHAR2);
パラメータ
表20-10 UNAUTHORIZE_PROXY_USER
パラメータ | 説明 |
---|---|
|
プロキシ・ユーザーの名前。 |
|
|
例
次の例では、すべてのユーザーをプロキシするプロキシの認可をユーザーpreston
から取り消します。
DBMS_MACADM.UNAUTHORIZE_PROXY_USER('preston', '%');
この例では、データベース・ユーザーpsmith
のみをプロキシするプロキシ認可をユーザーpreston
から取り消します。
EXEC DBMS_MACADM.UNAUTHORIZE_PROXY_USER('preston', 'psmith');
UNAUTHORIZE_SCHEDULER_USER
プロシージャは、AUTHORIZE_SCHEDULER_USER
プロシージャによって付与された権限を取り消します。
このプロシージャを実行する場合は、同等のAUTHORIZE_SCHEDULER_USER
プロシージャと設定が完全に一致することを確認してください。たとえば、次の2つのプロシージャはパラメータが一致するため、機能します。
EXEC DBMS_MACADM.AUTHORIZE_SCHEDULER_USER('JOB_MGR'); EXEC DBMS_MACADM.UNAUTHORIZE_SCHEDULER_USER('JOB_MGR');
しかし、次のプロシージャはパラメータが一致しないため、UNAUTHORIZE_SCHEDULER_USER
プロシージャは機能しません。
EXEC DBMS_MACADM.AUTHORIZE_SCHEDULER_USER('JOB_MGR'); EXEC DBMS_MACADM.UNAUTHORIZE_SCHEDULER_USER('JOB_MGR', 'HR');
構文
DBMS_MACADM.UNAUTHORIZE_SCHEDULER_USER user_name IN VARCHAR2, schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表20-11 UNAUTHORIZE_SCHEDULER_USER
パラメータ | 説明 |
---|---|
|
権限を取り消す、ジョブ・スケジュール・ユーザーの名前。
SELECT * FROM DVSYS.DBA_DV_JOB_AUTH; |
|
ユーザーにジョブ・スケジュール権限が付与されているデータベース・スキーマの名前。 |
例
EXEC DBMS_MACADM.UNAUTHORIZE_SCHEDULER_USER('JOB_MGR'); EXEC DBMS_MACADM.UNAUTHORIZE_SCHEDULER_USER('JOB_MGR', 'HR');
UNAUTHORIZE_TTS_USER
プロシージャは、Oracle Data Pumpトランスポータブル表領域の操作を実行する権限を与えられた板認可ユーザーのリストから、指定されたユーザーを削除します。
構文
DBMS_MACADM.UNAUTHORIZE_TTS_USER uname IN VARCHAR2, tsname IN VARCHAR2);
パラメータ
表20-12 UNAUTHORIZE_TTS_USER
パラメータ | 説明 |
---|---|
|
Oracle Data Pumpトランスポータブル表領域操作を実行する認可対象から削除するユーザーの名前。 ユーザーとその現在の権限のリストを検索するには、 |
|
トランスポータブル表領域操作で使用される表領域の名前。 表領域のリストを検索するには、 |
例
EXEC DBMS_MACADM.UNAUTHORIZE_TTS_USER('PSMITH', 'HR_TS');
DISABLE_DV
プロシージャは、Oracle Database Vaultを無効にします。
このプロシージャの実行後、データベースを再起動する必要があります。
構文
DBMS_MACADM.DISABLE_DV;
パラメータ
ありません
例
EXEC DBMS_MACADM.DISABLE_DV;
関連項目:
Database Vaultが有効かどうかを把握する方法など、Database Vaultの有効化と無効化の詳細は、「Oracle Database Vaultの無効化と有効化」を参照してください
DISABLE_DV_DICTIONARY_ACCTS
プロシージャでは、どのユーザーもDVSYS
またはDVF
スキーマ・ユーザーとしてデータベースにログインできません。
これらの2つのアカウントはデフォルトでロックされます。DV_OWNER
ロールを付与されているユーザーのみがこのプロシージャを実行できます。ユーザーがDVSYS
およびDVF
にログインできるかどうかのステータスを確認するには、DVSYS.DBA_DV_DICTIONARY_ACCTS
データ・ディクショナリ・ビューに問い合せます。セキュリティをさらに強化するには、このプロシージャを実行して、DVSYS
およびDVF
スキーマの保護を改善します。無効化はすぐに行われるため、このプロシージャの実行後にデータベースを再起動する必要はありません。
構文
DBMS_MACADM.DISABLE_DV_DICTIONARY_ACCTS;
パラメータ
ありません
例
EXEC DBMS_MACADM.DISABLE_DV_DICTIONARY_ACCTS;
DISABLE_DV_PATCH_ADMIN_AUDIT
プロシージャは、DV_PATCH_ADMIN
ロールを付与されたユーザーによるアクションのレルム、コマンド・ルールおよびルール・セットの監査を無効にします。
このプロシージャは、失敗したアクションではなく、このユーザーの成功したアクションを無効にします。DV_PATCH_ADMIN
ユーザーでデータベース・パッチ操作が完了した後、このプロシージャを実行する必要があります。監査が有効になっているかどうかを判断するには、DBA_DV_PATCH_AUDIT
データ・ディクショナリ・ビューに問い合せます。
構文
DBMS_MACADM.DISABLE_DV_PATCH_ADMIN_AUDIT;
パラメータ
ありません
例
EXEC DBMS_MACADM.DISABLE_DV_PATCH_ADMIN_AUDIT;
DISABLE_ORADEBUG
プロシージャは、Oracle Database Vault環境でORADEBUG
ユーティリティの使用を無効にします。
無効化はすぐに行われるため、このプロシージャの実行後にデータベースを再起動する必要はありません。ORADEBUG
ユーティリティをDatabase Vaultで利用できるかどうかのステータスを確認するには、DVYS.DBA_DV_ORADEBUG
データ・ディクショナリ・ビューに問い合せます。
構文
DBMS_MACADM.DISABLE_ORADEBUG;
パラメータ
ありません
例
EXEC DBMS_MACADM.DISABLE_ORADEBUG;
ENABLE_DV
プロシージャは、Oracle Database VaultおよびOracle Label Securityを有効にします。
このプロシージャの実行後、データベースを再起動する必要があります。
構文
DBMS_MACADM.ENABLE_DV;
パラメータ
ありません
例
EXEC DBMS_MACADM.ENABLE_DV;
関連項目:
Database Vaultが有効かどうかを把握する方法など、Database Vaultの有効化と無効化の詳細は、「Oracle Database Vaultの無効化と有効化」 を参照してください
ENABLE_DV_PATCH_ADMIN_AUDIT
プロシージャは、DV_PATCH_ADMIN
ロールを持つユーザーによるアクションのレルム、コマンド・ルールおよびルール・セットの監査を有効にします。
このプロシージャはパッチのアップグレード時にこれらのユーザーのアクションを監査するように設計されています。この監査が有効かどうかを確認するには、DVSYS.DBA_DV_PATCH_AUDIT
データ・ディクショナリ・ビューに問い合せます。
構文
DBMS_MACADM.ENABLE_DV_PATCH_ADMIN_AUDIT;
パラメータ
ありません
例
EXEC DBMS_MACADM.ENABLE_DV_PATCH_ADMIN_AUDIT;
ENABLE_DV_DICTIONARY_ACCTS
プロシージャにより、ユーザーはDVSYS
またはDVF
ユーザーとしてデータベースにログインできます。
DVSYS
アカウントとDVF
アカウントは、デフォルトでロックされています。
DV_OWNER
ロールを付与されているユーザーのみがこのプロシージャを実行できます。ユーザーがDVSYS
およびDVF
にログインできるかどうかのステータスを確認するには、DVSYS.DBA_DV_DICTIONARY_ACCTS
データ・ディクショナリ・ビューに問い合せます。セキュリティをさらに強化するには、DVSYS
およびDVF
スキーマの保護を改善する必要がある場合にこのプロシージャを実行するのみです。有効化はすぐに行われるため、このプロシージャの実行後にデータベースを再起動する必要はありません。
構文
DBMS_MACADM.ENABLE_DV_DICTIONARY_ACCTS;
パラメータ
ありません
例
EXEC DBMS_MACADM.ENABLE_DV_DICTIONARY_ACCTS;
ENABLE_ORADEBUG
プロシージャは、Oracle Database Vault環境でORADEBUG
ユーティリティの使用を有効にします。
有効化はすぐに行われるため、このプロシージャの実行後にデータベースを再起動する必要はありません。ORADEBUG
ユーティリティをDatabase Vaultで利用できるかどうかのステータスを確認するには、DVYS.DBA_DV_ORADEBUG
データ・ディクショナリ・ビューに問い合せます。
構文
DBMS_MACADM.ENABLE_ORADEBUG;
パラメータ
ありません
例
EXEC DBMS_MACADM.ENABLE_ORADEBUG;
DVSYS.CONFIGURE_DV
プロシージャは、最初の2つのOracle Databaseユーザー・アカウントを構成します。このアカウントには、DV_OWNER
ロールとDV_ACCTMGR
ロールがそれぞれ付与されます。
この構成のステータスは、DVSYS.DBA_DV_STATUS
データ・ディクショナリ・ビューを問い合せることで確認できます。DVSYS.CONFIGURE_DV
プロシージャを実行する前に、2つのユーザー・アカウントを作成し、そのアカウントにCREATE SESSION
権限を付与します。アカウントはローカルまたは共通のいずれかになります。共通のユーザー・アカウントを作成する場合、これらのユーザーに付与されるDatabase Vaultロールは、現在のプラガブル・データベース(PDB)にのみ適用されます。CONFIGURE_DV
プロシージャに対してこれらのユーザー・アカウントを参照します。
Oracle Database VaultをOracle Databaseに登録する準備ができたら、DVSYS.CONFIGURE_DV
プロシージャを一度実行するのみで構いません。このプロシージャの実行後、utlrp.sql
スクリプトとDBMS_MACADM.ENABLE_DV
を順に実行して、登録プロセスを完了する必要があります。セキュリティを強化するために、ここで作成する2つのアカウントをバックアップ・アカウントとして使用し、毎日使用するアカウントを追加で作成することをお薦めします。詳細は、「バックアップOracle Database Vaultアカウント」を参照してください。
DVSYS.CONFIGURE_DV
プロシージャを実行すると、DVSYS
スキーマで表やパッケージの欠落などの問題が確認されます。問題が見つかった場合、ORA-47500「Database Vaultを構成できません。」
エラーが生じます。このエラーが生じた場合、Oracle Database Vaultを削除して再インストールします。詳細は、次の各項を参照してください。
同時に、DVSYS.CONFIGURE_DV
プロシージャ、DBMS_MACADM.ENABLE_DV
プロシージャ、およびutlrp.sql
スクリプトは、Oracle Database Configuration Assistant(DBCA)を使用してOracle Database VaultをOracle Databaseに登録する場合の代替となるコマンドラインになるように設計されています。
DVSYS.CONFIGURE_DV
プロシージャは、ユーザーSYS
として実行しなければなりません。使用するプロセスについては、「Oracle DatabaseへのOracle Database Vaultの登録」を参照してください。
構文
DVSYS.CONFIGURE_DV dvowner_uname IN VARCHAR2, dvacctmgr_uname IN VARCHAR2;
パラメータ
表20-13 CONFIGURE_DV
パラメータ | 説明 |
---|---|
|
Database Vault所有者になるユーザーの名前。このユーザーには |
|
Database Vaultアカウント・マネージャになるユーザーの名前。このユーザーには |
例
CREATE USER dbv_owner IDENTIFIED BY password CONTAINER = CURRENT; CREATE USER dbv_acctmgr IDENTIFIED BY password CONTAINER = CURRENT; GRANT CREATE SESSION TO dbv_owner, dbv_acctmgr; BEGIN DVSYS.CONFIGURE_DV ( dvowner_uname => 'dbv_owner', dvacctmgr_uname => 'dbv_acctmgr'; END; /