Oracle數據庫鏈路


一、數據庫鏈路的概念

數據庫鏈路(database link),簡稱dblink,它是一個通道,是本地數據庫與遠程數據庫之間的通道,通過dblink,在本地數據庫中可以直接訪問遠程數據庫的對象。

dblink不是應用程序與數據庫之間的通道,而是數據庫之間的通道。

二、創建dblink

1、創建dblink的權限

用dba權限登錄數據庫,授於用戶create database link和create public database link權限。

語法:

grant create database link to 用戶名;
grant create public database link to 用戶名;

示例:

在這里插入圖片描述

2、創建dblink的命令

語法:

create [public] database link 數據庫鏈路名稱
connect to 用戶名
identified by 密碼
using '遠程數據庫參數';

說明:

public:dblink的類型,缺省是當前用戶私有的,只有當前用戶可以使用該dblink,如果加上public選項,表示公用dblink,所有的數據庫用戶都可以使用。

數據庫鏈路名稱:給dblink起個名字。

用戶名:遠程數據庫登錄的用戶名。

密碼:遠程數據庫登錄的用戶的密碼。

遠程數據庫參數:該參數的配置有兩種方法:1)遠程數據庫的服務名,也就是本地數據庫服務器上$ORACLE_HOME/network/admin/tnsnames.ora中配置的數據庫服務名;2)不采用tnsnames.ora中的配置,直接指定遠程數據庫的參數。

1)配置遠程數據庫服務名

遠程數據庫服務名在$ORACLE_HOME/network/admin/tnsnames.ora文件中配置,內容如下:

snorcl11g_198 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 118.89.50.198)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = snorcl11g)
      (SERVER = DEDICATED)
    )
  )

2)測試遠程數據庫登錄參數

在這里插入圖片描述

3)創建dblink

用遠程數據庫服務名創建dblink,例如:

create database link dblink_01 connect to shqx identified by pwdidc using 'snorcl11g_198';

4)測試dblink

通過dblink獲取遠程數據庫的時間。

在這里插入圖片描述

如果不用數據庫服務創建dblink,就不需要配置tnsnames.ora文件。

示例:

create database link dblink_02 connect to shqx identified by pwdidc using
'(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 118.89.50.198)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SID = snorcl11g)
     (SERVER = DEDICATED)
   )
 )';

dblink_01和dblink_02完全一樣。

三、dblink的使用

如果要訪問遠程數據庫的表或視圖,在表和視圖名之后附加@dblinkname就可以了。

訪問遠程數據庫的dual表:

select sysdate from dual@dblink_01;

訪問遠程數據庫的scott.emp表:

select * from scott.emp@dblink_02;

四、刪除dblink

刪除當前用戶私有的dblink:

drop database link 數據庫鏈路名;

刪除公用的dblink:

drop public database link 公用數據庫鏈路名;

五、應用經驗

dblink的知識很容易掌握,用dblink訪問遠程數據庫的對象很方便,但是,如果在程序中采用dblink對遠程數據庫的表進行增、刪、改、查操作時一定要遵守一個原則:盡可能不要產生遠程事務,因為數據庫對遠程的事務難以控制,也就是說,盡可能不要對遠程數據庫的表進行增、刪、改操作,查詢是沒有問題的。

六、版權聲明

C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道

如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM