一菜單方式: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正確配置完成後就可使用了。