oracle database link

database link ,我们习惯称为db link。
打算:用于从a数据库暨b数据库里访问的平种手段。类似于 ogg
中的申同步(用户一起)。如上所述,db link
的机要意图是跨库查询。有许多事务还需开展跨库查询。在咱们企业有时即使只好失去去创造有db
link。
优点:创建方式大概、易懂、可以拥有创建用户的持有权限。
短:自然,方便之招便会见产生更多的不利。
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
率先需Oracle查询出来有怎样dblink
select owner,object_name from dba_objects where object_type=’DATABASE
LINK’;
然后使为pubilc 则去方式呢 drop public database link
假若为私有则去方式啊:drop database link

骨子里本质上吧,dblink
并无是一个老复杂的事物。但是由对数据库的震慑。本着能少用就少用的规范。如果能用有些导入导出去替换dblink(我们为正以这么做)。是极其好之。

 

相关文章