您的位置:首页 > 数据库 > Oracle

Oracle创建DBlink和Sysnonyms(同义词,表映射)的方法及常见问题处理

2015-11-03 22:49 1301 查看
Oracle创建DBlink的方法及常见问题处理

在使用oracle数据库的时候,如果我们的数据一部分在本地数据库,另一部分数据在远程数据库,这时候最便捷的方法就是需要通过本地数据库访问远程数据库,在本地数据库创建Database Link (DBLink),并创建Sysnonyms(同义词),像访问本地表一样访问访问远程数据库表中的数据,跟本文类似的帖子也有很多,不过连片赘述的较多,反而将很简单的操作搞得很复杂

1、创建DBLINK:

(1)使用SQL语句创建:

create database link 连接名

connect to 远端数据库用户名

identified by 远端数据库用户密码

using '远端数据库服务名'

例如:

create [public] database link
test_dblink connect to test identified by
password
using 'DMDB';

说明:如果创建全局dblink,必须使用systm或sys用户,在database前加public。

这里的 “DBMS”是指已经在Oracle client 或者plsql 中创建的连接远程数据库的服务。

一般配置在tnsnames.ora文件中,如果没有配置服务名,可以将语句写成如下的形式,

创建一个新的远程数据库服务;

create database link linkfwq

connect to fzept identified by neu

using '(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = Host)(PORT = port))

)

(CONNECT_DATA =

(SERVICE_NAME = fservice_name)

)

)';

host=数据库的ip地址,port :数据库的端口号,service_name=数据库的ssid。

(2)、通过PLSQL等图形化数据库连接工具创建,

操作比较简单,这里不做累述。。。

删除DBLink:

Drop [PUBLIC] DATABASE LINK DMDB。

2、创建Sysnonyms(同义词,表映射):

创建好DBLink之后就可以创建同义词,进行远程数据表的访问了,

Create SYNONYM 同义词名 FOR 表名;

Create SYNONYM 同义词名 FOR 表名@数据库链接名;

同义词名:给创建的同义词去一个名字,可以跟被引用的远程数据库表的名字相同也可以不同,如果本地数据库中包含同名的数据表则应该将其区分开;

表名:这里指被引用的远程数据库中的表的名字

注意:同义词的创建需要有远程数据库表的操作权限

使用同义词查询远程数据:

Select …… FROM 同义词名

当然如果只是执行一次或几次查询操作可以不创建同义词,直接查询数据:

Select …… FROM [远程用户名]表名@DBLINK名;

删除同义词:

drop public synonym table_name;

在创建好DBlink和同义词后可能会出现以下错误:

ORA-02085: 数据库链接 TEST_DBLINK 连接到 DMDB

不要担心,这时候执行一下语句就好了:

alter system set global_names=false;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: