1. Oracle8i及之前
select any table + O7_DICTIONARY_ACCESSIBILITY=true --可访问sys的基表及数据字典
参数O7_DICTIONARY_ACCESSIBILITY 默认为true,如果设置false则select any table无法访问数据字典
角色select_catalog_role可以查看一些数据字典的视图:
select * from dba_tab_privs where grantee='SELECT_CATALOG_ROLE';
2. oracle 9i及之后:
1)引入了select any dictionary权限,表示访问数据字典的权限; 它与select_catalog_role的区别在于:
select any dictionary系统权限,可查看动静视图,还可以查看sys的实体表
select_catalog_role角色,授予的是对象权限,可查看动静视图,不可以查看sys的实体表
EXECUTE_CATALOG_ROLE角色,可以执行数据字典中包含的包与过程
2)O7_DICTIONARY_ACCESSIBILITY默认变为false
仍可使用:select any table + O7_DICTIONARY_ACCESSIBILITY=true
它相当于:select any table + select any dictionary + O7_DICTIONARY_ACCESSIBILITY=false
3)可以只授权某个视图的权限:
grant select on v$session to scott;
ORA-02030: 只能从固定的表/视图查询
grant select on v_$session to scott; --ok
Grant succeeded