天天看點

ORACLE資料庫連結

在oracle裡面,遠端資料通路,像查詢、更新等可以通過database link來實作。資料庫連接配接需要在建立database link的兩台機子上都運作oracle net(以前叫sql*net 和net 8)。 文法如下

1 database link 的建立:

有兩個資料庫伺服器a/b, 其中a的ip位址為172.20.36.245, 伺服器b為本機。伺服器b上的資料庫執行個體名為orcl,在本機上的服務監聽配置上有伺服器a上執行個體配置:

執行個體biwg_test的賬号為 wgods 、 密碼為wgods。下面開始在本機上建立db links

方法1:

create [public] database link 資料庫連結名 connect to 使用者名 identified by 密碼 using '本地配置的資料的執行個體名';

[public]的意思是:public是全局db link,即該資料庫上所有使用者都能查詢,要sys或者system使用者來建立(當然有sysdba權限的使用者也可以的);如果不使用public就是私有db link,隻有建立該db link的使用者能查詢

檢視連接配接是否成功

方法2:可以不配置服務。

不建議使用這個實作。感覺沒有上面方法來的友善

2 檢視目前資料有哪些database link?

3 如何傳回資料庫的global_name?

該參數為true時,你在本地建立的dblink名稱必須和遠端的global_name一緻才行。

4 删除database link

drop [public] database link remote_deve_host;

會報如下錯誤: ora-02024: 未找到資料庫連接配接

drop public database link remote_deve_host;

正常執行删除database link。

5 設定global_name值對database link的影響

sql> alter system set global_names = true;

system altered

create public database link remote_db

connect to wgods identified by wgods using 'biwg'

select * from dual@remote_db

此時報錯:ora-02085:資料庫連接配接 xxxx 到 xxxx

sql> alter system set global_names = false;

修改參數值為false後,查詢就正常了、

6 在db link中執行查詢會有些限制。你應該避免使用connect by, start with, 以及prior關鍵字。一些查詢使用了這些關鍵字會很正常, 但是大部分查詢會失敗

7 如何查詢

select …… from 表名@資料庫連結名

8 db link的使用原則(工作中以及網上收集整理的,僅供參考)

8.1.生産盡量不要使用db link,雖然友善,但這樣不利于資料庫安全管理

8.2.在10g中,blob,clob在db link中是查不到的,含這種資料類型的,要配合建view使用

8.3.我們經常可以使用synonym來做一些配置,以提高易讀性和安全性

8.4.被建立了db link的user,最好不要修改密碼,若修改密碼要重建db link

8.5.db link是單向的

8.6 資料庫連結名,建議使用sid.schema的形式,這樣友善有多個db link時的識别(建議,個人習慣,非強制性)