天天看點

[Oracle]-[同義詞]-public與非public同義詞

[現象]:

Sys賬戶給bisal賬戶的t_emp表建立public同義詞,bisal使用者可以通路t_emp_syn,但scott賬戶無法查詢,select ... t_emp_syn提示表或視圖不存在。

SQL> select * from t_emp_syn;

select * from t_emp_syn

              *

ERROR at line 1:

ORA-00942: table or view does not exist

[原因]:

Scott沒有bisal.t_emp表的通路權限,是以提示表或視圖不存在。

[解決]:

使用bisal,執行grant select on t_emp to scott;

使用scott,可以執行t_emp_syn。

     EMPNO EN     DEPTNO

 ---------- --  ----------

         1  c       1

         2  d       2

         3  f       0

        10  1       1

        12  1a      1

[總結]:

Public同義詞,一個使用者A若需要通路另一個使用者B建立的表的同義詞,則需要有使用者B該表(也就是基表)的通路權限。

若是普通同義詞,DBA使用者可以通路任何使用者建立的非public同義詞,但不同的普通使用者之間,除非授予基表的通路權限,否則不能随意通路其它使用者的非public同義詞,這也是public存在的用途。

可以為一個基本建立多個不同的同義詞。