select any dictionary與select_catalog_role的區別
select any dictionary與select_catalog_role
相同之處,有了這兩個中的一個,基本就可以查詢資料字典
不同之處:
1、select any dictionary是一種系統許可權(system privilege),而select_catalog_role 是一種角色(a role)。
2、角色的話需要重新登入或者顯式的set role 來生效,而賦予系統許可權是立即生效的。(P.S. 同樣revoke許可權也是立即生效)
3、select_catalog_role可以檢視一些資料字典的檢視·(可以看role的定義),如dba_之類的,而select any dictionary可以檢視sys的表,select_catalog_role看不到。
下面具體驗證一下:
2、角色的話需要重新登入或者顯式的set role 來生效,而賦予系統許可權是立即生效的。(P.S. 同樣revoke許可權也是立即生效)
select any dictionary立即生效
同時開兩個會話,檢視情況。從上至下,按順序。
> select * from dba_role_privs where grantee = 'TEST_USER';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
TEST_USER CONNECT NO YES
TEST_USER RESOURCE NO YES1、TEST_USER 只有最基本的CONNECT和RESOURCE 角色,其它的表許可權也沒有。
> select count(*) from v$session;
select count(*) from v$session
*
ERROR at line 1:
ORA-00942: table or view does not exist2、此時看不到 v$session
> GRANT SELECT ANY DICTIONARY TO TEST_USER;Grant succeeded.
3、賦予SELECT ANY DICTIONARY系統許可權
> select count(*) from v$session;
COUNT(*)
----------
734、立即生效,可以檢視到v$session
> REVOKE SELECT ANY DICTIONARY FROM TEST_USER;
Revoke succeeded.
5、收回SELECT ANY DICTIONARY系統許可權
> select count(*) from v$session;
select count(*) from v$session
*
ERROR at line 1:
ORA-00942: table or view does not exist6、立即生效,無法檢視到v$session
select_catalog_role 無法立即生效
> GRANT SELECT_CATALOG_ROLE TO TEST_USER;
Grant succeeded.
1、賦予SELECT ANY DICTIONARY角色
> select count(*) from v$session;
select count(*) from v$session
*
ERROR at line 1:
ORA-00942: table or view does not exist2、無法立即生效,使用set role即可,
revoke role也相同,不即時生效。
> set role SELECT_CATALOG_ROLE;Role set.
> select count(*) from v$session;
COUNT(*)
----------
74
3、select_catalog_role可以檢視一些資料字典的檢視·,如dba_之類的,而select any dictionary可以檢視sys的表。
select any dictionary 可以看到 SYS.ACCESS$表
> select * from dba_sys_privs where grantee = 'TEST_USER';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
TEST_USER UNLIMITED TABLESPACE NO
TEST_USER SELECT ANY DICTIONARY NO
> select * from dba_role_privs where grantee = 'TEST_USER';GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
TEST_USER CONNECT NO YES
TEST_USER RESOURCE NO YES
> desc SYS.ACCESS$
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
D_OBJ# NOT NULL NUMBER
ORDER# NOT NULL NUMBER
COLUMNS RAW(126)
TYPES NOT NULL NUMBER
select_catalog_role 看不到
> select * from dba_sys_privs where grantee = 'TEST_USER';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
TEST_USER UNLIMITED TABLESPACE NO> select * from dba_role_privs where grantee = 'TEST_USER';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
TEST_USER CONNECT NO YES
TEST_USER RESOURCE NO YES
TEST_USER SELECT_CATALOG_ROLE NO YES> desc SYS.ACCESS$
ERROR:
ORA-04043: object SYS.ACCESS$ does not exist
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23650854/viewspace-688668/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 子查詢中all與any的區別
- insert into 與 select into 的區別
- TypeScript 中 unknown 與 any 有啥區別TypeScript
- select for update nowait 與 select for update 區別AI
- 【許可權】使用O7_DICTIONARY_ACCESSIBILITY引數實現真正的“select any table”授權
- Swift中Any、AnyHashable、AnyObject、AnyClass區別SwiftObject
- select * 和 select 所有欄位的區別
- select count(*)和select count(1)的區別
- insert into select 與 create table as的用法和區別(轉)
- select into from 和 insert into select 的用法和區別
- select、poll、epoll之間的區別
- 【C#】-目標平臺×86、×64、Any CPU的區別C#
- Python筆記:string,tuple,list,dictionary的區別(之二,高階用法與型別轉換)Python筆記型別
- TypeScript Any型別TypeScript型別
- oracle taf type型別為session和select的區別Oracle型別Session
- ??與?:的區別
- select into 時有無strict關鍵字的區別
- select、poll、epoll之間的區別總結[整理]
- 型別預設和any型別型別
- Oracle中select for update ...一些區別Oracle
- MySQL的@與@@區別MySql
- mybatis #與$的區別MyBatis
- Null 與 “” 的區別Null
- &與&&, |與||區別
- in與exist , not in與not exist 的區別
- Any to Any 實時變聲的實現與落地丨RTC Dev Meetupdev
- Ask Hoegh(4)——select count(*)和select count(1)、count(column)有區別嗎?
- school dictionary, kids dictionary, children dictionary
- CentOS 與 Ubuntu 的區別CentOSUbuntu
- artice與section的區別
- GET 與 POST 的區別
- WebSocket 與 Socket 的區別Web
- Postgresql與MySQL的區別MySql
- chown與chmod的區別
- LESS與SASS的區別
- free 與 CFRelease 的區別
- gulp與webpack的區別Web
- @Autowired 與@Resource的區別