婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PostgreSQL通過oracle_fdw訪問Oracle數(shù)據(jù)的實現(xiàn)步驟

PostgreSQL通過oracle_fdw訪問Oracle數(shù)據(jù)的實現(xiàn)步驟

熱門標(biāo)簽:電銷機器人能補救房產(chǎn)中介嗎 地圖標(biāo)注要花多少錢 濟(jì)南外呼網(wǎng)絡(luò)電話線路 電話機器人怎么換人工座席 移動外呼系統(tǒng)模擬題 江蘇400電話辦理官方 天津開發(fā)區(qū)地圖標(biāo)注app 廣州電銷機器人公司招聘 400電話申請客服

背景:

同一個項目兩個系統(tǒng)分別使用了PG庫和Oracle庫,Oracle是生產(chǎn)庫,數(shù)據(jù)動態(tài)更新,現(xiàn)在在PG庫中需要實時的獲取到更新的數(shù)據(jù)進(jìn)行統(tǒng)計,基于此種方式,可以通過ETL的工具實現(xiàn),但是需要定期進(jìn)行維護(hù)等,于是想著是否可以通過類似于Oracle數(shù)據(jù)庫DBLINK的方式去實現(xiàn),經(jīng)過網(wǎng)上查找相關(guān)資料,發(fā)現(xiàn)可以通過oracle_fdw實現(xiàn)。

測試環(huán)境:

本地搭建測試環(huán)境,基礎(chǔ)配置如下:

Oracle數(shù)據(jù)庫測試服務(wù)器(IP:192.168.1.110):WIN10操作系統(tǒng),Oracle數(shù)據(jù)庫版本為11.2.0.4,實例名為orcl,安裝有32位客戶端;

PG庫測試服務(wù)器(虛擬機,IP:192.168.30.128,NAT模式):WIN10操作系統(tǒng),PG數(shù)據(jù)庫版本為11.11.1;

實現(xiàn)步驟:

1、首先確定網(wǎng)絡(luò)通常,在PG庫服務(wù)器可以訪問到Oracle庫服務(wù)器。

2、安裝PG庫(步驟略)。這里需要注意,安裝完成的PG庫沒有開啟遠(yuǎn)程訪問,如果需要遠(yuǎn)程訪問,需要先修改pg_hba.conf文件,添加以下內(nèi)容即可。

host all all 0.0.0.0/0 md5

3、下載oracle_fdw,注意下載時候需要匹配PG庫的版本。

下載地址:Releases · laurenz/oracle_fdw · GitHub

我這里下載的是匹配PG11,選擇Windows64位置操作系統(tǒng)的。

注意:fdw版本必須和PG庫版本以及操作系統(tǒng)版本相對應(yīng),否則后面會出問題。

3、解壓oracle_fdw,將【lib】和【share/extension】文件夾中文件拷貝到PG庫安裝路徑下對應(yīng)的【lib】和【share/extension】文件夾中。

拷貝之后,通過sql語句可以查詢到oracle_fdw,說明文件拷貝放置成功,但是尚未安裝(isstalled_version為空)。

select * from pg_available_extensions;

4、安裝Oracle客戶端(步驟略)

先不用急著安裝oracle_fdw(安裝也不會成功),因為還需要Oracle客戶端支持。如果不安裝Oracle客戶端,會有下面的錯誤提示。

Oracle客戶端建議和連接的Oracle服務(wù)端采用相同版本(測試有小版本差別也不影響,大版本未測試),另外看網(wǎng)上資料也可以按照輕量級的oracle instant client替代,這里我沒有試過,有興趣的可以嘗試一下。

安裝完成后注意先進(jìn)行連接測試,確保連接正常。

注意:客戶端的版本必須和PG庫的一致,例如我安裝的是64位的PG庫,那么一定要安裝64位的oracle客戶端,之前習(xí)慣安裝了32位的客戶端,在創(chuàng)建外部表后沒法打開,提示下面錯誤。

如果還是有問題,可以檢查安裝路徑是否已經(jīng)寫入Path變量中,將其移動至最上面。

5、創(chuàng)建安裝oracle_fdw

-- 創(chuàng)建oracle_fdw
create extension oracle_fdw;

安裝成功后通過下面之前的語句進(jìn)行驗證。

select * from pg_available_extensions;

可以看到installed_version已經(jīng)顯示安裝版本了,驗證表示安裝成功。

注意:如果多次安裝失敗,建議可以重啟一下PG服務(wù)或者服務(wù)器后重試。

6、Oracle庫中制作測試數(shù)據(jù)

數(shù)據(jù)庫連接信息如下:192.168.1.110/orcl 用戶名/密碼:GIS/GIS

-- Create test table
create table ORACLEDATA_TEST
 (
   ID   NUMBER(10) not null,
   XZQMC        NVARCHAR2(50),
   XZQDM        NVARCHAR2(30)
 )
-- insert test data
insert into oracledata_test values(1,'市南區(qū)','370202');
insert into oracledata_test values(2,'市北區(qū)','370203');

增加測試數(shù)據(jù)后注意進(jìn)行提交操作。

7、PG庫創(chuàng)建Oracle連接

--創(chuàng)建Oracle外部連接,其中oradb_110為連接名稱
create server oradb_110 foreign data wrapper oracle_fdw options(dbserver '192.168.1.110/orcl');

創(chuàng)建后可以通過連接獲取Oracle數(shù)據(jù)庫數(shù)據(jù)。

8、PG庫進(jìn)行用戶授權(quán)

--授權(quán)
grant usage on foreign server oradb_110 to postgres;

授權(quán)根據(jù)實際需要進(jìn)行。

9、創(chuàng)建到Oracle的映射

--創(chuàng)建到oracle的映射
create user mapping for postgres server oradb_110 options(user 'GIS',password 'GIS');

其中oradb_110是之前創(chuàng)建的數(shù)據(jù)庫連接名稱,GIS為連接Oracle的用戶名和密碼。

10、創(chuàng)建需要訪問Oracle的對應(yīng)表

注意這里創(chuàng)建的時候要注意字段類型的轉(zhuǎn)換,Oracle和PG庫在字段類型上還是有所差別的。其中oradb_110是我們上面創(chuàng)建的數(shù)據(jù)庫連接名稱,GIS是連接。

--創(chuàng)建需要訪問的oracle中對應(yīng)表的結(jié)構(gòu)
create foreign  table ORACLEDATA_TEST_PG
 (
   ID   numeric(10) not null,
   XZQMC        VARCHAR(50),
   XZQDM        VARCHAR(30)
 ) server oradb_110 options(schema 'GIS',table 'ORACLEDATA_TEST');

注意:這里建立的表并不像是視圖那樣獲取oracle指定表中的字段,而是通過順序映射的方式,后面會進(jìn)行測試說明。

11、現(xiàn)在通過外部表即可查看Oracle過來的數(shù)據(jù)。

如果需要對創(chuàng)建的內(nèi)容進(jìn)行刪除,可以使用下面語句:

DROP FOREIGN TABLE table_name;
DROP USER MAPPING FOR user_name SERVER server_name;
DROP SERVER server_name;

11、數(shù)據(jù)同步測試。

在oracle數(shù)據(jù)庫中實時插入一條記錄

-- insert test data
insert into oracledata_test values(3,'李滄區(qū)','370203');

插入數(shù)據(jù)后注意提交,然后查詢確認(rèn)。

在PG庫中進(jìn)行查詢確認(rèn):

可以看到,數(shù)據(jù)可以實時的同步過去。

12、表映射測試。

例如現(xiàn)在的測試表中有三個字段,我在PG庫中如果只用到第一個和第三個字段,那我的外部表這樣去構(gòu)建:

--創(chuàng)建需要訪問的oracle中對應(yīng)表的結(jié)構(gòu)
create foreign  table ORACLEDATA_TEST_PG_2
 (
   ID   numeric(10) not null,
   XZQDM        VARCHAR(30)
 ) server oradb_110 options(schema 'GIS',table 'ORACLEDATA_TEST');

然后查詢數(shù)據(jù):

從結(jié)果中可以看出,我們選擇的xzqdm獲取到的并非是xzqdm的值,而是xzqmc的值,其為根據(jù)順序映射的,并非是通過字段名稱映射。

13、性能方面

初步測試了一下,對于大數(shù)據(jù)量性能還是比較低的,這塊沒有進(jìn)行嚴(yán)格的測試,后面有機會可以再補充。

參考資料:

詳解PostgreSQL成功安裝oracle_fdw方法,解決the specified procedure could not be found錯誤_ljinxin的博客-CSDN博客

PostgreSQL之oracle_fdw安裝與使用 - Kevin_zheng - 博客園 (cnblogs.com)

到此這篇關(guān)于PostgreSQL通過oracle_fdw訪問Oracle數(shù)據(jù)的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)PostgreSQL訪問Oracle數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PostgreSQL批量update與oracle差異詳解
  • postgresql的now()與Oracle的sysdate區(qū)別說明

標(biāo)簽:杭州 海西 濮陽 榆林 辛集 昭通 寶雞 溫州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PostgreSQL通過oracle_fdw訪問Oracle數(shù)據(jù)的實現(xiàn)步驟》,本文關(guān)鍵詞  PostgreSQL,通過,oracle,fdw,訪問,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PostgreSQL通過oracle_fdw訪問Oracle數(shù)據(jù)的實現(xiàn)步驟》相關(guān)的同類信息!
  • 本頁收集關(guān)于PostgreSQL通過oracle_fdw訪問Oracle數(shù)據(jù)的實現(xiàn)步驟的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 新竹市| 阳曲县| 启东市| 肥东县| 霍山县| 渭源县| 汽车| 平山县| 龙门县| 绥德县| 通海县| 长泰县| 正蓝旗| 山西省| 襄樊市| 永胜县| 郴州市| 永宁县| 昌乐县| 奉节县| 松阳县| 邳州市| 鹰潭市| 肇庆市| 明星| 秭归县| 永胜县| 全州县| 龙陵县| 利川市| 太仓市| 寿宁县| 呼和浩特市| 威信县| 博客| 乌鲁木齐市| 广州市| 冷水江市| 延津县| 景洪市| 玛曲县|