多用户协同开发中,可以屏蔽对象的名字及其持有者。如果没有同义词,当操作其他用户的表时,必须通过user名.object名的形式,采用了Oracle同义词之后就可以隐蔽掉user名,
当然这里要注意的是:public同义词只是为数据库对象定义了一个公共的别名,其他用户能否通过这个别名访问这个数据库对象,还要看是否已经为这个用户授权。
例如:服务SRV_B需要读系统A的数据
SQL>create synonym SRV_B.EMPLOYEE for A.EMPLOYEE ;
SQL> grant select on A.EMPLOYEE to SRV_B;
Grant succeeded.
不赋权的话,SRV_B看不到EMPLOYEE 数据
批量生成:
select 'grant select on A.' ||table_name|| ' to ' || owner || ';' from dba_synonyms where OWNER='SRV_B' order by 1;
参考阅读:潇湘隐者http://www.cnblogs.com/kerrycode/archive/2012/12/19/2824963.html