為何SYSTEM使用者可以將V$SESSION的查詢許可權賦權給其他使用者而SYS使用者卻不可以?
為何SYSTEM使用者可以將V$SESSION的查詢許可權賦權給其他使用者而SYS使用者卻不可以?
有學員提出了一個問題,
現象如下,難道SYSTEM比SYS使用者的許可權更大嗎?
SYS@ora11g > grant select on v$session to lhr;
grant select on v$session to lhr
*
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
SYS@ora11g > conn system/lhr
Connected.
SYSTEM@ora11g > grant select on v$session to lhr;
Grant succeeded.
如果SYSTEM不能對V$SESSION賦權,那麼請執行以下命令:
GRANT SELECT ON SYS.V_$SESSION TO SYSTEM WITH GRANT OPTION;
這樣SYSTEM就可以對V$SESSION賦權了。
對於該問題可以從以下檢視中獲得答案:
SYS@ora11g > col OWNER format a10
SYS@ora11g > col object_name format a15
SYS@ora11g > SELECT d.owner,d.object_name,d.object_type FROM Dba_Objects d WHERE d.object_name IN ( 'V$SESSION','V_$SESSION');
OWNER OBJECT_NAME OBJECT_TYPE
---------- --------------- -------------------
SYS V_$SESSION VIEW
PUBLIC V$SESSION SYNONYM
SYS@ora11g > SELECT d.owner,d.synonym_name,d.table_owner,d.table_name FROM DBA_SYNONYMS D WHERE D.synonym_name IN ( 'V$SESSION','V_$SESSION');
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME
---------- ------------------------------ ------------------------------ ------------------------------
PUBLIC V$SESSION SYS V_$SESSION
SYS@ora11g > SELECT D.OWNER,
2 D.NAME,
3 D.TYPE,
4 D.REFERENCED_OWNER,
5 D.REFERENCED_NAME,
6 D.REFERENCED_TYPE
7 FROM DBA_DEPENDENCIES D
8 WHERE D.NAME IN ('V$SESSION', 'V_$SESSION');
OWNER NAME TYPE REFERENCED_OWNER REFERENCED_NAME REFERENCED_TYPE
---------- ------------- ------------------ ------------------- ----------------- ------------------
PUBLIC V$SESSION SYNONYM SYS V_$SESSION VIEW
SYS V_$SESSION VIEW SYS V$SESSION VIEW
SYS@ora11g > SYS@ora11g > SELECT * FROM V$FIXED_TABLE d WHERE d.NAME IN ( 'V$SESSION','V_$SESSION','GV$SESSION');
NAME OBJECT_ID TYPE TABLE_NUM
------------------------------ ---------- ----- ----------
GV$SESSION 4294951258 VIEW 65537
V$SESSION 4294950919 VIEW 65537
SYS@ora11g >
透過以上查詢可以看到,V$SESSION屬於公共同義詞,它來源於SYS.V_$SESSION私有檢視,而該檢視又來源於系統底層表SYS.V$SESSION,而系統底層表SYS.V$SESSION又來源於系統底層表SYS.GV$SESSION。
Oracle選擇訪問物件的順序原則是先SCHEMA後PUBLIC。所以,對於SYS使用者而言,他查詢V$SESSION檢視其實是查詢的系統底層表SYS.V$SESSION。對於系統底層表,是不能直接做賦權操作的。所以,SYS使用者在將該檢視賦權給其他使用者的時候就會報錯。而對於SYSTEM使用者而言,他查詢V$SESSION檢視其實是查詢的PUBLIC這個特殊使用者下的公共同義詞,而公共同義詞是可以做賦權操作的。
& 說明:
有關Oracle同義詞的更多內容介紹可以參考我的BLOG:http://blog.itpub.net/26736162/viewspace-2154285/
有關Oracle資料字典的更多內容可以參考我的BLOG:http://blog.itpub.net/26736162/viewspace-2153324/
About Me
.............................................................................................................................................
● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除
● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文部落格園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● DBA寶典今日頭條號地址:
.............................................................................................................................................
● QQ群號:230161599(滿)、618766405
● 微信群:可加我微信,我拉大家進群,非誠勿擾
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2018-05-01 06:00 ~ 2018-05-31 24:00 在魔都完成
● 最新修改時間:2018-05-01 06:00 ~ 2018-05-31 24:00
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
.............................................................................................................................................
● 小麥苗的微店:
● 小麥苗出版的資料庫類叢書:http://blog.itpub.net/26736162/viewspace-2142121/
● 小麥苗OCP、OCM、高可用網路班:http://blog.itpub.net/26736162/viewspace-2148098/
.............................................................................................................................................
使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。
小麥苗的微信公眾號 小麥苗的DBA寶典QQ群2 《DBA筆試面試寶典》讀者群 小麥苗的微店
.............................................................................................................................................
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2154543/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將一個使用者下所有表的查詢許可權賦給另一個使用者
- Oracle查詢使用者許可權Oracle
- MySql查詢使用者許可權MySql
- 把一個使用者的所有表的查詢許可權 賦給另一個使用者
- 查詢每個使用者的許可權
- Oracle給普通使用者賦予查詢動態效能檢視的許可權Oracle
- Oracle建立使用者並給使用者授權查詢指定表或檢視的許可權Oracle
- UserService 查詢使用者查詢許可權 isGlobalQuery分析
- exchange 賦予其他使用者訪問mailbox許可權AI
- 使用者許可權繼承另一使用者的許可權繼承
- UserService 查詢使用者沒許可權的索引,增加臨時許可權queryIndicesNoPermission分析索引
- 【Mysql】給普通使用者mysqldump的許可權MySql
- Ubuntu下給普通或新增使用者賦予sudo許可權Ubuntu
- UserService 修改使用者查詢許可權 changeGlobalQuery分析
- mysql 給了使用者所有許可權ALL PRIVILEGES,但是該使用者沒有grant許可權MySql
- 查詢使用者的系統許可權和使用者所擁有的角色
- MongoDB建立只讀使用者並授權指定集合的查詢許可權MongoDB
- linux給使用者新增sudo許可權Linux
- oracle使用者許可權Oracle
- mysql使用者許可權MySql
- oracle 使用者許可權Oracle
- MySQL 給使用者新增 ALTER VIEW 的許可權MySqlView
- mysql 建立新使用者 並賦予許可權MySql
- UserService 刪除使用者查詢許可權 deleteUserPermission分析delete
- 提取使用者許可權或是不同資料庫使用者許可權的同步資料庫
- Oracle 使用者、物件許可權、系統許可權Oracle物件
- 查詢mysql資料庫中所有使用者及使用者許可權MySql資料庫
- 【許可權管理】Oracle中檢視、回收使用者許可權Oracle
- Ubuntu-給新增使用者新增root許可權Ubuntu
- 給非 root 使用者新增 docker 使用許可權Docker
- Linux給普通使用者新增ssh許可權Linux
- linux給普通使用者增加ssh許可權Linux
- 關於oracle使用者許可權查詢總結檢視Oracle
- 查詢資料庫使用者角色和許可權檢視資料庫
- Oracle 11g建立使用者並賦許可權Oracle
- linux新增使用者,並賦予root許可權Linux
- Linux 增加使用者並賦予suder許可權Linux
- UserService 查詢使用者有許可權的關聯索引 queryIndexPatternByUserName分析索引Index