日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 导入1t dmp文件,利用FDW进行ORACLE到Postgresql的数据迁移

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 导入1t dmp文件,利用FDW进行ORACLE到Postgresql的数据迁移 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隨著開源數據庫技術的發展和去“O”工作的推進,越來越多企業生產系統選擇使用Postgresql數據庫。Pgsql采用多進程結構,其存儲過程、函數的支持好于mysql。個人認為pgsql是oracle的最佳替代產品。但是pgsql作為一款開源數據庫,其計算能力和穩定性還是無法與Oracle相提并論,所有當企業要使用PG替代oracle時,還是得從數據庫的拆分和架構上下功夫。使用PG去“O”的核心步驟之一是數據遷移,遷移方案有多種,如ETL、ORACLE_FDW等,本文將重點介紹ORACLE_FDW的遷移過程。FDW是PG的一個開源插件,可以通過在github上下載編譯安裝,以實現類似ORACLEDBLINK的功能。FDW優點是配置簡單,使用方便,缺點是不能實現增量遷移,所以只適合數據量較小或者停機時間較長的情況。下面開始本次分享。

插? 件? 安? 裝

PG軟件安裝,一般選用源碼進行編譯安裝,此處不對安裝過程進行詳細描述(相信大家都是老司機哈)。

下載精簡版Oracle客戶端instantclient-*.zip,包含basic、sdk和sqlplus三個文件并解壓。

配置好用戶postgres的環境變量。LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/postgres/instantclient_11_2:/usr/local/pgsql/lib

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/pgsql/bin

ORACLE_HOME=/home/postgres/instantclient_11_2

PGDATA=/data

export PATH ORACLE_HOME LD_LIBRARY_PATH PGDATA

插件編譯安裝$ make

$ make install

驗證是否安裝成功

ORACLE_FDW配置和使用創建extensioncreate extension oracle_fdw;

postgres=# \dx

List of installed extensions

Name??? | Version |?? Schema?? |????????????? Description

------------+---------+------------+----------------------------------------

oracle_fdw | 1.1???? | public???? | foreign data wrapper for Oracle access? -->說明創建成功

plpgsql??? | 1.0???? | pg_catalog | PL/pgSQL procedural language

創建server,使pg通過創建外部表連接oracle數據庫CREATE SERVER spclora FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver '10.26.5*.**:1521/spcltbk');

--創建server spclora 連接到oracle數據庫

GRANT USAGE ON FOREIGN SERVER spclora TO userinfo_prod;

--將server授權給用戶userinfo_prod

\c userinfodb userinfo_prod

--使用userinfo_prod切換到userinfodb

CREATE USER MAPPING FOR userinfo_prod SERVER spclora OPTIONS (user 'pgsync', password 'oracle');

--創建到oracle的映射,pgsync/oracle是oracle數據庫的用戶名和密碼

創建外部表create FOREIGN table t_***_userinfo_fdw

(

phone***?? VARCHAR(24) not null,

ser***tus??? int4 not null,

createtime??? timestamp with time zone default now() not null,

ups***time? timestamp with time zone default now() not null,

op**a*or????? int4 not null,

che**me???? timestamp with time zone,

lo**id?????? int4,

modu**code??? VARCHAR(20),

modi***time? timestamp with time zone default now() not null

)SERVER spclora OPTIONS (schema 'SP***DP', table 'T_USERINFO_MV',prefetch '10240');

至此,通過訪問外部表,即可訪問ORACLE數據庫對應表,上例建表語句中的options表示oracle的表信息SP***DP.T_USERINFO_MV。pretetch,表示從oracle預取的行數,默認是200,建議配置到最大10240,根據我們的實戰經驗,配置該參數后,數據遷移的速度至少提高50%。

數? 據? 遷? 移

在PG側創建表,然后使用insertinto pg_table select * from foreign_table即可實現數據遷移。遷移案例

某運營商項目一重要系統原數據庫使用Oracle11.2.0.4,架構為HA架構,數據量約1TB,進行去“O”改造。考慮到去O后的效率以及數據增長等問題,架構上做了數據“對癥下藥”。數據庫層面進行了拆分,日志數據存放到ES上,分發數據存放到Mongodb上,核心交易數據存放到PG中,日志數據無需遷移,分發數據可以在業務重建之后,從其他業務系統請求重新分發,也無需遷移,只需要遷移核心交易數據到PG中,需遷移的數據量大大減少。為提升PG數據庫效率,PG架構使用一主兩從加pgpool的讀寫分離架構。

根據業務的特點以及確保遷移影響降到最低,遷移方案采用數據按省份進行割接的輪動方式。每個省份的數據遷移,只有15分鐘的停機時間。停機時間短,我們考慮過使用OGG進行增量遷移,使用過OGG的同學都是,這玩意就像有錢人家的大小姐,性子琢磨不透,純“根據心情”,經常出現莫名其妙的岔子。再加上異構環境下,估計使用OGG,岔子更多,所以我們選擇ORACLE_FDW作為遷移方案。

為了在規定的時間內完成數據遷移,我們采取了以下手段:由于在原表中以省份ID區分各省數據,列數據選擇性較低,以省份過濾查詢時,部分省份數據無法使用索引,全表掃描會導致遷移的時間延長;而且本次遷移,業務上也進行了更改,所以遷移數據時只需要原表的部分列。鑒于此情況,我們在源端使用了物化視圖對原表數據進行裁剪,PG外部表與物化視圖進行對應,這樣遷移時可以減少無效的讀取IO,縮短遷移時間。

修改外部表的prefetch參數為10240。

將多個表數據遷移編寫腳本實現手工并行。

按照本篇介紹及手段方法,即可完成數據量1T左右的遷移工作,希望對你的工作有所啟示和幫助,我們下回見。

總結

以上是生活随笔為你收集整理的oracle 导入1t dmp文件,利用FDW进行ORACLE到Postgresql的数据迁移的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。