Oracle跨數(shù)據(jù)庫(kù)查詢并插入實(shí)現(xiàn)原理及代碼

需要從一個(gè)數(shù)據(jù)庫(kù)中的表GIS_WEICHAI_DATA_1S中的數(shù)據(jù)導(dǎo)入到另個(gè)一數(shù)據(jù)庫(kù)的表GIS_WEICHAI_DATA_1S中,接下來(lái)為你講解跨數(shù)據(jù)庫(kù)查詢并插入需要的朋友可以參考下

工作中需要從一個(gè)數(shù)據(jù)庫(kù)中的表GIS_WEICHAI_DATA_1S中的數(shù)據(jù)導(dǎo)入到另個(gè)一數(shù)據(jù)庫(kù)的表GIS_WEICHAI_DATA_1S中,數(shù)據(jù)庫(kù)服務(wù)器都是遠(yuǎn)程的!我的實(shí)現(xiàn)方法是在本地使用PL/SQL操作兩個(gè)遠(yuǎn)程服務(wù)器,實(shí)現(xiàn)方式如下:
1.
為你需要操作的遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器建立本地服務(wù)名:
在本地?cái)?shù)據(jù)庫(kù)安裝文件中,找到$ORACLE_HOME/network/admin/tnsnames.ora文件,
末尾添加
代碼如下:
–第一個(gè)遠(yuǎn)程服務(wù)器的服務(wù)名:MYORACLE1
MYORACLE1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 221.131.228.256)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
–第一個(gè)遠(yuǎn)程服務(wù)器的服務(wù)名:MYORACLE2
MYORACLE2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 211.161.192.46)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
–如果有更多的遠(yuǎn)程數(shù)據(jù)庫(kù)需要同時(shí)操作,可以依次增加!
–如果本機(jī)用的Windows操作系統(tǒng),可以使用Oracle自帶的Net Manager 工具,以圖形化的操作方式來(lái)建立服務(wù)名!

2.
在本機(jī)上使用sysdba的角色登錄本地?cái)?shù)據(jù)庫(kù),創(chuàng)建database link:
執(zhí)行如下sql語(yǔ)句:
代碼如下:
–遠(yuǎn)程服務(wù)器一的對(duì)應(yīng)database link
create public database link MYDBLINK1 –可以隨便取名,當(dāng)然,不能是關(guān)鍵字或保留字
connect to dbUserName1 identified by dbpwd1
using ‘ MYORACLE1’;
–遠(yuǎn)程服務(wù)器二的對(duì)應(yīng)database link
create public database link MYDBLINK2 –可以隨便取名,當(dāng)然,不能是關(guān)鍵字或保留字
connect to dbUserName2 identified by dbpwd2
using ‘ MYORACLE2’;
–其中using后面填對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)名,dbUserName1,dbpwd1填對(duì)應(yīng)的數(shù)據(jù)服務(wù)器登錄名,密碼
–刪除database link
Drop database link MYDBLINK1; –本例中是MYDBLINK1和MYDBLINK2

3.
操作遠(yuǎn)程服務(wù)器上的表,在要在對(duì)應(yīng)的表后面加上@ linkName(對(duì)應(yīng)的數(shù)據(jù)庫(kù)鏈接名),就跟操作本地?cái)?shù)據(jù)庫(kù)中的表差不多,可以從不同數(shù)據(jù)庫(kù)服務(wù)器中提取數(shù)據(jù)!很方便!
insert into GIS_WEICHAI_DATA_1S@MYDBLINK1 select * from GIS_WEICHAI_DATA_1S@ MYDBLINK2 where rownum4.
如果需要頻繁的使用遠(yuǎn)程服務(wù)器中的表,上面的寫法有點(diǎn)煩人,這時(shí)候可以考慮為這個(gè)表創(chuàng)建一個(gè)同義詞
create synonym syName for GIS_WEICHAI_DATA_1S@MYDBLINK1;
以后在要使用GIS_WEICHAI_DATA_1S@MYDBLINK1的時(shí)候用syName就可以了!
刪除同義詞的語(yǔ)法為:
drop synonym syName;
5.
查看當(dāng)前數(shù)據(jù)庫(kù)的DB Link;
代碼如下:
select * from user_db_links; –用戶 DB Link
select * from dba_db_links; –dba DB Link
select * from v$dblink; –當(dāng)前DB Link

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊5 分享