1. 程式人生 > >建立dblink(database link)

建立dblink(database link)

報錯 https 對象 單向 content wid 一個 ceshi cli

版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/bisal/article/details/26730993

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‘;

OWNER ? ? ? ? ? OBJECT_NAME
--------------- -------------------------
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)