將多個不同地點的服務器的oracle數據庫邏輯上看成一個數據庫,也就是說在一個數據庫中可以操作另一個遠程的數據庫中的對象。
Oracle DBLINK
作用:將多個不同地點的服務器的oracle數據庫邏輯上看成一個數據庫,也就是說在一個數據庫中可以操作另一個遠程的數據庫中的對象。
語法:
CREATE [PUBLIC] DATABASE LINK dblink CONNECT TO user IDENTIFIED BY password USING ‘connect_string’;
DROP [PUBLIC] DATABASE LINK dblink;
注意:你必須有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的權限(可用sys身份去分配),另外,在你要連接的數據庫上的權限.
grant CREATE DATABASE LINK to hr;
參數說明:
dblink: 你所創建的database link的名字,
user和password:要連接的數據庫的用戶名和密碼
connect_string:可以是經過Net Manager配置的(tnsnames.ora)且經測試可以連接的服務名,不過也更直接用tnsnames里的字符串:(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = even.oracle.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME =orcl) )
通過SHOW PARAMETER GLOBAL_NAMES,可以查看到其值是FALSE或者TRUE。
一)對于GLOBAL_NAMES=FALSE的情況,則DBLINK的名稱可以自定義,相關的過程如下:
實現從本地數據庫連接到遠端數據庫服務器:
遠程服務器要配置監聽并且啟動它
本地服務器要配置tnsnames
實現在本地服務器上連接到遠程服務器數據庫:
在本地數據庫上,創建連接:
1、 鏈接字符串即服務名,首先在本地配置一個服務名,地址指向遠程的數據庫地址,當然也直接寫的連接字符串。
2、創建數據庫鏈接(前提是已分配相應權限),
SQL> grant CREATE DATABASE LINK to hr;
Grant succeeded.
SQL> CREATE DATABASE LINK LinkRemoteTestDB CONNECT TO hr IDENTIFIED BY hr USING 'test';
Database link created.
當然也可以直接寫連接字符串
SQL>create database link LinkRemoteTestDB2 connect to hr identified by hr
using 'TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = even.oracle.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)';
則創建了一個以hr用戶和TEST數據庫的鏈接LinkRemoteTestDB.
3.使用database link來查詢遠程HR schema下的testdblink 表信息
SQL> select * from testdblink@LinkRemoteTestDB;
ID NAME
---------- ----------------------------------------
1 Watson
2 John
通過執行select * from testdblink@LinkRemoteTestDB; 進行測試,,結果OK
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com