明白了,阿杰,你想要一份 Oracle DBLINK(数据库链接)创建与使用总结,我帮你整理成一份完整、清晰的总结,包含概念、创建方式、使用场景和注意事项。
🔗 Oracle DBLINK(数据库链接)总结
一、DBLINK 概念
- DBLINK(Database Link) 是 Oracle 提供的一种 跨数据库访问机制
- 允许一个数据库会话 直接访问另一个 Oracle 数据库 的对象(表、视图、序列等)
- 主要特点:
- 跨库访问透明化
- 可以跨实例或跨网络
- 支持只读或可读写(需目标库权限)
二、DBLINK 类型
类型 | 描述 | 创建权限 |
---|---|---|
私有 DBLINK | 当前用户可用,其他用户不可见 | 当前用户 |
公共 DBLINK | 所有用户可用 | DBA |
全局 DBLINK | 通过 TNS 名称或 Easy Connect 定义 | DBA |
三、创建 DBLINK
1️⃣ 基本语法
CREATE [PUBLIC] DATABASE LINK dblink_name
CONNECT TO remote_user IDENTIFIED BY password
USING 'tns_service_name';
PUBLIC
:公共链接,所有用户可用dblink_name
:本地数据库使用的链接名remote_user/password
:目标数据库用户tns_service_name
:目标数据库的 TNS 名称或 Easy Connect 连接串
2️⃣ 示例
私有 DBLINK
-- 本用户创建 DBLINK
CREATE DATABASE LINK hr_link
CONNECT TO hr_user IDENTIFIED BY hr_pass
USING 'ORCLPDB';
公共 DBLINK
-- DBA 创建公共 DBLINK
CREATE PUBLIC DATABASE LINK hr_link_pub
CONNECT TO hr_user IDENTIFIED BY hr_pass
USING 'ORCLPDB';
Easy Connect 示例
CREATE DATABASE LINK hr_link_ec
CONNECT TO hr_user IDENTIFIED BY hr_pass
USING '192.168.1.100:1521/ORCLPDB';
四、使用 DBLINK
1️⃣ 查询远程表
-- 查询远程表
SELECT * FROM employees@hr_link;
2️⃣ 插入远程表
-- 向远程表插入数据
INSERT INTO employees@hr_link(emp_id, emp_name)
VALUES (101, 'Jack');
3️⃣ 更新/删除远程表
-- 更新远程表
UPDATE employees@hr_link
SET emp_name = 'John'
WHERE emp_id = 101;
-- 删除远程表数据
DELETE FROM employees@hr_link
WHERE emp_id = 101;
4️⃣ 与本地表联合查询
SELECT l.emp_id, l.emp_name, d.dept_name
FROM employees@hr_link l
JOIN departments d ON l.dept_id = d.dept_id;
五、管理与维护
1️⃣ 查看 DBLINK
-- 当前用户 DBLINK
SELECT db_link, username, host
FROM user_db_links;
-- 公共 DBLINK
SELECT db_link, username, host
FROM all_db_links;
-- DBA 查看
SELECT db_link, username, host
FROM dba_db_links;
2️⃣ 删除 DBLINK
-- 私有
DROP DATABASE LINK hr_link;
-- 公共
DROP PUBLIC DATABASE LINK hr_link_pub;
六、注意事项
- 权限
- 远程用户必须有访问对象的权限
- 本地用户需要 DBLINK 访问权限
- 性能
- 跨库操作涉及网络开销
- 大量数据操作建议使用批量方式或 ETL 工具
- 安全
- 密码在 DBLINK 中明文保存,注意权限和审计
- 公共 DBLINK 风险更高,需谨慎
- 事务处理
- 单库事务可自动提交
- 跨库事务需使用分布式事务管理(如 Oracle 2PC / XA)
七、使用场景总结
场景 | 说明 |
---|---|
数据库集成 | 不同库之间直接查询和操作 |
ETL / 数据迁移 | 从源库批量导入数据到目标库 |
分布式应用 | 多数据库统一访问 |
报表 / BI | 汇总多个数据库数据 |
✅ 总结
- DBLINK 是 Oracle 提供的跨库访问工具
- 私有、公共、全局三种类型
- 支持 SELECT、INSERT、UPDATE、DELETE 等操作
- 使用需注意权限、安全和性能
发表回复