Oracle建立Database Link

一菜單方式:sql

  打開plsql,點擊【File】-【New】-【Database link】,打開以下圖所示窗口數據庫

 

填好各項信息後,點擊【Apply】便可完成Database Link的建立。服務器

  二SQL方式oracle

-- Drop existing database link
drop public database link dblink_name;
-- Create database link
create public database link dblink_name connect to SYSTEM using '192.168.1.73:1521/oracle';

 

-- Create database link 
create database link db_1   
  connect to db_2_user identified by "db_2_user_password"
  using 'DEMO =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = db_2_ip)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = db_2_server)
    )
  )'; 

其中,
       db_1是db link的名稱;
       db_2_user是DB2這臺機器上源數據庫的用戶名;
       db_2_user_password是密碼;
       db_2_ip是DB2數據庫地址,
       db_2_server是DB2數據庫服務名。
分佈式

這樣就能夠了,若是要訪問B數據庫的test表,能夠「表名@數據連接名」這樣用,如:ide

 

select * from test@db_1

 

 

 

 

如下是詳細的補充:spa

database linke是創建一個數據庫到另外一個數據庫的路徑的對象,經過database link能夠容許查詢遠程表,我理解能夠算做一種分佈式數據庫的用法。3d

database link是單向鏈接,既然它是一種對象,那天然能夠在xxx_objects表中查詢到相關的信息。創建database link前須要明確幾個事情:code

一、確認從創建方的server能夠訪問遠程數據庫。
二、須要在創建方的tnsnames中配置遠程數據庫鏈接串。
三、只有在服務端配置的鏈接才能在dblink中使用,若是僅是在客戶端配置的鏈接是不能在dblink中使用,我這裏就犯了這個錯誤,執行時就報錯:server

select * from t@dblinktest
          *
ERROR at line 1:
ORA-12154: TNS:could not resolve service name

很明顯,至關於服務端未配置tnsname,所以找不到遠程數據庫的service name配置。


創建過程:

一、創建方的服務端配置遠程數據庫的tnsname配置。
二、tnsping 遠程數據庫tnsnames配置名稱,能夠通。
三、sqlplus登陸後執行:

SQL> create database link dblinktest connect to user identified by passwd using 'ceshi';

其中:
dblinktest是database link的名稱。

user是遠程數據庫的用戶名。
passwd是遠程數據庫的密碼。
ceshi是數據庫服務端配置的tnsnames中名稱。

四、執行:

SQL> select owner,object_name from dba_objects where object_type='DATABASE LINK';
OWNER           OBJECT_NAME
--------------- -------------------------
OPEN               DBLINKTEST

能夠看到已經創建了這個database link。

五、執行:

SQL> select * from t@dblinktest;
        ID
----------
         0
         2
         3
         4
         5

固然也能夠執行insert語句:

SQL> insert into t@dblinktest values(1);
1 row created.

另外database link分爲public和private的,默認是private,只有當前用戶可用,若是是create public database link ...,則全部用戶均可以使用這個名稱的database link。

  注意點:若是在DB1的oracle clinet上經過database links訪問DB2的表,須要在DB1的服務器的tnsnames正確指向DB2。假設你的DB_LINK是想從DB1鏈接到DB2,你須要配置DB1機器上的tnsnames正確指向DB2。若是你確認DB1上的tnsnames中配置正確;那麼再確認你正確的tnsnames被使用了,也就是說DB1機器上系統的環境變量指向哪一個oracle的bin目錄,使用的是否是你配置正確的那個tnsnames文件。兩個tnsnames正確配置完成後就可使用了。

相關文章
相關標籤/搜索