视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
dblink概述及创建示例
2020-11-09 07:34:07 责编:小采
文档


dblink概述 dblink是定义一个数据库到另一个数据库的路径的对象,dblink允许你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是db link是单向的连接。 在创建dblink的时候,Oracle再数据字典中保存相关的dblink的信息,在

dblink概述
dblink是定义一个数据库到另一个数据库的路径的对象,dblink允许你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是db link是单向的连接。
在创建dblink的时候,Oracle再数据字典中保存相关的dblink的信息,在使用dblink的时候,Oracle通过Oracle Net用用户预先定义好的连接信息访问相应的远程数据库以完成相应的工作。
建立dblink之前需要确认的事项:
确认从local database到remote database的能够通过监听访问--sqlplus aa/bb@cc 连接正常,并确认所使用的用户在remote database上面有相应的访问权限

源库上查询:
SYS@ bys3>select * from user_sys_privs where privilege like upper('%link%');
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
[oracle@bys3 admin]$ cat tnsnames.ora
ocm =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.215)(PORT =1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ocm1)
)
)
目标库表中数据:
BYS@ ocm1>select * from test;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
#######################################实验

1.创建公有DBLINK的方法: ---需要使用public参数,OWNER 是public

SYS@ bys3>create public database link ocm1 connect to bys identified by bys using 'ocm';
Database link created.
Elapsed: 00:00:00.03 ---语法正常且using 的网络服务名正常的话,语句完成很快,如果等待很久才能完成,很可能是网络服务名的配置有问题。
SYS@ bys3>select * from dept@ocm1; ---DEPT表不存在
select * from dept@ocm1
*
ERROR at line 1:
ORA-00942: table or view does not exist
ORA-02063: preceding line from OCM1
SYS@ bys3>select * from test@ocm1;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
SYS@ bys3>drop public database link ocm1; --删除PUBLIC DBLINK
Database link dropped.
另一条创建语句:数据链的名称可以自己决定--不过最好弄成能标示连接的目标库信息
SYS@ bys3>create public database link aa connect to bys identified by bys using 'ocm';
Database link created.
Elapsed: 00:00:00.01
SYS@ bys3>select * from test@aa;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
############

2.创建私有DBLINK---创建dblink的user拥有该dblink

TEST1@ bys3>create database link ocm2 connect to bys identified by bys using 'ocm';
Database link created.
TEST1@ bys3>select * from test@ocm2;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
TEST1@ bys3>select db_link from dba_db_links;
DB_LINK
----------------------------------------------------------------------------------------------------
AA
OCM2
TEST1@ bys3>drop database link ocm2;
Database link dropped.

3.使用网络服务的连接串来创建DBLINK--这样做好处是不受tnsnames.ora文件中信息的影响

TEST1@ bys3>create database link ocm4 connect to bys identified by bys using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.215)(PORT =1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ocm1)
)
)';

Database link created.
Elapsed: 00:00:00.01 ---这个长命令应该在文本中写好命令,直接复制执行。
TEST1@ bys3>select * from test@ocm4;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
TEST1@ bys3>select db_link from dba_db_links;
DB_LINK
---------------------------
AA
OCM2
OCM4

4.ORA-02011:错误--因为数据链名称已经存在


TEST1@ bys3>create database link ocm2 connect to bys identified by bys using 'ocm';
create database link ocm2 connect to bys identified by bys using 'ocm'
*
ERROR at line 1:
ORA-02011: duplicate database link name

TEST1@ bys3>select db_link from dba_db_links;
DB_LINK
----------------------------------------------------------------------------------------------------
AA
OCM2


下载本文
显示全文
专题