網頁

2020/4/13

Oracle 建立遠端資料庫連線 Create Database Links

Oracle 的Database Link讓我們可以在目前的資料庫直接存取遠端資料庫,建立database link方式如下。

建立連結到遠端資料庫的database link。
使用者名稱為abc
密碼為123
database link名稱為dblink(名稱自訂);
遠端資料庫的位址為demo.abc.com:1521
SID為demo

-- create database link
CREATE DATABASE LINK dblink 
    CONNECT TO abc IDENTIFIED BY 123
    USING '(DESCRIPTION=
                (ADDRESS=(PROTOCOL=TCP)(HOST=demo.abc.com)(PORT=1521))
                (CONNECT_DATA=(SID=demo))
            )';

查詢USER_DB_LINKS view 顯示目前使用者建立的database link。

-- show created database links of the current user
select * from USER_DB_LINKS;

查詢V$DBLINK view查看目前開啟的database link。

select * from V$DBLINK

Database link建立後即可從目前資料庫查詢遠端資料庫的EMPLOYEE資料表。在查詢的遠端資料表後接@加上database link的名稱,例如EMPLOYEE@dblink

SELECT * FROM EMPLOYEE@dblink;

執行完操作後關閉database link。

-- close database link
ALTER SESSION CLOSE DATABASE LINK dblink;

把遠端資料庫的EMPLOYEE複製到本地資料庫的同資料表EMPLOYEE

INSERT INTO EMPLOYEE SELECT * FROM EMPLOYEE@dblink a
WHERE a.ID = 100;

Database link在搬移或備份資料到不同的資料庫時相當好用,資料不用再經過應用程式而是直接在兩資料庫中傳遞。

不過對於LOB型態如CLOBBLOB欄位在database link有使用限制,若以database link查詢遠端的這些欄位會出現ORA-22992: cannot use LOB locators selected from remote tables錯誤。不過上面的INSERT INTO local SELECT * FROM remote@dblink仍可正常執行,但要注意本地表和遠端表欄位順序必須一致。


參考:

沒有留言:

張貼留言