Oracle实现不同连接之间的跨库查询,dblink!

实现不同连接之间库的查询互通——dblink

在程序猿的工作中,经常会遇到sql的操作,经常操作sql的工作会遇到这个问题;以下内容提供了:(创建方式),(使用查询),(报错解决)的内容

为何创建?

当一个连接的A库想要访问另一个连接的B库,则两者之间就需要建立关系,而在oracle中就可以通过dblink实现这个功能


如何创建?

  • 1.第一种方式:PLSQL工具创建

打开工具,点开Database links,新建,填写相应内容,点击应用,即可创建

在这里插入图片描述

  • 2.第二种方式:sql语句

在A库sql窗口创建与B库的dblink连接

create database link 别名	--数据库别名
  connect to 数据库用户名 identified by 数据库密码		--分别对应用户名和密码
  using '域名:端口号/数据库实例';	--域名:端口号/数据库实例



--举个例子
create database link linkDb	--数据库别名
  connect to DB_TEST identified by DB_TEST	--分别对应用户名和密码
  using '127.0.0.1:1521/ORCL';	--域名:端口号/数据库实例
  • 3.第三种方式:还是sql语句

在A库sql窗口创建与B库的dblink连接

create database link 别名
    connect to 数据库用户名  identified by 数据库密码	//分别对应用户名和密码
    using '(DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 域名)(PORT = 端口))
        )
        (CONNECT_DATA =
            (SERVICE_NAME = 数据库实例)
        )
    )';

--举个例子
create database link linkDb
    connect to DB_TEST identified by DB_TEST//分别对应用户名和密码
    using '(DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
        )
        (CONNECT_DATA =
            (SERVICE_NAME = orcl)
        )
    )';

如何使用(查询)?

在A库sql窗口查询


select * from B表的@dblink连接;

--举个例子
select * from tableName@linkDb;

报错了,怎么办?

查询中,报错如下:

[66000][12154] ORA-12154: TNS: 无法解析指定的连接标识符

截图如下:

在这里插入图片描述

解决办法——解决办法参考博文

但是问题来了,我并没有安装过Oracle,所以这个时候只要用第三种方式去创建dblink就可以。

如何删除link

DROP PUBLIC DATABASE LINK dblink连接;

DROP PUBLIC DATABASE LINK @linkDb;

希望可以帮助到您

~感谢您的光临~

猜你喜欢

转载自blog.csdn.net/m0_50762431/article/details/123634073
今日推荐