[現象]:
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存在的用途。
可以為一個基本建立多個不同的同義詞。