通過建立檢視及同義詞方式實現普通使用者查詢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
--------------
2.使用對X$基表建立檢視的方法可以實現普通使用者訪問X$:
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
後面省略。。。
3.可以通過對檢視再加同義詞方式來實現更簡單的訪問
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
相關文章
- SQLServer訪問Oracle(通過同義詞-檢視-資料字典)出現的問題SQLServerOracle
- SYS查詢不到的同義詞
- 【原創】匯出所有物件(表、索引、檢視、同義詞)的建立指令碼物件索引指令碼
- 實驗:用檢視加同義詞實現資料安全
- Oracle同義詞建立方法Oracle
- 表增刪改欄位,及基表改變等相關操作對檢視、同義詞、儲存過程的影響儲存過程
- 查詢基表的相關檢視
- Oracle同義詞建立方法(轉)Oracle
- 資料庫物件、表空間、表、檢視、索引、同義詞序列等的字典資料庫物件索引
- 常用查詢Oracle的表,檢視,儲存過程,使用者等SQL命令Oracle儲存過程SQL
- 授權訪問使用者的所有表.、批量建立和表名一致的同義詞
- Oracle建立使用者並給使用者授權查詢指定表或檢視的許可權Oracle
- 10g ALL_SYNONYMS同義詞查詢效能下降
- Oracle給普通使用者賦予查詢動態效能檢視的許可權Oracle
- EBS中通過查詢 dba_source 檢視pkg 的版本號
- 建立遠端基表的物化檢視
- Elasticsearch 查詢in 和 not in 的實現方式Elasticsearch
- 如何讓普通使用者可以對DBA_SOURCE檢視進行閃回查詢?
- 如何通過程式來查詢表名
- 通過Oracle動態效能檢視採集查詢調優數Oracle
- set unused column和檢視,約束,同義詞和索引的關係索引
- JVM系列(四):java方法的查詢過程實現JVMJava
- Dynamics CRM 通過配置來設定查詢欄位的預設檢視
- 【Oracle】-【同義詞】-public與非public同義詞Oracle
- 微信域名批次檢測 微信域名攔截查詢的實現方式
- golang通過mysql語句實現分頁查詢GolangMySql
- postgresql通過建立規則(RULE)實現表記錄SQL
- Laravel 通過子查詢建立動態關聯Laravel
- [原]查詢透明表的實用方法
- AdMob通過獎勵視訊實現使用者體驗優先的三種方式
- centos7新增普通使用者用於檢視日誌檔案及檢視centos使用者CentOS
- Laravel 通過遷移指令碼建立MySQL檢視Laravel指令碼MySql
- 實現 MyBatis 流式查詢的方法MyBatis
- mysql 建立索引的方法--建立檢視MySql索引
- 物件、同義詞和公有同義詞順序選取物件
- 自定義例外 + 建立檢視
- 學習筆記 過程、同義詞、序列筆記
- 透過查詢檢視sql執行計劃SQL