Oracle 連接 另一個Oracle數據庫 服務器連接


一、場景
  兩台不同的服務器A、B分別裝有不同業務的oracle數據庫,因業務需要,現需要將B中test表的數據,定時同步到A中。

二、實現
  根據以上場景,我想到了oracle中的dblink,當用戶需要跨本地數據庫,訪問另外一個數據庫表中的數據時,本地數據庫可以通過創建遠程數據庫的dblink,實現像訪問本地數據庫一樣訪問遠程數據庫表中的數據。

三、具體操作
1、用sysdba身份登錄A服務器oracle,首先確定是否有創建link的權限,執行鎖起來:
select * from user_sys_privs t where t.privilege like upper('%link%');
查詢結果:SYS CREATE DATABASE LINK NO
        SYS DROP PUBLIC DATABASE LINK NO
         SYS CREATE PUBLIC DATABASE LINK NO

在數據庫中dblink有三種權限
CREATE DATABASE LINK(所創建的dblink只能是創建者能使用,別的用戶使用不了),CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK(public表示所創建的dblink所有用戶都可以使用),
    如果沒有權限,可通過grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to sysdba賦予權限;

2、配置A服務器oracle的tnsnames.ora,將B數據庫的連接配置進來:
TLINK =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.100.100.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oracle)
    )
  )

3、創建A-B的dblink:
create public database link alink
connect to scott identified by tiger using 'TLINK';

其中alink是你創建的dblink名字,'TLINK'是遠程數據庫的實例名,scott/tiger是登錄到遠程數據庫的用戶/密碼。

4、執行sql,在本地數據庫中通過dblink訪問遠程數據scott.test表,如下示例:
  select * from scott.test@alink where 1=1;


免責聲明!

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



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