Oracle实现不同连接之间的跨库查询,dblink!
# 实现不同连接之间库的查询互通——dblink
**`在程序猿的工作中,经常会遇到sql的操作,经常操作sql的工作会遇到这个问题;以下内容提供了:(创建方式),(使用查询),(报错解决)的内容`**
### 为何创建?
当一个连接的A库想要访问另一个连接的B库,则两者之间就需要建立关系,而在oracle中就可以通过dblink实现这个功能
***
### 如何创建?
- **1.第一种方式:PLSQL工具创建**
**打开工具,点开Database links,新建,填写相应内容,点击应用,即可创建**

- **2.第二种方式:sql语句**
**在A库sql窗口创建与B库的dblink连接**
```sql
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连接**
```sql
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窗口查询**
```sql
select * from B表的@dblink连接;
--举个例子
select * from tableName@linkDb;
```
***
### 报错了,怎么办?
查询中,报错如下:
```
[66000][12154] ORA-12154: TNS: 无法解析指定的连接标识符
```
截图如下:

解决办法——[解决办法参考博文](https://blog.csdn.net/itsonglin/article/details/46431507)
**但是问题来了,我并没有安装过Oracle,所以这个时候只要用第三种方式去创建dblink就可以。**
如何删除link
```sql
DROP PUBLIC DATABASE LINK dblink连接;
DROP PUBLIC DATABASE LINK @linkDb;
```
***
**希望可以帮助到您**
## `~感谢您的光临~`
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统