一數據庫鏈路的建立
數據庫鏈路的建立語法一般是CREATE DATABASE LINK [db_link_name] CONNECT TO
[user_name] IDENTIFIED BY [password] USING [tns_name];
其中:
[DB_LINK_NAME]是所要連接的數據庫的服務名也就是該數據庫的真實名稱(通常就是SID)
[USRE_NAME]是所要連接的用戶名稱
[PASSWORD]是所要連接的用戶的密碼
[TNS_NAME]是所要連接的數據庫的服務命名也就是在本機上建立的NET服務命名
當使用當前用戶做為連接者時語法可以是CREATE DATABASE LINK [db_link_name] CONNECT TO CURRENT_USER USING [tns_name] (某些情況下這種方法建立的數據庫鏈路都未處於活動狀態不知道是不是語法有誤暫不推薦使用)
當使用已連接用戶做為連接者時語法可以是CREATE DATABASE LINK [db_link_name]
USING [tns_name]
要建立公共的數據庫鏈路語法可以是只要在CREATE後加PUBLIC關鍵字就可以了
假如你在initora文件裡的global_names = true只能用上面的方法如果global_names =false[DB_LINK_NAME]不一定要是數據庫的真實名稱可以是一個隨意的名字也就是說當global_names = true時數據庫的每一個用戶只能有一個數據庫鏈路而當global_names = false時每一個用戶都可以建立N多個鏈路但一般情況下是沒有意義的
二數據庫鏈路的使用
數據庫鏈路的主要用途就是實現對遠程數據庫的訪問你可以通過數據庫鏈路直接對遠程數據庫
的表進行讀寫也可以在本地建立遠程數據庫的視圖和同意詞另外在進行雙機熱備份時也要用到數據庫鏈路
直接訪問SELECT * FROM [user_name][table_name]@[db_link_name];INSERTUPDATEDELETE等也同樣適用
建立同義詞CREATE SYNONYM [user_name][synonym_name] FOR [user_name][table_name]@
[db_link_name] ; 視圖也是一個道理
由於雙機熱備是另一個復雜的問題本文暫不贅述如果想在兩個數據庫間實現幾個表的同步做一個雙機太復雜可以考慮用觸發器來解決在觸發器中用以上方法引用遠程表對其進行插入刪除也可以做到同步
參考示例如下
數據庫之間的鏈接建立在DATABASE LINK上要創建一個DB LINK必須先在每個數據庫服務器上設置鏈接字符串
鏈接字符串即服務名首先在本地配置一個服務名地址指向遠程的數據庫地址服務名取為將來你要使用的數據庫鏈名
創建數據庫鏈接
進入系統管理員SQL>操作符下運行命令
SQL>create public database link beijing connect to scott identified by tiger using tobeijing;
則創建了一個以scott用戶和北京數據庫的鏈接beijing我們可以查詢北京的scott數據:
SQL>select * from emp@beijing;
這樣就可以把深圳和北京scott用戶的數據做成一個整體來處理
建立同義詞為了使有關分布式操作更透明ORACLE數據庫裡有同義詞的對象synonym
SQL>create synonym bjscottemp for emp@beijing;
於是就可以用bjscottemp來替代帶@符號的分布式鏈接操作emp@beijing
[] []
From:http://tw.wingwit.com/Article/program/SQL/201311/16235.html