【Oracle】-【同義詞】-public與非public同義詞

bisal發表於2013-07-26

[現象]:

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

SQL> select * from 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存在的用途。

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7192724/viewspace-767152/,如需轉載,請註明出處,否則將追究法律責任。

相關文章