温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

数据库DB Link怎么用

发布时间:2026-07-02 23:01:56 来源:亿速云 阅读:84 作者:小樊 栏目:数据库

数据库 DB Link(数据库链接) 用来在 一个数据库实例中访问另一个数据库实例的对象(表、视图等)。不同数据库用法不一样,下面我按 Oracle / PostgreSQL / MySQL 分别说明,并给出常见用法和注意事项。


一、Oracle 中的 DB Link(最常见)

1️⃣ 创建 DB Link

基本语法

CREATE DATABASE LINK dblink_name
CONNECT TO remote_user IDENTIFIED BY "remote_password"
USING 'tns_name';

或用完整连接描述:

CREATE DATABASE LINK dblink_name
CONNECT TO remote_user IDENTIFIED BY "remote_password"
USING '(DESCRIPTION=
        (ADDRESS=(PROTOCOL=TCP)(HOST=remote_host)(PORT=1521))
        (CONNECT_DATA=(SERVICE_NAME=orcl)))';

2️⃣ 使用 DB Link 查询

SELECT * FROM remote_table@dblink_name;

✅ 可以像本地表一样使用:

SELECT a.id, b.name
FROM local_table a
JOIN remote_table@dblink_name b
ON a.id = b.id;

3️⃣ 创建同义词(可选)

CREATE SYNONYM remote_emp FOR emp@dblink_name;
SELECT * FROM remote_emp;

4️⃣ 查看 / 删除 DB Link

-- 查看
SELECT * FROM user_db_links;

-- 删除
DROP DATABASE LINK dblink_name;

5️⃣ 常见用途

  • 跨库查询
  • 数据同步 / ETL
  • 分布式事务
  • 报表汇总

二、PostgreSQL 中的 DB Link

PostgreSQL 使用 dblink 扩展

1️⃣ 启用扩展

CREATE EXTENSION IF NOT EXISTS dblink;

2️⃣ 使用 dblink 查询

SELECT *
FROM dblink(
    'host=192.168.1.10 dbname=test user=testuser password=123456',
    'SELECT id, name FROM remote_table'
) AS t(id int, name text);

3️⃣ 创建视图(常用)

CREATE VIEW remote_view AS
SELECT *
FROM dblink(
    'host=192.168.1.10 dbname=test user=testuser password=123456',
    'SELECT id, name FROM remote_table'
) AS t(id int, name text);

4️⃣ 注意事项

  • 每次查询都会建立连接(性能注意)
  • 不支持事务跨库(除非用 FDW)

推荐方式:postgres_fdw

CREATE SERVER remote_server
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname 'test', host '192.168.1.10');

CREATE USER MAPPING FOR current_user
SERVER remote_server
OPTIONS (user 'testuser', password '123456');

三、MySQL 中的“DB Link”

⚠️ MySQL 没有真正的 DB Link

常见替代方案

✅ 1. FEDERATED 引擎(不推荐)

CREATE TABLE remote_table (
  id INT
)
ENGINE=FEDERATED
CONNECTION='mysql://user:pwd@host:3306/db/table';

缺点:

  • 不稳定
  • 性能差
  • 高版本已废弃

✅ 2. 应用层 / 中间件

  • 程序里分别连两个库
  • 使用 MyCat / ShardingSphere

四、DB Link 常见问题

❓ 1. 权限不足

ORA-01031: insufficient privileges

✅ 需要:

GRANT CREATE DATABASE LINK TO user;

❓ 2. 性能问题

  • 大表避免直接 JOIN
  • 先拉小结果集
  • 使用物化视图

❓ 3. 分布式事务

Oracle 支持,但配置复杂,建议慎用。


五、总结对比

数据库 DB Link 支持 推荐方式
Oracle ✅ 原生 CREATE DATABASE LINK
PostgreSQL ✅ 扩展 postgres_fdw
MySQL ❌ 不支持 应用层 / 中间件

如果你能告诉我:

  • 用的是 哪种数据库
  • 服务器 / 跨服务器
  • 是否用于 查询 / 同步 / 报表

我可以给你一个 完全贴合你场景的示例

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI