Oracle跨數(shù)據(jù)庫(kù)查詢并插入實(shí)現(xiàn)原理及代碼
更新時(shí)間:2013年03月06日 15:38:10 作者:
需要從一個(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)程的<IP分別為: 221.131.228.256 211.161.192.46>!我的實(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 rownum<=10000;
4.
如果需要頻繁的使用遠(yuǎn)程服務(wù)器中的表,上面的寫(xiě)法有點(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
1.
為你需要操作的遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器建立本地服務(wù)名:
在本地?cái)?shù)據(jù)庫(kù)安裝文件中,找到$ORACLE_HOME/network/admin/tnsnames.ora文件,
末尾添加
復(fù)制代碼 代碼如下:
--第一個(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ǔ)句:
復(fù)制代碼 代碼如下:
--遠(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 rownum<=10000;
4.
如果需要頻繁的使用遠(yuǎn)程服務(wù)器中的表,上面的寫(xiě)法有點(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;
復(fù)制代碼 代碼如下:
select * from user_db_links; --用戶 DB Link
select * from dba_db_links; --dba DB Link
select * from v$dblink; --當(dāng)前DB Link
相關(guān)文章
Oracle數(shù)據(jù)庫(kù)下載與安裝的完整步驟
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)下載與安裝的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
mybatis使用oracle進(jìn)行添加數(shù)據(jù)的方法
這篇文章主要介紹了mybatis使用oracle進(jìn)行添加數(shù)據(jù)的方法,本文給大家分享我的心得體會(huì),需要的朋友可以參考下2021-04-04
oracle創(chuàng)建新用戶以及用戶權(quán)限配置、查詢語(yǔ)句
在Oracle數(shù)據(jù)庫(kù)中要?jiǎng)?chuàng)建一個(gè)用戶并僅賦予查詢權(quán)限,你可以按照以下步驟進(jìn)行操作,這篇文章主要給大家介紹了關(guān)于oracle創(chuàng)建新用戶以及用戶權(quán)限配置、查詢語(yǔ)句的相關(guān)資料,需要的朋友可以參考下2024-03-03
ip修改后orcale服務(wù)無(wú)法啟動(dòng)問(wèn)題解決
今天配置虛擬機(jī)中設(shè)計(jì)了下ip,使虛擬機(jī)和主機(jī)處在同一網(wǎng)段,然后使用webservice就成功了就來(lái)了,oracle連接不上了,接下來(lái)講提供詳細(xì)的解決方法2012-11-11
Oracle 12.2處理sysaux空間占滿問(wèn)題
今天處理別的問(wèn)題查看告警日志偶然發(fā)現(xiàn)大量的報(bào)錯(cuò),無(wú)法擴(kuò)展SYSAUX表空間,于是登錄系統(tǒng),查看系統(tǒng)表空間使用情況,發(fā)現(xiàn)SYSAUX表空間用滿了,所以本文給大家介紹了Oracle 12.2處理sysaux空間占滿問(wèn)題,需要的朋友可以參考下2024-02-02
自動(dòng)備份Oracle數(shù)據(jù)庫(kù)
自動(dòng)備份Oracle數(shù)據(jù)庫(kù)...2007-03-03
Oracle中常見(jiàn)的33個(gè)等待事件小結(jié)
在Oracle 10g中的等待事件有872個(gè),11g中等待事件1116個(gè)。 我們可以通過(guò)v$event_name 視圖來(lái)查看等待事件的相關(guān)信息2013-07-07
詳解Linux系統(tǒng)中Oracle數(shù)據(jù)庫(kù)程序的啟動(dòng)和關(guān)閉方式
這篇文章主要介紹了Linux系統(tǒng)中Oracle數(shù)據(jù)庫(kù)程序的啟動(dòng)和關(guān)閉方式,文中還講到了滴哦Oracle啟動(dòng)錯(cuò)誤問(wèn)題的解決,需要的朋友可以參考下2016-03-03
Oracle Table Demo語(yǔ)句應(yīng)用介紹
在開(kāi)發(fā)過(guò)程中可能會(huì)用到oracle table demo 操作語(yǔ)句,本文將以此進(jìn)行介紹,需要的朋友可以參考下2012-11-11

