环境描述:公司的数据库是多用户共用一个库,比如有A用户和B用户,同样使用的是C_DB这个库,那么原本的权限就是A用户没有权限去查看B用户的表biaoming,那么,有什么办法可以实现A用户能够访问B用户的表biaoming,答案就是给A用户赋权:

grant all on biaomingto A ;

但是这样的话又有一个问题:当A用户去查询B用户biaoming表的时候,需要再表名前面加一个B.需要执行以下语句:

Select * from B.biaoming;(没有加上B.的话会提示没有表)

但是语句已经在程序中写好了,所以去修改程序关于这个SQL的语句,似乎不太实际,那么我们是不是可以这样做:让Select * from B.biaomingSelect * from biaoming查询到的同样是B用户表中的数据。

答案是:使用oracle的同义词,语句如下:

create public synonym biaoming for B.biaoming;

以下是对oracle同义词的部分说明(网上转载)

Oracle的同义词(synonyms)从字面上理解就是别名的意思,和试图的功能类似,就是一种映射关系。本文介绍如何创建同义词语句,删除同义词以及查看同义词语句。

oracle的同义词总结:

  从字面上理解就是别名的意思,和试图的功能类似。就是一种映射关系。

1.创建同义词语句:

createpublic synonym table_name for user.table_name;

其中第一个user_table和第二个user_table可以不一样。

此外如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:

create synonymtable_name for ;

  当然,你可能需要在user用户中给当前用户(user2)授权:

grant select/delete/update on user2

2.删除同义词:

drop public synonym table_name;

3.查看所有同义词:

select * fromdba_synonyms

  同义词拥有如下好处:节省大量的空间,对不同用户的操作同一张表没有多少差别;扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接。

数据库中提供了同义词管理的功能。Oracle同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。

####朋友的小店,全店批发价  男装,宅男朋友值得拥有 ,可以去看下哦。