前言

之前学习一直使用的Mysql数据库,现在公司是改用了Oracle数据库。对Oracle数据库的了解还是比较少的,这次接触到了dblink,那就刚好写一篇文章来记录一下。

什么是dblink

dbLink是简称,全称是databaselink,翻译过来就是数据库链接的意思。那么这个dblink的作用是什么呢。它主要是用来做跨库访问的。比如说我现在有一个A数据库,还有一个B数据库,那我我现在想在A库中访问B数据库中的数据。那么我们怎么做。我们就可以在A库中创建一个dblink来链接到B数据库。这样我们在A数据库中就可以直接对B中的数据进行查询,访问,修改。

创建dblink的语法如下:

CREATE PUBLIC DATABASE LINK db_link_name CONNECT TO username IDENTIFIED BY password USING '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =visist_IP)(PORT =visit_port ))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = db_name)
    )
  )';
  --参数说明
  --username 需要访问数据用户名, password  密码, visit_ip  需要访问数据库的ip,visit_port 窗口, db_name数据库名称

如何创建dblink

我们可以按照上述语法,可以先把创建dblink的SQL脚本写好。比如说我现在本机Oracle数据库上有两个库(也可以说两个用户)。分别是test1,test2。密码和用户名一致。

注意,Oracle数据库中一个用户表示一个数据库。和Mysql有一点区别。Mysql是一个root用户,创建连接,然后登录成功后就是自己建数据库的名称。

Oracle数据库,需要先创建一个用户,给这个用户授予相对应的权限。用户创建成功后,登录这个用户,然后进行创建表或其他的一些操作。

现在我想在test1库中创建一个链接test2库的dblink。那么执行脚本就如下:

CREATE PUBLIC DATABASE LINK db_link_test2 CONNECT TO test2 IDENTIFIED BY test2 USING '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =127.0.0.1)(PORT =1521 ))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )';

比如说我们现在test1库里面有一张user表,test2库里面有一张school表。我们想在test1库中执行查询,查到这个school表中的数据。那么我们的sql语句应该怎么写呢?

select t.* from school@db_link_test2 t;

这个语句就可以在test1数据库中查出来test2数据库中的school中的数据。school@db_link_test2 是‘表名’@’数据库链接名’

有创建dblink的方法,当然就有删除dblink的方法,当我们不需要dblink的时候。我们执行下列Sql即可对dblink进行删除。

drop public database link  db_link_test2;

注意一下,我们想要创建dblink前提是该用户有创建dblink的权限。如果没有权限是创建不了dblink的。那么我们只需要给该用户授予相应的权限即可。

grant create public database link to test1;

总结

dblink使用起来还是很方便的。那么我们一般在什么场景下使用dblink等。首先肯定是得有两个数据库的。一般这种情况是涉及到两个系统的对接和交互。这个两个系统都有自己的数据库,他们之间要实现信息的交互,访问。那么我们就可以创建一个dblink来进行访问。

来源;https://www.modb.pro/db/112835

最后修改:2021 年 10 月 01 日
如果觉得我的文章对你有用,请随意赞赏