壹 數據庫鏈路的建立
數據庫鏈路的建立語法壹般是 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關鍵字就可以了
假如妳在init ora文件裏的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];INSERT UPDATE DELETE等也同樣適用
建立同義詞 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
lishixinzhi/Article/program/SQL/201311/16235