Oracle 快速建立 Database Link:單一 SQL 範本免配置 tnsnames.ora
傳統建立 DB Link 需要遠端監聽就緒、本地配置 tnsnames.ora、確認 GLOBAL_NAMES 參數,步驟繁瑣。本文提供一條自包含連線描述符的 CREATE DATABASE LINK 範本,直接在 SQL 中指定主機、埠、服務名,無須修改網路設定檔,適合快速測試與臨時跨庫查詢。
範本 SQL
CREATE PUBLIC DATABASE LINK mydblink
CONNECT TO hyl IDENTIFIED BY hyl
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.88)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = prod)
)
)';
參數說明
| 子句 | 範例值 | 說明 |
mydblink | 自訂 DB Link 名稱 | 全域唯一,供 SELECT * FROM table@mydblink 使用 |
CONNECT TO hyl | 遠端用戶 | 遠端資料庫存在的用戶帳號 |
IDENTIFIED BY hyl | 遠端密碼 | 明文寫在 SQL 中,生產環境建議用 Wallet 儲存憑證 |
HOST = 192.168.1.88 | 遠端 IP/主機名 | 確保網路可達、防火牆開放 1521 |
PORT = 1521 | 監聽埠 | 非預設埠需對應修改 |
SERVICE_NAME = prod | 服務名 | 遠端 SHOW PARAMETER SERVICE_NAME 確認 |
驗證與使用
-- 測試連線
SELECT * FROM dual@mydblink;
-- 跨庫查詢
SELECT e.ename, d.dname
FROM emp@mydblink e, dept@mydblink d
WHERE e.deptno = d.deptno;
進階選項
- 私有 DB Link:移除
PUBLIC 關鍵字,僅建立者可見。
- 共用 DB Link:
CREATE SHARED PUBLIC DATABASE LINK ... AUTHENTICATED BY user IDENTIFIED BY pwd,減少連線數。
- 全域名稱強制:若
GLOBAL_NAMES=TRUE,DB Link 名稱必須等於遠端 GLOBAL_NAME,否則報 ORA-02085。
常見錯誤