建立dblink(database link)
database linke是建立一個數據庫到還有一個數據庫的路徑的對象,通過database link能夠同意查詢遠程表。我理解能夠算作一種分布式數據庫的使用方法。
database link是單向連接。既然它是一種對象,那自然能夠在xxx_objects表中查詢到相關的信息。
建立database link前須要明白幾個事情:
1、確認從建立方的server能夠訪問遠程數據庫。
2、須要在建立方的tnsnames中配置遠程數據庫連接串。
3、僅僅有在服務端配置的連接才幹在dblink中使用,假設僅是在client配置的連接是不能在dblink中使用。我這裏就犯了這個錯誤,運行時就報錯:
select * from [email protected]
? ? ? ? ? ? ? ? *
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是遠程數據庫的username。
passwd是遠程數據庫的password。
ceshi是數據庫服務端配置的tnsnames中名稱。
4、運行:
SQL> select owner,object_name from dba_objects where object_type=‘DATABASE LINK‘;
--------------- -------------------------
OPEN ? ? ? ? ? ? ? DBLINKTEST
能夠看到已經建立了這個database link。
5、運行:
SQL> select * from [email protected];
? ? ? ? ID
----------
? ? ? ? ?0
? ? ? ? ?2
? ? ? ? ?3
? ? ? ? ?4
? ? ? ? ?5
當然也能夠運行insert語句:
SQL> insert into [email protected] values(1);
1 row created.
另外database link分為public和private的,默認是private。僅僅有當前用戶可用,假設是create public database link ...,則全部用戶都能夠使用這個名稱的database link。
建立dblink(database link)