您好,欢迎访问一九零五行业门户网

Oracle技术之初始化参数O7_DICTIONARY_ACCESSIBILITY

o7_dictionary_accessibility也是和安全性有关的一个重要的 初始化 参数 。这个 参数 用来控制数据字典访问行为是否和oracle 7中保持一致。 默认情况下,这个 参数 设置为false,这时拥有any系统权限的用户并不能访问sys用户下的对象,这些对象也包括数据字
o7_dictionary_accessibility也是和安全性有关的一个重要的初始化参数。这个参数用来控制数据字典访问行为是否和oracle 7中保持一致。
默认情况下,这个参数设置为false,这时拥有any系统权限的用户并不能访问sys用户下的对象,这些对象也包括数据字典。
sql> show parameter o7
name                                 type        value
------------------------------------ ----------- ------------------------------
o7_dictionary_accessibility          boolean     false
sql> create user u1 identified by p_u1;  
用户已创建。
sql> grant connect to u1;
授权成功。
sql> grant select any table to u1;
授权成功。
sql> show user
user为sys
sql> create table t_sys (id number);
表已创建。
sql> conn u1/p_u1
已连接。
sql> select * from sys.t_sys;
select * from sys.t_sys
                 *
第1行出现错误:
ora-00942:表或视图不存在
sql> select * from dba_tables;
select * from dba_tables
             *
第1行出现错误:
ora-00942:表或视图不存在
sql> select * from v$session;
select * from v$session
             *
第1行出现错误:
ora-00942:表或视图不存在
sql> select count(*) from system.help;
 count(*)
----------
      978
即使拥有select any table系统权限,由于o7_dictionary_accessibility参数设置为false,用户也无法访问包括数据字典和动态视图在内的sys用户下的对象。而其他用户下的对象则都可以访问。
其中数据字典的访问可以通过select_catalog_role角色授予:
sql> conn / as sysdba
已连接。
sql> grant select_catalog_role to u1;
授权成功。
sql> conn u1/p_u1
已连接。
sql> select count(*) from dba_tables;
 count(*)
----------
     1196
sql> select count(*) from v$session;
 count(*)
----------
       24
sql> select * from sys.t_sys;
select * from sys.t_sys
                 *
第1行出现错误:
ora-00942:表或视图不存在
但是sys用户下的其他表,用户仍然没有权限访问。
如果将o7_dictionary_accessibility设置为true,则拥有any系统权限的用户可以访问sys用户下的对象:
sql> conn / as sysdba
已连接。
sql> revoke select_catalog_role from u1;
撤销成功。
sql> alter system set o7_dictionary_accessibility = true scope = spfile;
系统已更改。
sql> shutdown immediate
数据库已经关闭。
已经卸载数据库。
oracle例程已经关闭。
sql> startup
oracle例程已经启动。
total system global area 1258291200 bytes
fixed size                  2040280 bytes
variable size             318774824 bytes
database buffers          922746880 bytes
redo buffers               14729216 bytes
数据库装载完毕。
数据库已经打开。
sql> conn u1/p_u1
已连接。
sql> select count(*) from dba_tables;
 count(*)
----------
     1196
sql> select count(*) from v$session;
 count(*)
----------
       23
sql> select * from sys.t_sys;
未选定行
oracle视频教程请关注:http://u.youku.com/user_video/id_umzazmjkxmje2.html
其它类似信息

推荐信息