dblink的型別

zhangsharp20發表於2014-12-14
分散式資料庫體系相當的簡單,就是兩個資料庫,其中一個是ORACLE,另一個隨便是不是ORACLE,在oracle上建立dblink到另一個資料庫,這就是最簡單的。當然你可以使用多個資料庫,互相建立db_link.或者你也可以使用一個目錄伺服器.自動建立和管理db_link.分散式資料庫是高階複製的基礎.
         有關db_link。
         所謂的db_link有多種形式。可以是public的,也可以是private的,也可以是global的。
    
private的沒有什麼講頭。這種db_link只能由建立db_link的本地使用者或者他的pl/sql塊來存取。其他的使用者都不能存取。
       public就比較好了。對所有的使用者可見。所有使用者都可以使用。
       global  當分散式體系中存在多個資料庫的話。如果想要在每一個資料庫中都可以使用同樣的名字來訪問資料庫a,那在每個資料庫中都要建立一個到資料庫a的db_link,太麻煩了。所以現在有這個東東。你只要建立一次。所有的資料庫都可以使用這個db_link來訪問了。要使用這個特性,必須有oracle name server或者ORACLE目錄伺服器。並且資料庫a的引數global_names=true.具體我也沒有建立過,沒有這個環境。
       針對public的dblink,存取db_link的使用者,在建立db_link的時候就已經可以指定使用者的認證方式了。
有三種。 current user,fixed user,connected user.
       最好用的就是fixed user,建立時指定連線遠端資料庫的使用者名稱和密碼並存在資料字典裡。以後所有的使用dblink 的使用者實際上都是使用這個使用者名稱和密碼來登入到遠端資料庫的,在遠端資料庫的許可權和這個使用者一樣。當然許可權上就有點不好控制,
       create public database link aaa connected testmvb identified by testmvb using 'remotedb';
         第二個好理解的是 connected  user.建立這種dblink的時候沒有指定連線使用者。認證什麼的沒有儲存在資料字典裡面,使用這種dblink的時候,你連線本地庫的使用者就是你連線遠端庫的使用者。這種就是說,使用者在本地庫和遠端庫都需要存在並具有許可權。
         這種使用者認證要考慮遠端資料庫怎麼驗證使用者。是使用密碼驗證,作業系統驗證還是使用網路驗證。當使用外部驗證的時候,還需要遠端庫的引數
REMOTE_OS_AUTHENT=TRUE
         第三種就是current user.
         這種的建立db_link的使用者必須是全域性使用者。其他的東西和fixed_user一樣。
          建立 dblink的步驟,當然你可以使用連線字串,一般先在本地的tnsname.ora檔案中配置一下到遠端資料庫的解析.比方我配的遠端別名是testmvb,
建立一個public使用fixed user名字為aa的dblink 語句如下
create public database link aa connect to scot indentied by tiger using 'testmvb'
建立current user的
create public database link aa connect to current user using 'testmvb';
床架connected user 的
create public database link aa connect to connected user using 'testmvb';
建立完後測試 使用select * from dual@aa成功就ok啦。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29802484/viewspace-1367621/,如需轉載,請註明出處,否則將追究法律責任。

相關文章