oracle10g database vault安装成功后可以使用vault管理员账号创建域(realm),添加用户对象到域等操作。但是查看域相关的数据字典却非常麻烦。
比如查看DBA_DV_REALM, DBA_DV_REALM_AUTH, DBA_DV_OBJECT. 只有使用dvsys用户才能查看这些数据字典,而dvsys用户又是被锁定状态,即使用database vault owner用户或者sys用户都无法将其解锁。 我使用的办法非常麻烦,但是可行。首先使用一系列的操作将database vault禁用,使用sys用户为dvsys解锁。然后再启用database vault。 这样就可以激活dvsys用户来查看上述的各个数据字典。
本篇博客涉及到禁用database vault的操作,但不是卸载database vault。 10.2.4.0版本并没有提供卸载工具或脚本,手工卸载还是比较麻烦的。
下面来看看我的具体操作
(1) dvsys用户被锁定,无法使用
SYS@dv > conn dvsys/dv_12345
ERROR:
ORA-28000: the account is locked
Warning: You are no longer connected to ORACLE.
@ > conn dvowner/dv_12345
Connected.
(2) 使用database vault管理员账号无权限解锁dvsys
DVOWNER@dv > alter user dvsys account unlock;
alter user dvsys account unlock
*
ERROR at line 1:
ORA-01031: insufficient privileges
(3) 使用sys用户无权限解锁dvsys
DVOWNER@dv > conn / as sysdba
Connected.
SYS@dv > alter user dvsys account unlock;
alter user dvsys account unlock
*
ERROR at line 1:
ORA-01031: insufficient privileges
(4) 禁用database vault
$ cd $ORACLE_HOME/rdbms/lib
$ make -f
ins_rdbms.mk
dv_off
$ cd $ORACLE_HOME/bin
$ relink all
$ sqlplus / as sysdba
SYS@dv > startup
$ dvca -action disable -service dv -sys_passwd oracle -owner_account dvowner -owner_passwd dv_12345 -nodecrypt
(5) 验证database vault禁用效果
$ sqlplus / as sysdba
SYS@dv > select * from v$option where parameter='Oracle Database Vault';
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
Oracle Database Vault
FALSE
(6) 使用sys解锁dvsys
SYS@dv > alter user dvsys account unlock;
(7) 使用dvsys用户可以访问dba_dv_realm数据字典
SYS@dv > conn dvsys/dv_12345
DVSYS@dv > desc dba_dv_realm
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME NOT NULL VARCHAR2(90)
DESCRIPTION VARCHAR2(1024)
AUDIT_OPTIONS NOT NULL NUMBER
ENABLED NOT NULL VARCHAR2(1)
(8) 使用dvsys创建域myrealm2
DVSYS@dv > exec dbms_macadm.create_realm('myrealm2','myrealm2','y',1);
(9) 添加scott到域myrealm2
DVSYS@dv > exec dbms_macadm.add_object_to_realm('myrealm2','scott','%','%');
在database vault被禁用时使用sys用户还能访问域中的数据
SYS@dv > select count(*) from scott.emp;
COUNT(*)
----------
14
SYS@dv > shutdown immediate;
(10) 启用database vault
$ cd $ORACLE_HOME/rdbms/lib
$ make -f
ins_rdbms.mk
dv_on
$ cd $ORACLE_HOME/bin
$ relink all
$ export DISPLAY=127.0.0.1:0.0
$ dvca -action enable -service dv -sys_passwd oracle -owner_account dvowner -owner_passwd dv_12345 -nodecrypt
DVSYS@dv > select * from dba_dv_realm where name like 'myrealm%';
NAME DESCRIPTION AUDIT_OPTIONS E
-------------------- -------------------- ------------- -
myrealm myrealm 1 Y
myrealm2 myrealm2 1 Y
DVSYS@dv > col realm_name for a20
DVSYS@dv > col owner for a20
DVSYS@dv > col object_name for a10
DVSYS@dv > col object_type for a10
(12) 使用dvsys用户查看域中包含哪些对象
DVSYS@dv > select * from dba_dv_realm_object where realm_name like 'myrealm%';
REALM_NAME OWNER OBJECT_NAM OBJECT_TYP
-------------------- -------------------- ---------- ----------
myrealm2 SCOTT % %
(13) 添加sys为域参与者,这样sys用户也可以访问scott中的数据
DVSYS@dv > exec dbms_macadm.add_auth_to_realm('myrealm2','sys');
DVSYS@dv > select * from dba_dv_realm_auth where realm_name like 'myrealm%';
REALM_NAME GRANTEE AUTH_RULE_SET_NAME AUTH_OPTIONS
------------------------------ ---------- -------------------- --------------------
myrealm2 SYS Participant
(14) 使用sys用户访问scott下emp表
SYS@dv > conn / as sysdba
Connected.
SYS@dv > select count(*) from scott.emp;
COUNT(*)
----------
14
实验完毕
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29047826/viewspace-1710784/,如需转载,请注明出处,否则将追究法律责任。