database linke是建立一個資料庫到另一個資料庫的路徑的對象,通過database link可以允許查詢遠端表,我了解可以算作一種分布式資料庫的用法。
database link是單向連接配接,既然它是一種對象,那自然可以在xxx_objects表中查詢到相關的資訊。建立database link前需要明确幾個事情:
1、确認從建立方的server可以通路遠端資料庫。
2、需要在建立方的tnsnames中配置遠端資料庫連接配接串。
3、隻有在服務端配置的連接配接才能在dblink中使用,如果僅是在用戶端配置的連接配接是不能在dblink中使用,我這裡就犯了這個錯誤,執行時就報錯:
select * from t@dblinktest
*
ERROR at line 1:
ORA-12154: TNS:could not resolve service name
很明顯,相當于服務端未配置tnsname,是以找不到遠端資料庫的service name配置。
建立過程:
1、建立方的服務端配置遠端資料庫的tnsname配置。
2、tnsping 遠端資料庫tnsnames配置名稱,可以通。
3、sqlplus登入後執行:
SQL> create database link dblinktest connect to user identified by passwd using ‘ceshi‘;
其中:
dblinktest是database link的名稱。
user是遠端資料庫的使用者名。
passwd是遠端資料庫的密碼。
ceshi是資料庫服務端配置的tnsnames中名稱。
4、執行:
SQL> select owner,object_name from dba_objects where object_type=‘DATABASE LINK‘;
OWNER OBJECT_NAME
--------------- -------------------------
OPEN DBLINKTEST
可以看到已經建立了這個database link。
5、執行:
SQL> select * from t@dblinktest;
ID
----------
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。