oracle database link

database link ,大家习惯称为db link。
作用:用于从a数据库到b数据库之间访问的一种手段。类似于 ogg
中的表同步(用户一起)。如上所述,db link
的主要性意义是跨库查询。有广大作业都亟需开展跨库查询。在大家商家有时就不得不去去创建一些db
link。
优点:创立格局不难、易懂、可以拥有创造用户的持有权限。
缺陷:自然,方便的一手就会有越多的不利。
Oracle,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地址,对系统安全暴发潜移默化
只是,就算是在缺陷这么这么多的情事下,如故会有人用,追根究底,个人感觉依然oracle对多少个库之间的竞相做的并不是特意好,ogg
好用是好用,可是在表多的状态下,我们只是深受其害。

用法:创制dblink的先决条件便是三个库要能交互(local database to remote
database)网络要能连接正常,其次。要在源端数据库tnsname
文件中布置上访问目的的参数。并且能 tnsping 通。
database link 分为二种:一种为 public(公有) 一种为
private(个人)。顾名思义,公有dblink即源库所有的用户都足以动用,个人dblink则唯有制造者用户可以选拔。
创制dblink是要有照应的权限的。
select * from user_sys_privs where privilege like upper(‘%LINK%’);
USERNAME PRIVILEGE ADM



SYS CREATE DATABASE LINK NO
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
CREATE DATABASE LINK 为开创个人dblink权限。
CREATE PUBLIC DATABASE LINK 为创建公有dblink 权限。

创建dblink
当tnsnames中有了参数。且有了相应的权力之后,就可以创设dblink。成立形式有以下两种。

创建个人dblink语句为 CREATE database link 伊始:
应用当前用户的用户名和密码去老是远程数据库。借使密码不对会报错
create database link test1 using ‘test’;

创设公有dblink语句CREATE PUBLIC database link
动用指定的用户和密码创立公有 dblink
create public database link test3 connect to scott identified by tiger
using ‘test’;

建一个shared 的数据库连接
create shared public database link test4 connect to scott identified by
“tiger” authenticated by username identified by “passwd” using ‘test’;
运用shared格局的 database
link是数据库会限制到长途数据库的连日的多少,这样以幸免过多的连年对长途数据库造成太大的压力。

再有一种创立格局是不使用tnsname的境况
CREATE database link link_name
CONNECT TO user IDENTIFIED BY screct
USING ‘(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sales)
)
)’;

删除dblink
首先须要查询出来有如何dblink
select owner,object_name from dba_objects where object_type=’DATABASE
LINK’;
接下来假设为pubilc 则删除格局为 drop public database link
只要为私有则删除格局为:drop database link

实质上本质上的话,dblink
并不是一个很复杂的东西。可是出于对数据库的震慑。本着能少用就少用的标准化。如果能用一些导入导出去替换dblink(大家也正在这么做)。是最好的。

 

相关文章