DB Link 用于在一个 Oracle 数据库中访问另一个 Oracle 数据库中的对象(表、视图等),下面分享一下 Oracle 数据库中 DB Link(Database Link)的常用操作汇总,包含查询、创建、使用和删除,并配有必要说明和注意事项,可以高效地管理和使用 Oracle 数据库中的 DB Link,实现跨数据库的数据访问,适合日常运维和开发参考。
查询 DB Link
要查看数据库中的 DB Link,可以使用以下 SQL 语句:
-- 查看当前用户创建的 DB Link
SELECT * FROM USER_DB_LINKS;
-- 查看所有用户的 DBLink(需要DBA权限)
SELECT * FROM DBA_DB_LINKS;
-- 查看当前用户可访问的所有 DBLink
SELECT * FROM ALL_DB_LINKS;创建 DB Link
创建一个新的 DB Link 需要指定远程数据库的连接信息:
-- 创建私有 DBLink(只对创建者可见)
CREATE DATABASE LINK my_dblink
CONNECT TO remote_user IDENTIFIED BY "remote_password"
USING '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA = (SERVICE_NAME = orcl)))';
-- 创建公共 DBLink(所有用户可用,需要管理员权限)
CREATE PUBLIC DATABASE LINK public_dblink
CONNECT TO remote_user IDENTIFIED BY "remote_password"
USING '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA = (SERVICE_NAME = orcl)))';例如:创建一个名为 yunying 的 DB Link(数据库链接)
CREATE DATABASE LINK yunying
CONNECT TO yunying IDENTIFIED BY yunying
USING
'(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.7.104)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = yunying)
)
)';
使用 DB Link
通过 DB Link 查询远程数据库中的表:
SELECT * FROM employees@my_dblink;删除 DB Link
删除已存在的 DB Link:
-- 删除私有 DBLink
DROP DATABASE LINK my_dblink;
-- 删除公共 DBLink(需要管理员权限)
DROP PUBLIC DATABASE LINK public_dblink;常见问题
| 问题 | 说明 |
|---|---|
| ORA-12170 | 网络不通 / 防火墙未放行 |
| ORA-12514 | SERVICE_NAME 错误 |
| ORA-02085 | GLOBAL_NAMES 参数限制 |
| 性能慢 | 远程大表 JOIN、函数调用 |
| 安全风险 | 明文密码、公共 DB Link |

注意事项
1、权限要求:创建或删除公共 DB Link 需要管理员权限。
2、密码大小写:确保密码用双引号括起来,避免大小写问题。
3、DDL 限制:DB Link 不支持跨数据库执行 DDL 操作。
作者:十一张 创建时间:2026-05-27 02:53
最后编辑:十一张 更新时间:2026-05-27 03:19
最后编辑:十一张 更新时间:2026-05-27 03:19