物理上存放於網路的多個ORACLE資料庫,邏輯上可以看成一個單一的大型資料庫,使用者可以通過網路對異地資料庫中的資料進行存取,而伺服器之間的協同處理對於工作站使用者及應用程式而言是完全透明的,開發人員無需關心網路的連結細節、資料在網路節點中的具體分布情況和伺服器間的協調工作過程。
資料庫之間的連結建立在DATABASE LINK上。要建立一個DATABASE LINK,必須首先在建立連結的資料庫上設定連結字串,即配置一個遠端資料庫的本網服務名。
連結字串的配置參見《用戶端串連伺服器》一節。
資料庫全域名稱可以用以下命令查出:
SELECT * FROM GLOBAL_NAME;
修改可以用以下語句來修改參數值:
ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;
<1>、當資料庫參數global_name=false時,就不要求資料庫連結名稱跟遠端資料庫名稱一樣。
oracle資料庫之間進行串連通訊。
建立資料庫連結的文法如下:
CREATE [PUBLIC] DATABASE LINK link
CONNECT TO username IDENTIFIED BY password
USING ‘connectstring’
其中:
--demona為用net8 easy config建立的連接字串
目的方資料庫的init.ora檔案中的global_names設為false
重新啟動資料庫設定才會生效
或者用sys使用者執行
注意:建立資料庫連結的帳號必須有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系統許可權,用來登入到遠端資料庫的帳號必須有CREATE SESSION許可權。這兩種許可權都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK許可權在DBA中)。
一個公用資料庫連結對於資料庫中的所有使用者都是可用的,而一個私人連結僅對建立它的使用者可用。由一個使用者給另外一個使用者授權私人資料庫連結是不可能的,一個資料庫連結要麼是公用的,要麼是私人的。
建立資料庫連結時,還可以使用預設登入方式,即不指定遠端資料庫的使用者名稱和密碼:
create public database link zrhs_link
using ‘zrhs’;
在不指定使用者名稱和口令的情況下,ORACLE使用當前的使用者名稱和口令登入到遠端資料庫。
USING後面指定的是連結字串,也就是遠端資料庫的網路服務名,這個服務名儲存在TNSNAMES.ORA檔案中,在該檔案中定義了協議、主機名稱、連接埠和資料庫名。
刪除資料庫連結的語句是:
DROP [PUBLIC] DATABASE LINK zrhs_link
資料庫連結的引用
一般情況下引用資料庫連結,可以直接將其放到調用的表名或視圖名稱後面,中間使用一個 @ 作為分割符:
SELECT * FROM worker@zrhs_link;
對於經常使用的資料庫連結,可以建立一個本地的同義字,方便使用:
CREATE SYNONYM worker_syn FOR worker@zrhs_link;
還可以建立一個本地的遠程視圖,方便使用:
CREATE VIEW worker AS SELECT * FROM worker@zrhs_link where… ;
現在本視圖可與本機資料庫中的任何其它視圖一樣對待,也可以授權給其它使用者,訪問此視圖,但該使用者必須有訪問資料庫連結的許可權。
對於另外一種情況,所要訪問的表不在資料庫連結中指定的遠程帳戶下,但該帳戶有訪問該表的許可權,那麼我們在表名前要加上該表的使用者名稱:
SELECT * FROM camel.worker@zrhs_link ;
<2>、當資料庫參數global_name=true時,那就要求資料庫連結名稱跟遠端資料庫名稱一樣
資料庫全域名稱可以用以下命令查出
SELECT * FROM GLOBAL_NAME;
atabase link(dblink)--資料庫鏈路
建立dblink的文法:
sql>create database link 資料庫鏈路名
connect to 使用者名稱 identified by 口令
using '主機字串名';
如:
sql>create database link ora9i.us.oracle.com ### 這裡的us.oracle.com為oracle預設網域名稱 ###
connect to scott identified by tiger
using 'sun';
1)dblink名必須與遠端資料庫的全域資料庫名(global_name)相同;
2)使用者名稱,口令為遠端資料庫使用者名稱,口令;
3)主機字串為本機tnsnames.ora中定義的串;
4)兩個同名的資料庫間不得建立dblink;
然後,你就可以通過dblink訪問遠端資料庫了。
如:
sql>select * from 表名@ora9i.us.oracle.com;
還可以建立快照(snapshot)通過dblink實現遠端資料自動傳輸。
查看所有的資料庫連結,進入系統管理員SQL>操作符下,運行命令:
SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';
http://hi.baidu.com/mataoxf/blog/item/86e2be51db2a538e8d54306a.html