古詩詞大全網 - 成語故事 - 數據庫基礎:教妳輕松掌握數據庫鏈路的建立和使用[1]

數據庫基礎:教妳輕松掌握數據庫鏈路的建立和使用[1]

 壹 數據庫鏈路的建立

  數據庫鏈路的建立語法壹般是 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