看到群里有人問普通用戶訪問基表的問題,測試下如下: X$基表可以通過創建視圖,再對視圖創建同義詞方式、授權的方式來實現普通用戶可以訪問基表。 當然了普通用戶訪基表也是沒道理的,理論上沒必要,權限控制上也應該是不允許的。此處不考慮合理性,就此問
看到群里有人問普通用戶訪問基表的問題,測試下如下:
X$基表可以通過創建視圖,再對視圖創建同義詞方式、授權的方式來實現普通用戶可以訪問基表。
當然了普通用戶訪基表也是沒道理的,理論上沒必要,權限控制上也應該是不允許的。此處不考慮合理性,就此問題進行實驗。
1.直接對X$基表創建同義詞,其它用戶無法實現訪問。
SQL> show user USER is "SYS" SQL> select count(*) from sys.x$kcbwds; COUNT(*) ---------- 8 SQL> CREATE PUBLIC SYNONYM kcbwds FOR sys.x$kcbwds; Synonym created. SQL> grant select on sys.x$kcbwds to bys; grant select on sys.x$kcbwds to bys * ERROR at line 1: ORA-02030: can only select from fixed tables/views ---------- SQL> show user USER is "BYS" SQL> select count(*) from sys.x$kcbwds; select count(*) from sys.x$kcbwds * ERROR at line 1: ORA-00942: table or view does not exist SQL> select count(*) from kcbwds; select count(*) from kcbwds * ERROR at line 1: ORA-00942: table or view does not exist
SQL> show user USER is "SYS" SQL> select count(*) from x$kcbwds; COUNT(*) ---------- 8 SQL> create view testa as select * from sys.x$kcbwds; View created. SQL> grant select on sys.testa to bys; Grant succeeded. SQL> conn bys/bys Connected. SQL> show user USER is "BYS" SQL> select count(*) from sys.testa; COUNT(*) ---------- 8 SQL> desc sys.testa Name Null? Type ----------------------------------------- -------- ---------------------------- ADDR RAW(4) INDX NUMBER INST_ID NUMBER SET_ID NUMBER POOL_ID NUMBER DBWR_NUM NUMBER BLK_SIZE NUMBER 后面省略。。
SQL> CREATE PUBLIC SYNONYM testb FOR sys.testa; Synonym created. SQL> show user USER is "SYS" SQL> conn / as sysdba Connected. SQL> conn bys/bys Connected. SQL> select count(*) from testb; COUNT(*) ---------- 8
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com