有效建立Oracle dblink的兩種方式
兩台不同的資料庫伺服器,從一台資料庫伺服器的一個使用者讀取另一台資料庫伺服器下的某個使用者的資料,這個時候可以使用db_link。其實db_link和資料庫中的view差不多,建db_link的時候需要知道待讀取資料庫的ip位址,ssid以及資料庫使用者名和密碼。
建立可以采用兩種方式:
1、已經配置本地服務
create public database link fwq12 connect to fzept identified by neu using 'fjept' CREATE DATABASE LINK資料庫連結名CONNECT TO 使用者名 IDENTIFIED BY 密碼 USING ‘本地配置的資料的執行個體名’;
2、未配置本地服務
create database link linkfwq connect to fzept identified by neu using '
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)
(HOST = 10.142.202.12)
(PORT = 1521)) )
(CONNECT_DATA =
(SERVICE_NAME = fjept) ) )';
host=資料庫的ip位址,service_name=資料庫的ssid。
其實兩種方法配置db_link是差不多的,我個人感覺還是第二種方法比較好,這樣不受本地服務的影響。
資料庫連接配接字元串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA裡定義。
資料庫參數global_name=true時,要求資料庫連結名稱跟遠端資料庫名稱一樣。
資料庫全局名稱可以用以下指令查出:
SELECT * FROM GLOBAL_NAME;
查詢遠端資料庫裡的表:
SELECT …… FROM 表名@資料庫連結名;
查詢、删除和插入資料和操作本地的資料庫是一樣的,隻不過表名需要寫成“表名@db_link伺服器”而已。
附帶說下同義詞建立:
CREATE SYNONYM 同義詞名 FOR 表名;
CREATE SYNONYM 同義詞名 FOR 表名@資料庫連結名;
删除dblink:
DROP PUBLIC DATABASE LINK linkfwq。
如果建立全局dblink,必須使用systm或sys使用者,在database前加public。建立db_lnik後,可以再public使用者下檢視。
最後,在建立好db_link後,在建立對方需要使用的資料表時,别忘記權限問題,需要賦予哪些權限,要根據此db_link的使用目的而定。