Oracle—dblink创建与使用

一、DbLink的创建

1.PLSQL图文方式

2.SQL方式

-- Drop existing database link 
drop database link LINK_NC_ZS;
-- Create database link 
create database link LINK_NC_ZS  connect to ZSFNC  identified by 123 using '190.75.16.11:1327/ORCL';
View Code
-- Drop existing database link 
drop database link LINK_NC_ZS2;
-- Create database link 
create database link LINK_NC_ZS2
  connect to ZSFNC identified by 123
  using 'ZSF_NC_ZS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 190.75.16.11)(PORT = 1327))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =ORCL)
    )
  )';
View Code

3.dblink查看

SQL> select owner,object_name from dba_objects where object_type='DATABASE LINK';
 
OWNER                          OBJECT_NAME
------------------------------ --------------------------------------------------------------------------------
PUBLIC                         DBMS_CLRDBLINK
PUBLIC                         ZSF_TEST
NC1013                         LINK_NC_ZS
NC1013                         LINK_NC_ZS2
NC1013                         ZSKJ_LINK
View Code

按照权限分为public、private两种。

二、dblink使用

1.数据查询

select * from so_sale@link_nc_zs
View Code

2.数据插入

SQL> insert into t@dblinktest values(1);
1 row created.
View Code

三、dblink优缺点

过度使用DBLINK做系统集成会带来很多问题,问题主要由以下几点:
1. 大量消耗数据库资源;
本地系统每通过DBLINK链接远端系统一次,都会生成一个本地session,如本地session不退出或者手动释放,只有通过session超时才能自动释放,会浪费大量的系统资源
2. 容易出现数据库BUG;
大量使用DBLINK,本地系统极易出现ORA-02068、ORA-03113、ORA-02080、ORA-02054、ORA-02050等Oracle错误,这种错误大部分会影响当前session正在处理的业务
3. 性能较差;
由于使用DBLINK,本地系统在获取数据时,每次链接都会对远端数据库进行一次全表扫描,且所有数据都会传输回本地数据库内,导致性能降低并且严重浪费当前系统资源。尤其出现一条sql语句从两个DBLINK中取数,更被称之为“性能杀手”,尤其是OLTP型数据库
4. 数据传输不稳定,占用带宽严重,容易产生丢包风险;
DBLINK本身没有数据存储、监控等功能,是通过网络中的数据库进行传输时,如果在传输过程中出现数据丢包现象,DBLINK本身不会发现,只用当业务进行完毕才能发现丢包现象,这样会影响当前正在处理的业务;另外,通过DBLINK查询的数据会像数据全部传至本地数据库进行操作,数据传输量很大,占用带宽严重,可能会导致网络堵塞
5. Oracle数据功能受限
DBLINK本身不支持对oracle LOB大对象的操作,在使用PROCDURE时,使用COMMIT等操作时可能会出现错误;
6. 可扩展性较差
如果多系统之间 使用DBLINK进行传输,每增加一个系统,都会增加一个或多个DBLINK链接或者修改对应的接口程序,如果修改其中一个接口,需要修改所有关联系统内的接口程序;
7. 维护性差、安全性较低
通过DBLINK进行链接需要将远端数据库用户名、密码、IP地址存在本地数据库,如远端进行密码修改、IP地址变更,本地数据库也需要修改,如果系统较多,每个系统都需要同时修改。切本地数据库管理员能够看到远端数据的密码、IP地址,对系统安全产生影响。

来自 <https://www.cnblogs.com/samuelhu/p/12400543.html>

 

posted @ 2020-11-05 09:55  cqyyck  阅读(3468)  评论(0编辑  收藏  举报