物理上存放於網路的多個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注意:建立資料庫鏈結的帳號必須有create database link或create public database link的系統許可權,用來登入到遠端資料庫的帳號必須有create session許可權。= (
description
= (
address_list
= (
address
= (protocol
= tcp
)(host
= 192
.168.1.101)(
port
= 1521
))
) (
connect_data
= (
sid=
orcl
) )
)
這兩種許可權都包含在connect角色中(create public database link許可權在dba中)。乙個公用資料庫鏈結對於資料庫中的所有使用者都是可用的,而乙個私有鏈結僅對建立它的使用者可用。由乙個使用者給另外乙個使用者授權私有資料庫鏈結是不可能的,乙個資料庫鏈結要麼是公用的,要麼是私有的。
建立資料庫鏈結時,還可以使用預設登入方式,即不指定遠端資料庫的使用者名稱和密碼:
create public database link test_default_type_dblink在不指定使用者名稱和口令的情況下,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 'zytydic';
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_nametnsname_atob就是到tnsname.ora中遠端主機的連線字串。connect to user_b identified by user_b的password using 'tnsname_atob';
在我自己的機子上建立的實際的db link sql語句如下:
create database link taowei_to_101(d).測試是否能夠讀取資料.connect to ga_bzk identified by ga_bzk using 'zytydic';
select * from dual@link_atob_name結果為:dummy x表示設定成功
這時候就可以通過taowei_to_101檢視遠端主機上相關的資料資訊了:
select * from tbl_bjflb@taowei_to_101;
刪除資料庫鏈結的語句是:
drop [public] database link taowei_to_101
資料庫鏈結的引用
一般情況下引用資料庫鏈結,可以直接將其放到呼叫的表名或檢視名稱後面,中間使用乙個@ 作為分割符:
select * from tbl_bjflb@taowei_to_101;
對於經常使用的資料庫鏈結,可以建立乙個本地的同義詞,方便使用:
create synonym tbl_bjflb__syn for tbl_bjflb@taowei_to_101;
還可以建立乙個本地的遠端檢視,方便使用:
create view tbl_bjflb as select * from tbl_bjflb@taowei_to_101 where… ;
現在本檢視可與本地資料庫中的任何其它檢視一樣對待,也可以授權給其它使用者,訪問此檢視,但該使用者必須有訪問資料庫鏈結的許可權。
對於另外一種情況,所要訪問的表不在資料庫鏈結中指定的遠端帳戶下,但該帳戶有訪問該錶的許可權,那麼我們在表名前要加上該錶的使用者名稱:
select * from emcd.emcd_data_source@taowei_to_101 ;
還可以建立快照(snapshot)通過dblink實現遠端資料自動傳輸。
檢視所有的資料庫鏈結,進入系統管理員sql>操作符下,執行命令:
sql關於oracle資料庫建立database link的知識就介紹到這裡了,希望本次的介紹能夠對您有所收穫!>
select owner,object_name from dba_objects
where
object_type
='database link'
;
oracle 建立資料庫
檢驗是否存在 存在的話刪除 drop tablespace tbs epet 建立表空間 create tablespace tbs epet datafile c epet space.dbf size 5m 建立使用者 create user epet identified by epet de...
Oracle建立資料庫
使用者 作業系統使用者 root登陸 切換到oracle 資料庫使用者 sys system scott 命令 作業系統的命令 id pwd sqlplus的命令 前導命令必須熟悉 id 查詢當前使用者 ls l 顯示當前目錄下的檔案或資料夾 pwd 顯示當前所在的目錄 cd 改變當前目錄 more...
建立Oracle資料庫
root localhost su oracle oracle localhost sqlplus nolog sql conn as sysdba sql show user user is sys sql select name from v datafile 建立臨時表空間 create te...