1. Database Vaultの有効化
このページでは、Database Vaultの有効化、管理者ユーザー(DV_OWNER, DV_ACCTMGR)の作成、CDB/PDBでの構成・有効化手順を示します。
- サンプルスキーマが作成されていること
- SALES_APPユーザーが作成されていること
主な作業内容
Section titled “主な作業内容”- Database Vault 構成前確認
- 管理者ユーザーの作成
- Database Vaultの構成
- 有効化
- PDBでの構成・有効化
Database Vault構成前の確認
Section titled “Database Vault構成前の確認”Oracle Database Vault を有効化する前に、Database Vault および Oracle Label Security (以下OLS) の構築スクリプトを実行する必要があります。
注意 Database Vaultは内部的にOLSのライブラリを使用しているため、構成時にOLSも自動で有効化されますが、OLSを別途使用しない限り、OLSのライセンスは不要です。
また、マルチテナントでの使用の場合、CDBでDatabase Vaultを構成および有効化した後で、PDBでも同様に有効化操作を行う必要があります。
CDB$ROOTに接続し、Database Vaultの構成および有効化状況を確認します。
SQL> SELECT * FROM CDB_DV_STATUS;
NAME STATUS CON_ID______________________ _________________ _________DV_CONFIGURE_STATUS FALSE 1DV_ENABLE_STATUS FALSE 1DV_APP_PROTECTION NOT CONFIGURED 1DV_CONFIGURE_STATUS FALSE 3DV_ENABLE_STATUS FALSE 3DV_APP_PROTECTION NOT CONFIGURED 3
6 rows selected.【CDB$ROOT】Database Vault管理者ユーザーの作成(C##DVOWNER、C##DVACCTMGR)
Section titled “【CDB$ROOT】Database Vault管理者ユーザーの作成(C##DVOWNER、C##DVACCTMGR)”Database Vaultを有効化する際、管理者ユーザーとして Database Vault所有者 (DV_OWNERロール) と アカウント管理者 (DV_ACCTMGRロール) の2つのアカウントを指定する必要があります。 ここでは以下のユーザーを用いるため、2つのユーザーをそれぞれ作成します。今後の手順でこの二人のユーザーはよく使いますので、各セッションを別端末などで用意しておくと今後の作業がスムーズに進めやすいかと思います。
C##DVOWNERユーザー: Database Vaultのロールや構成を管理します。C##DVACCTMGRユーザー: データベースのユーザーアカウントを管理します。
CDBルートで DV_OWNER ロールと DV_ACCTMGR ロールを付与された共通ユーザーは、PDBでも同じロールを持つことができるように構成できます。
DV_ACCTMGR ロールは CDBルートの共通ユーザーに対して共通ロールとして付与されます。
一方、DV_OWNER ロールは、Database Vault の構成時にローカルユーザーに付与することも、CDB全体で有効な共通ユーザーに共通ロールとして付与することもできます。
ただし、DV_OWNER を共通ユーザーにローカルロールとして付与した場合、そのユーザーは他の PDB では DV_OWNER ロールを使用できなくなるため注意が必要です。
今回の構成では、CDBルート・PDB いずれにおいても、共通ユーザー(上記2つのユーザー)を DV 管理者として使用します。 このため、PDBでの有効化時にも共通ユーザーを再利用します。
共通ユーザーを作成する前に、共通ユーザーの接頭辞(通常は C## )が正しいかどうか確認しておきます。
-- CDBSQL> select name, value from v$parameter where name = 'common_user_prefix';
NAME VALUE_____________________ ________common_user_prefix C##以下を実行してユーザーをそれぞれ作成しつつ、権限を付与します。
grant create session, set container to C##DVOWNER identified by Welcome1#Welcome1# container = all;grant create session, set container to C##DVACCTMGR identified by Welcome1#Welcome1# container = all;【CDB$ROOT】Database Vaultの構成
Section titled “【CDB$ROOT】Database Vaultの構成”作成した2つのユーザーを指定して、Database Vaultを構成します。
-- CDBBEGIN CONFIGURE_DV ( dvowner_uname => 'C##DVOWNER', dvacctmgr_uname => 'C##DVACCTMGR', force_local_dvowner => FALSE );END;/force_local_dvowner をFALSEに設定すると、共通ユーザーはこのCDBルートに関連付けられているPDBの DV_OWNER 権限を持つことができます。 TRUEに設定すると、共通 DV_OWNER ユーザーはCDBルートにのみ DV_OWNER ロール権限を持つように制限されます。
CDBの構成ステータスが TRUE になっていることを確認します。
SQL> SELECT * FROM CDB_DV_STATUS;
NAME STATUS CON_ID______________________ _________________ _________DV_CONFIGURE_STATUS TRUE 1DV_ENABLE_STATUS FALSE 1DV_APP_PROTECTION NOT CONFIGURED 1DV_CONFIGURE_STATUS FALSE 3DV_ENABLE_STATUS FALSE 3DV_APP_PROTECTION NOT CONFIGURED 3
6 rows selected.utlrp.sql スクリプトを実行し、無効化状態となっているオブジェクトをコンパイルします。
SQL> @?/rdbms/admin/utlrp.sql
Session altered.
TIMESTAMP____________________________________________________________COMP_TIMESTAMP UTLRP_BGN 2026-02-10 14:33:25【CDB$ROOT】Database Vaultを有効化する
Section titled “【CDB$ROOT】Database Vaultを有効化する”Database Vaultをマルチテナント環境(CDB)で有効化する際には、大きく分けて「通常(非厳密)モード」と「厳密モード」の2つの動作モードを選択できます。
これらのモードは、CDB全体でDatabase Vaultが有効化されている際に、PDBごとの Database Vaultの有効化状態がどのように扱われるかを制御します。
- 通常モード
- CDBでDatabase Vaultが有効化されている場合でも、PDB単位で Database Vault が有効化されているかどうかにかかわらず、そのPDBは通常通り機能を継続します。 つまり、CDBでは Database Vault が有効であっても、PDBレベルで無効な状態のままでもPDBは使い続けることができます。
- 厳密モード
- 厳密モードでは、CDBがDatabase Vault有効状態になった時点で、PDBを読み書きモードでオープンするにはそのPDBでもDatabase Vaultが構成・有効化されている必要があります。 簡単に言えば、「CDBでDatabase Vaultが有効なら、すべてのPDBもDatabase Vaultを有効化していないと開けない」という制限が課されます。
今回はPDBだけで Database Vault を使用していきますので、「通常モード」で有効化していきます。
先ほど作成し、DV管理者として指定した C##DVOWNER ユーザーでCDBに接続します。
-- CDB[oracle@db-tut ~]$ sql C##DVOWNER/Welcome1#Welcome1#
SQLcl: Release 25.4 Production on Tue Feb 10 14:35:27 2026
Copyright (c) 1982, 2026, Oracle. All rights reserved.
Last Successful login time: Tue Feb 10 2026 14:35:28 +00:00
Connected to:Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for FreeVersion 23.26.1.0.0
SQL> show user con_nameUSER is "C##DVOWNER"CON_NAME------------------------------CDB$ROOT通常モードで有効化します。
SQL> EXEC DBMS_MACADM.ENABLE_DV;CDB_DV_STATUSを確認し、有効化されていることを確認します。
SQL> SELECT * FROM CDB_DV_STATUS;
NAME STATUS CON_ID______________________ _________________ _________DV_CONFIGURE_STATUS TRUE 1DV_ENABLE_STATUS TRUE 1DV_APP_PROTECTION NOT CONFIGURED 1SYSユーザーで再び接続し、Database Vaultの設定を完全に反映させるためCDBを再起動します。
SQL> conn / as sysdbaConnected.SQL> show user con_nameUSER is "SYS"CON_NAME------------------------------CDB$ROOT
SQL> shutdown immediateSQL> startup
-- PDBがオープンされていることを確認SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED_________ ___________ _____________ _____________ 2 PDB$SEED READ ONLY NO 3 FREEPDB1 READ WRITE NO
-- 再起動後、Database VaultとOLSが有効化されていることを確認SQL> SELECT parameter, VALUE FROM V$OPTION WHERE PARAMETER IN ('Oracle Database Vault','Oracle Label Security');
PARAMETER VALUE________________________ ________Oracle Label Security TRUEOracle Database Vault TRUE【PDB】Database Vaultの構成と有効化
Section titled “【PDB】Database Vaultの構成と有効化”FREEPDB1に接続し、改めてPDBのオプションの状況を確認します。
SQL> alter session set container=freepdb1;
Session altered.
SQL> SELECT parameter, VALUE FROM V$OPTION WHERE PARAMETER IN ('Oracle Database Vault','Oracle Label Security');
PARAMETER VALUE________________________ ________Oracle Label Security FALSEOracle Database Vault FALSE
-- PDBのdatabase Vaultのステータスを確認します。SQL> SELECT * FROM DBA_DV_STATUS;
NAME STATUS______________________ _________________DV_CONFIGURE_STATUS FALSEDV_ENABLE_STATUS FALSEDV_APP_PROTECTION NOT CONFIGUREDFREEPDB1 にSYSユーザーで接続し、Database Vaultを構成します。
-- PDBBEGIN CONFIGURE_DV ( dvowner_uname => 'C##DVOWNER', dvacctmgr_uname => 'C##DVACCTMGR' );END;/-- 構成ステータスがTRUEになっていることを確認SQL> SELECT * FROM DBA_DV_STATUS;
NAME STATUS______________________ _________________DV_CONFIGURE_STATUS TRUEDV_ENABLE_STATUS FALSEDV_APP_PROTECTION NOT CONFIGUREDutlrp.sql スクリプトを実行し、無効化状態となっているオブジェクトをコンパイルします。
-- PDBSQL> @?/rdbms/admin/utlrp.sql
Session altered.
TIMESTAMP____________________________________________________________COMP_TIMESTAMP UTLRP_BGN 2026-02-10 14:41:44問題なく、実行が完了することを確認します。 先ほど構成した Vault所有者ユーザーとして、PDBに接続します。
SQL> conn c##dvowner/Welcome1#Welcome1#@localhost:1521/freepdb1;Connected.SQL> show user con_nameUSER is "C##DVOWNER"CON_NAME------------------------------FREEPDB1
-- Database Vaultを有効化SQL> EXEC DBMS_MACADM.ENABLE_DV;CDBにSYSユーザーで接続し、PDBを再起動します。
SQL> show user con_nameUSER is "SYS"CON_NAME------------------------------CDB$ROOT
SQL> alter pluggable database freepdb1 close immediate;SQL> alter pluggable database freepdb1 open;再びPDBに接続し、Database VaultおよびOLSが有効化されたことを確認します
-- PDBSQL> alter session set container=freepdb1;SQL> SELECT * FROM DBA_DV_STATUS;
NAME STATUS______________________ _________________DV_CONFIGURE_STATUS TRUEDV_ENABLE_STATUS TRUEDV_APP_PROTECTION NOT CONFIGURED
SQL> SELECT * FROM DBA_OLS_STATUS;
NAME STATUS DESCRIPTION_______________________ _________ __________________________________OLS_CONFIGURE_STATUS TRUE Determines if OLS is configuredOLS_ENABLE_STATUS TRUE Determines if OLS is enabledDatabase Vault の事前設定はこちらで完了です。 次の手順では、レルムの作成やオブジェクトに対する認可を行っていきます。