Database Link (DB Link) 是 Oracle 實現分布式查詢的關鍵對象,允許本地會話透明訪問遠程數據庫對象。其本質是一條預定義的網絡路徑與認證信息的組合。
在本地 tnsnames.ora 定義指向遠程數據庫的服務名(如 tobeijing),確保 tnsping tobeijing 通。
-- 創建公共 DB Link(所有用戶可用)
CREATE PUBLIC DATABASE LINK beijing
CONNECT TO scott IDENTIFIED BY tiger
USING 'tobeijing';
-- 查詢遠程表
SELECT * FROM emp@beijing;
在無法修改客戶端配置時,直接在 DDL 中嵌入連接描述符:
CREATE PUBLIC DATABASE LINK DBL_ORCL
CONNECT TO province IDENTIFIED BY province_pwd
USING '(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.10.201)(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = ORCL))
)';
訪問語法: SELECT * FROM province.tj_ryxx@DBL_ORCL;
隱藏 @link 細節,提升代碼可移植性:
CREATE SYNONYM bjscottemp FOR emp@beijing;
-- 之後直接查詢
SELECT * FROM bjscottemp;
| 操作 | SQL 指令 |
|---|---|
| 查看所有 DB Link | SELECT owner, object_name FROM dba_objects WHERE object_type='DATABASE LINK'; |
| 查看詳細連接信息 | SELECT owner, db_link, username, host FROM dba_db_links; |
| 刪除公共 DB Link | DROP PUBLIC DATABASE LINK "TEST.US.ORACLE.COM"; |
| 刪除私有 DB Link | DROP DATABASE LINK link_name; |
distributed_transactions 參數。SDU、TDU 優化傳輸效率。總結: 掌握 Database Link 的創建變體、同義詞封裝及權限模型,是構建 Oracle 分布式應用的基石。建議將連接描述符模板化納入團隊代碼規範。