重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义
成都创新互联长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为宁乡企业提供专业的网站建设、网站制作,宁乡网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
创建同义词
CREATE SYNONYM SYSN_TEST FOR TEST;
查看同义词
SELECT * FROM USER_SYNONYMS
使用同义词
SELECT * FROM SYSN_TEST;
删除同义词
DROP SYNONYM SYSN_TEST;
1.@dblink是你要查询的同义词对应的database link。
2.表名是在db link里的表名,不是在你库中同义词里的表名,如下图:不是S_SALES_BLL,而是B_SALES_ALL。
3.表名区分大小写。PS:表名如果是大写,你写小写,那就查询结果为空。
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
SELECT * FROM SYS.ALL_SYNONYMS WHERE SYNONYM_NAME='S'.里面有同义词的表与用户
一、背景
有两个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()。