Oracle跨數(shù)據(jù)庫查詢并插入實(shí)現(xiàn)原理及代碼
更新時(shí)間:2013年03月06日 15:38:10 作者:
需要從一個(gè)數(shù)據(jù)庫中的表GIS_WEICHAI_DATA_1S中的數(shù)據(jù)導(dǎo)入到另個(gè)一數(shù)據(jù)庫的表GIS_WEICHAI_DATA_1S中,接下來為你講解跨數(shù)據(jù)庫查詢并插入需要的朋友可以參考下
工作中需要從一個(gè)數(shù)據(jù)庫中的表GIS_WEICHAI_DATA_1S中的數(shù)據(jù)導(dǎo)入到另個(gè)一數(shù)據(jù)庫的表GIS_WEICHAI_DATA_1S中,數(shù)據(jù)庫服務(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ù)庫服務(wù)器建立本地服務(wù)名:
在本地?cái)?shù)據(jù)庫安裝文件中,找到$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ù)庫需要同時(shí)操作,可以依次增加!
--如果本機(jī)用的Windows操作系統(tǒng),可以使用Oracle自帶的Net Manager 工具,以圖形化的操作方式來建立服務(wù)名!
2.
在本機(jī)上使用sysdba的角色登錄本地?cái)?shù)據(jù)庫,創(chuàng)建database link:
執(zhí)行如下sql語句:
--遠(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ù)庫服務(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ù)庫鏈接名),就跟操作本地?cái)?shù)據(jù)庫中的表差不多,可以從不同數(shù)據(jù)庫服務(wù)器中提取數(shù)據(jù)!很方便!
insert into GIS_WEICHAI_DATA_1S@MYDBLINK1 select * from GIS_WEICHAI_DATA_1S@ MYDBLINK2 where rownum<=10000;
4.
如果需要頻繁的使用遠(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就可以了!
刪除同義詞的語法為:
drop synonym syName;
5.
查看當(dāng)前數(shù)據(jù)庫的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ù)庫服務(wù)器建立本地服務(wù)名:
在本地?cái)?shù)據(jù)庫安裝文件中,找到$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ù)庫需要同時(shí)操作,可以依次增加!
--如果本機(jī)用的Windows操作系統(tǒng),可以使用Oracle自帶的Net Manager 工具,以圖形化的操作方式來建立服務(wù)名!
2.
在本機(jī)上使用sysdba的角色登錄本地?cái)?shù)據(jù)庫,創(chuàng)建database link:
執(zhí)行如下sql語句:
復(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ù)庫服務(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ù)庫鏈接名),就跟操作本地?cái)?shù)據(jù)庫中的表差不多,可以從不同數(shù)據(jù)庫服務(wù)器中提取數(shù)據(jù)!很方便!
insert into GIS_WEICHAI_DATA_1S@MYDBLINK1 select * from GIS_WEICHAI_DATA_1S@ MYDBLINK2 where rownum<=10000;
4.
如果需要頻繁的使用遠(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就可以了!
刪除同義詞的語法為:
drop synonym syName;
5.
查看當(dāng)前數(shù)據(jù)庫的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)文章
Windows10 x64安裝、配置Oracle 11g過程記錄(圖文教程)
這篇文章主要介紹了Windows10 x64安裝、配置Oracle 11g過程記錄(圖文教程),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
Oracle字段根據(jù)逗號(hào)分割查詢數(shù)據(jù)的方法
項(xiàng)目需求是這樣的表里的某個(gè)字段存儲(chǔ)的值是以逗號(hào)分隔開來的,要求根據(jù)分隔的每一個(gè)值都能查出來數(shù)據(jù),但是不能使用like查詢。這篇文章主要介紹了Oracle字段根據(jù)逗號(hào)分割查詢數(shù)據(jù),需要的朋友可以參考下2018-08-08
Oracle數(shù)據(jù)庫tnsnames.ora文件的作用和配置
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫tnsnames.ora文件的作用和配置,tnsnames.ora 是一個(gè)oracle數(shù)據(jù)庫網(wǎng)絡(luò)配置文件,通過這個(gè)配置文件才能建立對(duì)數(shù)據(jù)庫的連接,需要的朋友可以參考下2024-06-06
oracle數(shù)據(jù)庫定時(shí)任務(wù)dbms_job的用法詳解
這篇文章給大家詳細(xì)介紹了dbms_job的用法,用于安排和管理作業(yè)隊(duì)列,通過使用作業(yè),可以使ORACLE數(shù)據(jù)庫定期執(zhí)行特定的任務(wù)。有需要的朋友們可以參考借鑒。2016-09-09
Oracle中行列轉(zhuǎn)換兩種實(shí)現(xiàn)方法
在Oracle中可以使用多種方法來實(shí)現(xiàn)行轉(zhuǎn)列和列轉(zhuǎn)行,這篇文章主要給大家介紹了關(guān)于Oracle中行列轉(zhuǎn)換的兩種實(shí)現(xiàn)方法,文中介紹的是用PIVOT和UNPIVOT函數(shù),需要的朋友可以參考下2023-11-11
45個(gè)非常有用的 Oracle 查詢語句小結(jié)
這里我們介紹的是 40+ 個(gè)非常有用的 Oracle 查詢語句,主要涵蓋了日期操作,獲取服務(wù)器信息,獲取執(zhí)行狀態(tài),計(jì)算數(shù)據(jù)庫大小等等方面的查詢。這些是所有 Oracle 開發(fā)者都必備的技能,所以快快收藏吧2014-04-04
利用PL/SQL從Oracle數(shù)據(jù)庫導(dǎo)出和導(dǎo)入數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了利用PL/SQL從Oracle數(shù)據(jù)庫導(dǎo)出數(shù)據(jù)和導(dǎo)入數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03

