亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

oracle遷移PostgreSQL步驟及工具介紹

IT那活兒 / 2755人閱讀
oracle遷移PostgreSQL步驟及工具介紹

目前國產化浪潮的浪花兒是一浪高過一浪,感覺比后浪都猛。作為IT技術界的文藝青年,怎能錯過這海天盛筵。今天給大家?guī)淼氖莖racle遷移到postgresql遷移過程評估及對應階段的方法和工具介紹,畢竟工欲善其事,必先利其器,下面開始今天的分享。



評估遷移



遷移工作之前,需要全面評估需選定的應用程序或數據庫。一般老司機都是選擇較低挑戰(zhàn)性,較低風險的業(yè)務庫進行遷移,在遷移過程中不斷踩坑,填坑,積累使用PostgreSQL的經驗,以此總結出適合自己的遷移路線和遷移方法。作為規(guī)劃遷移的第一步,需要估算從現有數據庫遷移到PostgreSQL的難易程度(哪些對象能從oracle百分百遷移到PostgreSQL,哪些只有一部分),這些都是有對應工具可以預估支撐的,請接著往下看。


安裝Orcfce擴展包

我們可以安裝一個擴展Orafce,Orafce在PostgreSQL中實現了Oracle的某些功能。例如,如果習慣于在Oracle中的DATE函數,則此擴展名允許我們使用這些函數。有關Orafce的信息,可以訪問:https : //github.com/orafce/orafce。 


以下是安裝了該擴展后的一些示例:





postgres-# dn

     List of schemas

     Name     |  Owner   

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

 dbms_alert   | postgres

 dbms_assert  | postgres

 dbms_output  | postgres

 dbms_pipe    | postgres

 dbms_random  | postgres

 dbms_utility | postgres

 oracle       | postgres

 plunit       | postgres

 plvchr       | postgres

 plvdate      | postgres

 plvlex       | postgres

 plvstr       | postgres

 plvsubst     | postgres

 public       | postgres

 utl_file     | postgres

(15 rows)


postgres-# df dbms_random.*

                                        List of functions

   Schema    |    Name    | Result data type |             Argument data types             | Type 

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

 dbms_random | initialize | void             | integer                                     | func

 dbms_random | normal     | double precision |                                             | func

 dbms_random | random     | integer          |                                             | func

 dbms_random | seed       | void             | integer                                     | func

 dbms_random | seed       | void             | text                                        | func

 dbms_random | string     | text             | opt text, len integer                       | func

 dbms_random | terminate  | void             |                                             | func

 dbms_random | value      | double precision |                                             | func

 dbms_random | value      | double precision | low double precision, high double precision | func

(9 rows)






向上滑動查看更多內容


使用AWS Schema Conversion Tool生成遷移評估報告

AWS Schema ConversionTool是亞馬遜推出的一款強大的遷移工具,它可以幫助我們實現數據的遷移,還有一些代碼和數據類型的轉換。同時它可生成遷移報告。





表自動轉換達到85%以上。而約束和索引均能達到100%自動轉換。



這里可以看到包和存儲過程。工具自動轉換只能完成10%,剩下的需要手動修改。


點擊save,會生成一個excel列表,該列表展示了一些無法自動遷移的信息,例如包、觸發(fā)器,此類需要手工修改。


此類工作也可以使用Ora2PG來實現遷移工作量的評估。這類工具的作用都是對元數據進行遷移和改造。




也可以保存成.sql腳本




執(zhí)行遷移完的效果如下所示:



數據遷移



元數據遷移完成之后,即可對數據進行遷移工作了。元數據遷移需要注意不要導入索引和約束、觸發(fā)器。進行數據遷移,包括全量遷移時,可以使用AWSSchema Conversion Tool或者ora2PG工具。


對于大數據量的表,建議采用sqluldr2工具。sqluldr2在大數據量導出方面速度超快,能導出億級數據為excelcsv文件。使用sqluldr2可以輸出到多個文件中,指定行數分割或者按照文件大小分割。增加并發(fā)性。然后使用psql工具對CSV文件進行導入。導入完成之后,再創(chuàng)建索引,約束、觸發(fā)器。



數據一致性



數據遷移完成之后需要對數據做對比驗證,目前主流的方法是HASH算法,也可以使用MD5算法。以測試數據為例,分別在Oracle和PG中執(zhí)行以下命令:

Oracle

WITH foo AS (SELECT stragg(lower(standard_hash(id||name||

to_char(price,fm999999990.999999999), MD5)) 

order by lower(standard_hash(id||name||to_char(price,fm999999990.999999999), MD5)) asc) 

AS total_md5 from hello ) SELECT lower(standard_hash(total_md5, MD5)) AS md5 FROM foo;


PostgreSQL

WITH foo AS (select string_agg(md5(id||name||to_char(price,fm999999990.999999999)) order by md5(id||name||to_char(price,fm999999990.999999999)) asc) AS total_md5  FROM hello) SELECT md5(total_md5) AS md5 FROM foo;


以上得到2個庫中表的MD5值,如果一致則數據一致。




數據庫對象改造



整個數據遷移完成之后,就需要對存儲過程,觸發(fā)器、函數等代碼進行改造,根據前面報告提示的點進行修改。


特殊處理

AWS SchemaConversionTool或者ora2PG工具不能完全無損遷移,需要根據評估報告和遷移測試,對轉換不徹底的,進行適當的手工修改,從測試來看,重點還是在語法兼容性上,已知的一些問題有:


  • 存儲過程、函數目前的pg版本(12)不支持OUT參數,需要用INOUT代替;

  • 存儲過程中游標定義的語法轉換有誤,需要人工修改

  • 某些情況下SELECT會被錯誤的轉換為PERFORM

  • 分區(qū)表只支持rang、list,不支持Hash分區(qū)

  • Sequence的訪問方式變化

Sequencesare fully supported, but all call to sequence_name.NEXTVAL orsequence_name.CURRVAL will be transformed intoNEXTVAL(sequence_name) or CURRVAL(sequence_name).

  • Oracle同義詞轉為View

  • DBLINK轉為FDW

  • JOB不支持,在PG中需要改為外部CRONTAB

  • 物化視圖轉為物化視圖快照,僅在完全刷新的時候更新



應用程序遷移測試及改造



此時搭建好,可以提供給應用測試環(huán)境進行測試。在測試過程中遇到問題,需要修改SQL代碼。當然也可以從Oracle中創(chuàng)建SPA任務,捕捉全量的SQL,找到下面相關語法的SQL,提交給開發(fā)人員修改。


表連接

Oracle

Postgresql

(+)


查詢

Oracle

Postgresql

unique

connect by

insert all into

╳ insert into values

merge into

╳ upsert



應用程序性能測試



遷移之后有一些SQL語句性能會下降,我們需要捕捉到性能下降的SQL,查找引起性能下降的原因,并進行針對性優(yōu)化,將性能問題最大程度排除在上線前,以免上線后引起性能問題,影響業(yè)務的正常使用。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/130201.html

相關文章

  • 阿里云如何打破Oracle遷移上云的壁壘

    摘要:摘要第九屆中國數據庫技術大會,阿里云數據庫產品專家蕭少聰帶來以阿里云如何打破遷移上云的壁壘為題的演講。于是,阿里云給出了上面的解決方案。 摘要: 2018第九屆中國數據庫技術大會,阿里云數據庫產品專家蕭少聰帶來以阿里云如何打破Oracle遷移上云的壁壘為題的演講。Oracle是指數據庫管理系統(tǒng),面對Oracle遷移上云的壁壘,阿里云如何能夠打破它呢?本文提出了Oracle 到云數據庫P...

    chavesgu 評論0 收藏0
  • 新書推薦 |《PostgreSQL實戰(zhàn)》出版(提供樣章下載)

    摘要:作者譚峰張文升出版日期年月頁數頁定價元本書特色中國開源軟件推進聯盟分會特聘專家撰寫,國內多位開源數據庫專家鼎力推薦。張文升中國開源軟件推進聯盟分會核心成員之一。 很高興《PostgreSQL實戰(zhàn)》一書終于出版,本書大體上系統(tǒng)總結了筆者 PostgreSQL DBA 職業(yè)生涯的經驗總結,本書的另一位作者張文升擁有豐富的PostgreSQL運維經驗,目前就職于探探科技任首席PostgreS...

    Martin91 評論0 收藏0
  • Oracle SQL Developer 個人使用記錄

    摘要:打開多個窗口一個數據庫連接打開多個窗口用于查看數據表及數據進入工具首選項數據庫對象查看器勾選自動凍結對象查看器窗口即可。顯示行號進入工具首選項代碼編輯器行裝訂線勾選顯示行數即可。 Oracle SQL Developer 個人使用記錄 以下簡稱 SQL Developer 對我Java開發(fā)來說,這個工具已經足夠使用了,雖然還有很多缺點,但夠用就行,相對于我來說的優(yōu)點: 整體UI還算舒...

    leanxi 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<