当前位置:数据库 > Oracle >>

[Oracle]-[同义词]-public与非public同义词

[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。
 
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存在的用途。
 
可以为一个基本建立多个不同的同义词。
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,