我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

oracle同义词怎么用,oracle添加同义词

oracle中什么是同义词

相当于alias(别名),比如把user1.table1在user2中建一个同义词table1

创新互联是一家专注网站建设、网络营销策划、微信小程序开发、电子商务建设、网络推广、移动互联开发、研究、服务为一体的技术型公司。公司成立10余年以来,已经为上千余家成都湿喷机各业的企业公司提供互联网服务。现在,服务的上千余家客户与我们一路同行,见证我们的成长;未来,我们一起分享成功的喜悦。

create synonym table1 for user1.table1;

这样当你在user2中查select * from table1时就相当于查select * from user1.table1;

优点自己总结吧。

例如:

在oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必须得有权限,但是如果是别人将权限授予了我们,我们也是能对数据库进行操作的,但是我们必须要已授权的表的名称前键入该表所有者的名称,所以这就是比较麻烦的,遇到这种情况,我们该怎么办呢?创建个同义词吧!这样我们就可以直接使用同义词来使用表了。

oracle数据库中循环同义词,怎么处理

1、 当用程序连接或者用plsql查询同义词时,如果出现ora-01775:同义词的循环链这样的问题。

一般是因为存在同义词,但同义词没有相应的对象。

2、 先查有没有循环的同义词。

select * from dba_synonyms

where table_owner='TEST'

and synonym_nametable_name;

没有记录。

3、 再查同义词没有对象的数据库对象

select * from dba_synonyms

where table_owner='TEST'

and

synonym_name in

(select a.synonym_name from dba_synonyms a where a.table_owner='TEST'

minus

select object_name from user_objects)

4、 把查询出来的结果进行查询表

select * from DRILL_PRESON

如果该同义词没有相应的对象,则会包ora-01775的错误

5、 把这个同义词删除

drop public synonym DRILL_PRESON

oracle同义词

Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义

创建同义词

CREATE SYNONYM SYSN_TEST FOR TEST;

查看同义词

SELECT * FROM USER_SYNONYMS

使用同义词

SELECT * FROM SYSN_TEST;

删除同义词

DROP SYNONYM SYSN_TEST;

oracle中什么是同义词,它有几种类型,不同类型同义词的区别是什么?并写出语法?

1、私有同义词

只能被当前用户访问.

2、公有同义词

可被所有的数据库用户访问.

创建同义词语法:

create [or replace] [public]

synonym 同义词名称

for [用户名.]对象名;

注释:[]中表示可写、或不写;[or replace]表示如果已经有了你要创建的同义词就取代/替换原有的同义词;[public]表示是否把同义词公有

Oracle中使用同义词介绍

一、背景

有两个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()。

oracle数据库procedure同义词如何使用?

可以试试CREATE SYNONYM TEST FOR

PCKG_RAF_EFAS_INTERFACE.PROC_GET_ACCESS_TOKEN;

如果不行,可以再自己写个存储过程将这个调用存储过程的部分代码包起来,对外边用户使用来说,也是一样的效果。


网站栏目:oracle同义词怎么用,oracle添加同义词
文章地址:http://mswzjz.cn/article/hsedhp.html

其他资讯