Orace DB Link

數據庫鏈接定義從一個Oracle數據庫到另一個數據庫的單行通信通道。
    
  建立鏈接前要先有到遠程數據庫的命名服務(連接字符串),就是tnsnames.ora中描述的那個,如'ebank2'
  先測試一下:$tnsping ebank2
  Attemping to contact(...) OK(30毫秒).
  說明對遠程數據庫ebank2可訪問。
    
  創建數據庫鏈接的語法爲:
  CREATE PUBLIC DATABASE LINK db.cvs USING 'ebank2';(注意:必須用雙引號引起
  其中 db.cvs 必須是遠程數據庫的全局名(SID),'ebank2'就是到遠程的連接字符串。遠程數據庫的全局名可以通過登陸遠程機,
  SELECT * FROM cb_tranflow;
  得到。
    
  現在你就可以用鏈接db.cvs訪問遠程數據庫了
  如
  SELECT * FROM [email protected];
  看看得到的是不是遠程數據庫中的內容.
  所有SELECT 語句後面跟上鍊接名都是對遠程機的訪問。
    
  注意:登陸名口令就是當前登陸本機的用戶名和口令。也就是如果你用的是public鏈接,那麼在遠程就要有一個和本機相同的用戶/口令才行。如:你以aaa/aaa登錄本機,然後執行
  SELECT * FROM [email protected];
  那麼對遠程數據BBB.bbb的訪問用戶爲aaa口令爲aaa
  也就是在本機和遠程機上都有用戶aaa口令都爲aaa才能執行成功!如果要以另外的用戶鏈接,這種鏈接稱之爲私有鏈接,其創建的語法爲:
  CREATE DATABASE LINK db.cvs CONNECT TO ebank IDENTIFIED BY ebank using 'ora.cvs';
  這就建立了ebank的私有鏈接。
  私有鏈接和public鏈接的差別就是登錄名口令的限制。也就是
  你不管用什麼用戶登錄本機,執行
  SELECT * FROM [email protected];
  訪問遠程機數據BBB.bbb的用戶和口令都爲ebank/ebank
    
  建好的數據鏈接放在系統表SYS.link$表中
  通過OEM控制檯的 分佈-〉數據庫鏈接可以查看所有的鏈接。
select owner,object_name from dba_objects where object_type='DATABASE LINK';
    
  要刪除public link 可以
  drop public database link linkname;

  對於私有鏈接先以相應用戶登陸,如上述system/aaa
  然後drop database link linkname;      
  當然,直接刪除SYS.link$表中的記錄一樣可行。
 

oracle數據庫裏有同義詞的對象synonym,通過建立synonym可以透明地使用分佈式數據庫上的內容。建立語法:create synonym cvsData for [email protected]就可以像使用本地數據表一樣使用數據庫鏈接中的表cb_tranflow。  

ref: 1. http://fengyu.china.com/dblink.htm
       2. http://www.c114.net/study/articlesread.asp?articleid=613

發佈了28 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章