让人爱恨交加的跨库ORACLE DBLINK

简介: 笔记

DBLINK简介及使用


1、ORACLE DBLINK简介


ORACLE DBLINK(数据库链接)顾名思义为数据库之间的中间桥梁,用于链接两个数据库,打破两个数据库的壁垒。对使用人员来说可以在一个数据库直接访问到其他已建立dblink的数据库,通过在查询表后面增加类似@“dblink名称”就可直接访问其他数据库表数据,即表名+@+dblink 名字,用于进行数据流转及数据分析等。如图1-1所示,“zwcs”是我已经创建好访问测试环境的dblink,当我们在其他数据库需要访问测试数据库中的表数据时,直接使用dblink的方式就相当方便。

1.png


                                            图1-1dblink方式访问其他数据库的数据


2、dblink的使用


2.1 dblink的创建


首先执行“select * from user_sys_privs where privilege like upper('%DATABASE LINK%')”语句查询当前用户有无dblink创建、删除权限;若有返回行证明有对应权限,sys用户默认有创建dblink的权限。若无返回行,使用sys用户执行“grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK,CREATE DATABASE LINK  to 用户名;”语句为对应用户授予创建公共dblink、删除公共dblink的权限;如图2-1所示用户ZWBI已有创建删除dblink权限。

2.png


                                                             图2-1查询用户dblink权限


赋予用户对应dblink权限后,用户即可创建dblink来访问不同数据库的数据。创建dblink有两种方式一种是使用执行SQL语句,一种是通过pl/sq来创建;SQL语句的创建方式:


'-- Create database link


create public database link dblinkname--创建一个公共dblink


 connect to username  identified by password--访问的对应用户名,密码


 using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST =ip )(PORT =db_port)))(CONNECT_DATA =(SERVICE_NAME =orcl)))';


参数说明dblinkname dblink名称,username访问数据库用户名,password访问数据库用户名密码,ip 访问数据库地址,db_port 访问数据库端口号,orcl访问数据库实例名。


PL/SQ创建方式:

3.png4.png

应用后对应自动生成的SQ如下所示


-- Drop existing database link


drop public database link TEST1;


-- Create database link


create public database link TEST1


 connect to T1


 using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST =10.256.9.20)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME =orcl)))';


2.2 dblink的使用


语法:表名+@+dblink名字

5.png

2.3删除dblink


语法:drop (public) database link  dblink名字。


dblink性能分析


1、优点


Dblink对于用户来说无需在乎数据库的物理布局,将各数据库连成一个整体,非常方便用户进行数据的访问与分析,为数据库的跨库实时查询提供了一个很好的解决方案。


2、缺点


Dblink有效的解决了跨库查询的问题,但同时也带来了性能方面的问题,在oracle中调用一次dblink就会新建一个事务,如不及时释放,会导致占用比较多的表空间,有可能造成表空间不足的问题,需在所有调用dblink语句后面加上 commit 或者 rollback;

7.png

Dblink在进行排序与复杂的链接查询时的效率相对较低。由于使用DBLINK,本地系统在获取数据时,每次链接都会对远端数据库进行一次全表扫描,且所有数据都会传输回本地数据库内,导致性能降低并且严重浪费当前系统资源。尤其出现一条sql语句从两个DBLINK中取数,更被称之为“性能杀手”,尤其是OLTP型数据库。


总结


针对上述我们对dblink的了解,我们可以针对不同的应用场景来灵活应用dblink,当我们访问的数据量不大,或者访问的频率不高或者主要用于实时性分析的业务场景,这时候可考虑采用dblink的方式来进行系统集成的数据访问和数据分析。Dblink提供了一种不同数据库访问的解决方案,当然我们也可以扩展对应dblink链接的应用,比如通过dblink和数据库快照结合的方式来实现数据的同步等。从目前个人使用dblink的经验来说,当企业数据仓库的数据量小于I TB时dblink的表现还是杠杠的。最后,这篇文章不妥之处,欢迎大家多多指正,大家关于数据库的数据交互有其他的更友好的访问方式欢迎大家多多讨论,共同进步,做数据的同路人。


相关文章
|
Oracle 关系型数据库 流计算
Flink CDC不支持直接连接到Oracle ADG备库进行数据同步
Flink CDC不支持直接连接到Oracle ADG备库进行数据同步
320 1
|
7月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之和Oracle数据同步必须是使用主库吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
实时计算 Flink版产品使用合集之和Oracle数据同步必须是使用主库吗
|
2月前
|
Oracle 关系型数据库 MySQL
shell获取多个oracle库mysql库所有的表
请注意,此脚本假设你有足够的权限访问所有提到的数据库。在实际部署前,请确保对脚本中的数据库凭据、主机名和端口进行适当的修改和验证。此外,处理数据库操作时,务必谨慎操作,避免因错误的脚本执行造成数据损坏或服务中断。
43 0
|
5月前
|
Oracle 关系型数据库 Linux
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
通过这一连串的步骤,可以专业且有效地在Linux下为Qt编译Oracle驱动库 `libqsqloci.so`,使得Qt应用能够通过OCI与Oracle数据库进行交互。这些步骤适用于具备一定Linux和Qt经验的开发者,并且能够为需要使用Qt开发数据库应用的专业人士提供指导。
169 1
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
|
7月前
|
Oracle Java 关系型数据库
实时计算 Flink版产品使用合集之支持 Oracle 整库同步吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
SQL 消息中间件 Oracle
实时计算 Flink版产品使用合集之怎么同步Oracle备库
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
Oracle 关系型数据库 数据库
Flink CDC中oracle dataguard模式下,有没有cdc备库的方案?
Flink CDC中oracle dataguard模式下,有没有cdc备库的方案?
193 1
|
7月前
|
存储 Oracle 关系型数据库
百度搜索:蓝易云【oracle dblink mysql查询text无法显示问题】
通过使用 `DBMS_HS_PASSTHROUGH` 包执行 MySQL 查询并返回 CLOB 类型结果,可以解决 Oracle 数据库中无法直接显示 MySQL TEXT 类型数据的问题。
84 0
|
Oracle 关系型数据库 Apache
一键实现 Oracle 数据整库同步至 Apache Doris
极大降低数据同步门槛,使数据同步变得更加简单高效
一键实现 Oracle 数据整库同步至 Apache Doris
|
存储 XML SQL
Oracle 数据库自动诊断库 ADR(Automatic Diagnostic Repository)简介 发表在 数据和云
Oracle 数据库如果出现故障,我们的第一个反应是查看数据库的 alert log,但一些工程师对 alert log 不熟悉,实际上 alert log 位于Oracle 数据库自动诊断库(Automatic Diagnostic Repository,以下简称 ADR) 中,要熟悉 alert log,我们必需全面了解 ADR 的概念。
291 0

推荐镜像

更多