首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle Database Link 跨服務器訪問配置實戰:創建與使用全指南

     編輯:Oracle 資料庫基礎

前言

跨數據庫查詢是分佈式應用常見需求。Oracle Database Link(DB Link)提供透明的遠程表訪問能力。本文詳細演示創建 Public Database Link 的完整語法、TNS 連接串配置、權限控制與常見錯誤排查。

創建 Database Link 標準語法

CREATE PUBLIC DATABASE LINK link_name
CONNECT TO remote_user IDENTIFIED BY "password"
USING '(DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
  )
  (CONNECT_DATA =
    (SERVICE_NAME = ora9i)
  )
)';

參數詳解

子句說明示例
PUBLIC所有用戶可用;省略則為私有 DB LinkPUBLIC
link_name鏈接名,本地引用遠程對象時使用test_link
CONNECT TO ... IDENTIFIED BY遠程數據庫認證用戶/密碼test / "test"
USING '...'TNS 連接描述符(長字符串)見上完整示例

簡化寫法:引用 TNSNAMES.ORA 別名

若本地 tnsnames.ora 已配置別名 REMOTE_DB:

CREATE PUBLIC DATABASE LINK test_link
CONNECT TO test IDENTIFIED BY "test"
USING 'REMOTE_DB';

更易維護,IP/端口/SID 變更只需改 tnsnames.ora。

使用示例

-- 查詢遠程表
SELECT * FROM employees@test_link;

-- 跨庫 JOIN
SELECT e.ename, d.dname
FROM emp@test_link e, dept d
WHERE e.deptno = d.deptno;

-- DML 操作(需遠程用戶有權限)
INSERT INTO table@test_link VALUES (...);

權限與安全

  • 創建 PUBLIC DB Link 需 CREATE PUBLIC DATABASE LINK 系統權限(通常 DBA 擁有)。
  • 私有 DB Link 需 CREATE DATABASE LINK。
  • 遠程用戶權限決定可執行操作(只讀/讀寫)。
  • 生產環境建議:專用只讀用戶、密碼定期輪換、網絡層面限制訪問源 IP。

常見錯誤與排查

錯誤原因解決
ORA-12154: TNS:could not resolveUSING 字符串格式錯誤或 tnsnames.ora 別名不存在檢查括號匹配、HOST/IP、SERVICE_NAME/SID;tnsping 測試
ORA-12514: Listener does not currently know of service遠程 SERVICE_NAME 拼寫錯誤或未註冊遠程執行 lsnrctl status 確認服務名
ORA-01017: invalid username/password認證信息錯誤核對遠程用戶/密碼,注意大小寫與特殊字符轉義
ORA-02019: connection description for remote database not found私有 DB Link 未指定 USING 或 USING 為空補全 USING 子句

進階:固定用戶 vs 當前用戶 DB Link

  • 固定用戶(本文示例):CONNECT TO user IDENTIFIED BY pwd,所有使用者以同一遠程身份連接。
  • 當前用戶:CREATE PUBLIC DATABASE LINK ... CONNECT TO CURRENT_USER USING ...,需雙向信任(Enterprise User Security / SSL),用戶以自身身份在遠程認證。

總結

Database Link 是 Oracle 跨庫訪問的基石。掌握「完整 TNS 描述符」與「tnsnames.ora 別名」兩種創建方式,配合權限最小化原則,即可安全高效實現分佈式查詢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved