重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1.@dblink是你要查询的同义词对应的database link。
成都创新互联公司是一家集网站建设,章贡企业网站建设,章贡品牌网站建设,网站定制,章贡网站建设报价,网络营销,网络优化,章贡网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
2.表名是在db link里的表名,不是在你库中同义词里的表名,如下图:不是S_SALES_BLL,而是B_SALES_ALL。
3.表名区分大小写。PS:表名如果是大写,你写小写,那就查询结果为空。
这种情况应该是授予权限的问题造成的。
1、表的所有用户要给表授予公共权限。例如:授予查询权限“grant select on 表 to public”;
2、建立公有同义词不要忘了加上public选项,如:create public sysnonym。
同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。Oracle的同义词有两种类型:公有同义词与私有同义词。
(1)公有同义词由一个特殊的用户组Public所拥有。
(2)私有同义词是由创建他的用户所有。
创建同义词的语法:Create [public] synonym 同义词名称 for [username.]objectName
删除同义词的语法:Drop [public] synonym 同义词名称
查看所有同义词:select * from dba_synonyms
SELECT * FROM SYS.ALL_SYNONYMS WHERE SYNONYM_NAME='S'.里面有同义词的表与用户
1.你可能需要在user用户中给当前用户(user2)授权: grant select/delete/update on user2
创建同义词:
create public synonym table_name for user.table_name;
2.删除同义词:
drop public synonym table_name;
3.查看所有同义词:
select * from dba_synonyms
一、背景
有两个sid:Asid,Bsid,在Asid下有两个用户Auser1,Auser2,在Bsid下有一个用户Buser1。其中Auser2和Buser1建立了dblink。现希望通过登录Buser1访问Auser1上的三张表table1,table2,table3信息和函数function1。
二、步骤
①登录Auser1对Auser2授权(若需要删除则加上)
grant ,select,on table1 to Auser2;
grant ,select,on table2 to Auser2;
grant ,select,on table3 to Auser2;
grant execute on function1 to Auser2;
②登录Auser2建立同义词
create synonym table1 for Auser1.table1;
create synonym table2 for Auser1.table1;
create synonym table3 for Auser1.table1;
create synonym function1 for Auser1.function1;
③登录Buser1查找db_link名(例如查出来的db_link名为mydblink1)
select username,db_link from user_db_links
④建立Buser1的同义词
create synonym table1 for Auser2.table1@mydblink1;
create synonym table2 for Auser2.table2@mydblink1;
create synonym table3 for Auser2.table3@mydblink1;
create synonym function1 for Auser2.function1@mydblink1;
⑤测试
此时登录Buser1通过select * from table1就可以访问table1了。
三、注意点
也可以建立procedure的`同义词,但是这样执行的过程中不允许commit。如果要提交的话请在如JDBC中commit()。