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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TypeScript 中 unknown 與 any 有啥區別TypeScript
- select * 和 select 所有欄位的區別
- select into from 和 insert into select 的用法和區別
- Swift中Any、AnyHashable、AnyObject、AnyClass區別SwiftObject
- select、poll、epoll之間的區別
- Python筆記:string,tuple,list,dictionary的區別(之二,高階用法與型別轉換)Python筆記型別
- 【C#】-目標平臺×86、×64、Any CPU的區別C#
- TypeScript Any型別TypeScript型別
- select into 時有無strict關鍵字的區別
- Oracle中select for update ...一些區別Oracle
- ??與?:的區別
- 型別預設和any型別型別
- school dictionary, kids dictionary, children dictionary
- Any to Any 實時變聲的實現與落地丨RTC Dev Meetupdev
- Filter 與 Servlet 的區別FilterServlet
- session與cookie的區別SessionCookie
- @Valid 與 @Validated 的區別
- Eureka與Zookeeper的區別
- async與defer的區別
- print 與 println 的區別
- buffer與cache的區別
- grid 與 treelist 的區別
- Python中 ‘==‘ 與‘is‘的區別Python
- http與https的區別HTTP
- GET 與 POST 的區別
- TCP與UDP的區別TCPUDP
- int與Integer的區別
- Mysql與mongodb的區別MySqlMongoDB
- kill與pkill的區別
- HTML與XHTML的區別HTML
- CentOS 與 Ubuntu 的區別CentOSUbuntu
- artice與section的區別
- chown與chmod的區別
- synchronized與ReentrantLock的區別synchronizedReentrantLock
- LESS與SASS的區別
- synchronized與Lock的區別synchronized
- typedef與define的區別
- const與static的區別
- HTTP 與 HTTPS 的區別HTTP