今天在bbs上看到一位網友提出:新增使用者隻能查詢目前使用者所有表,于是簡單地測試了一下:
SQL> create user aaa identified by bbb;
使用者已建立。
SQL> grant select any table to aaa;
授權成功。
SQL> grant connect to aaa;
授權成功。
SQL> conn aaa/bbb
已連接配接。
SQL> select * from t1;
select * from t1
*
第 1 行出現錯誤:
ORA-00942: 表或視圖不存在
SQL> select * from system.t1;
TABLE_NAME STATUS
------------------------------ --------
MVIEW$_ADV_WORKLOAD VALID
MVIEW$_ADV_BASETABLE VALID
MVIEW$_ADV_SQLDEPEND VALID
MVIEW$_ADV_PRETTY VALID
MVIEW$_ADV_TEMP VALID
MVIEW$_ADV_FILTER VALID
MVIEW$_ADV_LOG VALID
MVIEW$_ADV_FILTERINSTANCE VALID
MVIEW$_ADV_LEVEL VALID
MVIEW$_ADV_ROLLUP VALID
MVIEW$_ADV_WORKLOAD VALID
TABLE_NAME STATUS
------------------------------ --------
MVIEW$_ADV_BASETABLE VALID
MVIEW$_ADV_SQLDEPEND VALID
MVIEW$_ADV_PRETTY VALID
MVIEW$_ADV_TEMP VALID
MVIEW$_ADV_FILTER VALID
MVIEW$_ADV_LOG VALID
MVIEW$_ADV_FILTERINSTANCE VALID
MVIEW$_ADV_LEVEL VALID
MVIEW$_ADV_ROLLUP VALID
已選擇20行。
SQL> conn system/bbb
已連接配接。
SQL> revoke select any table from aaa;
撤銷成功。
SQL> conn aaa/bbb
已連接配接。
SQL> select * from system.t1;
select * from system.t1
*
第 1 行出現錯誤:
ORA-00942: 表或視圖不存在
SQL> select * from system.t1;
select * from system.t1
*
第 1 行出現錯誤:
ORA-00942: 表或視圖不存在
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
SQL>
結論:grant select any table to user 可以實作隻查詢目前使用者所有表,但是在查詢時,一定要在表名前加上該表的所有者。