天天看點

oracle database link mysql_在Oracle下如何建立database link 實踐

實體上存放于網絡的多個Oracle資料庫,邏輯上可以看成一個單一的大型資料庫,使用者可以通過網絡對異地資料庫中的資料進行存取,而

實體上存放于網絡的多個Oracle資料庫,邏輯上可以看成一個單一的大型資料庫,使用者可以通過網絡對異地資料庫中的資料進行存取,而伺服器之間的協同處理

對于工作站使用者及應用程式而言是完全透明的,開發人員無需關心網絡的連結細節、資料在網絡節點中的具體分布情況和伺服器間的協調工作過程。資料庫之間的鍊

接建立在DATABASE LINK上。要建立一個DATABASE LINK,必須首先在建立連結的資料庫上設定連結字元串,即配置一個遠端資料庫的本地網絡服務名。

資料庫全局名稱可以用以下指令查出:

SQL>SELECT * FROM GLOBAL_NAME;

修改可以用以下語句來修改參數值:

SQL>ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

oracle資料庫之間進行連接配接通訊:

建立資料庫連結的文法如下:

CREATE [PUBLIC] DATABASE LINK link_name

CONNECT TO username IDENTIFIED BY password

USING 'zytydic'

其中:

zytydic為本地tnsname.ora中定義的連結串,内容如下:

zytydic =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))

)

(CONNECT_DATA =

(SID = orcl)

)

)

注意:建立資料庫連結的帳号必須有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系統權限,用來登入到遠端資料庫的帳号必須有CREATE SESSION權限。

這兩種權限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK權限在DBA中)。一個公用資料庫連結對于資料庫中的所有使用者都是可用的,,而一個私有連結僅

對建立它的使用者可用。由一個使用者給另外一個使用者授權私有資料庫連結是不可能的,一個資料庫連結要麼是公用的,要麼是私有的。

建立資料庫連結時,還可以使用預設登入方式,即不指定遠端資料庫的使用者名和密碼:

create public database link test_default_type_dblink

using 'zytydic';

在不指定使用者名和密碼的情況下,ORACLE使用目前的使用者名和密碼登入到遠端資料庫,假如你本地是以emcd使用者登入的本地的資料庫db_A,那麼建立的DB

Link test_default_type_dblink就是以本地的使用者賬戶資訊建立的,當要以此DB Link連接配接檢視遠端的資料庫db_B的資料資訊時,前提必須是db_B上也有

同樣的賬戶存在,即db_B上也有賬戶emcd且密碼和db_A上的emcd的密碼也是一緻的,否則此DB Link不可用。USING後面指定的是連結字元串,也就是遠端

資料庫的網絡服務名,這個服務名儲存在TNSNAMES.ORA檔案中,在該檔案中定義了協定、主機名、端口和資料庫名。

如果有兩台資料庫伺服器db_A和db_B,db_A下使用者user_a需要用database link通路到db_B下user_b的資料時,有如下步驟:

(a).首先使用者user_b,這個使用者必須要有select 權限.

(b).在db_A上的tnsnames.ora中需要建立一個連接配接字元串,即上面的zytydic,可以從db_A連接配接到db_B.

(c).然後在登陸到db_A上建立db link,格式如下:

create database link link_A_to_B_name connect to user_b identified by user_b的password using 'tnsname_AtoB';

tnsname_AtoB就是到tnsname.ora中遠端主機的連接配接字元串

在我自己的機子上建立的實際的DB Link SQL語句如下:

create database link taowei_to_101 connect to ga_bzk identified by ga_bzk using 'zytydic';

(d).測試是否能夠讀取資料.

select * from [email protected]_AtoB_name結果為:DUMMY X表示設定成功

這時候就可以通過taowei_to_101檢視遠端主機上相關的資料資訊了:

select * from [email protected]_to_101;

删除資料庫連結的語句是:

DROP [PUBLIC] DATABASE LINK taowei_to_101

資料庫連結的引用

一般情況下引用資料庫連結,可以直接将其放到調用的表名或視圖名稱後面,中間使用一個 @ 作為分割符:

SELECT * FROM [email protected]_to_101;

對于經常使用的資料庫連結,可以建立一個本地的同義詞,友善使用:

CREATE SYNONYM tbl_bjflb__syn FOR [email protected]_to_101;

還可以建立一個本地的遠端視圖,友善使用:

CREATE VIEW tbl_bjflb AS SELECT * FROM [email protected]_to_101 where… ;

現在本視圖可與本地資料庫中的任何其它視圖一樣對待,也可以授權給其它使用者,通路此視圖,但該使用者必須有通路資料庫連結的權限。

對于另外一種情況,所要通路的表不在資料庫連結中指定的遠端帳戶下,但該帳戶有通路該表的權限,那麼我們在表名前要加上該表的使用者名:

SELECT * FROM [email protected]_to_101 ;

還可以建立快照(snapshot)通過dblink實作遠端資料自動傳輸。

檢視所有的資料庫連結,進入系統管理者SQL>操作符下,運作指令:

SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';

oracle database link mysql_在Oracle下如何建立database link 實踐
oracle database link mysql_在Oracle下如何建立database link 實踐

本文原創釋出php中文網,轉載請注明出處,感謝您的尊重!