Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
データベースの引越しを Ora2Pg でスマートにやろう
Search
Yuichiro Narita
June 11, 2025
Technology
900
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
データベースの引越しを Ora2Pg でスマートにやろう
社内勉強会で使用した資料です
Yuichiro Narita
June 11, 2025
More Decks by Yuichiro Narita
See All by Yuichiro Narita
セキュリティ対策としての PostgreSQL マイナーバージョンアップ
jri_narita
0
910
本番環境への影響リスクが低い Real Application Testing (SQL Performance Analyzer) の実施方法の検討と実践
jri_narita
0
430
Other Decks in Technology
See All in Technology
「大丈夫そう?」をObservabilityで確かめる
mrmtsu
0
230
AWS FinOps Agent 結局何が得意なの?
siromi
0
220
プラットフォームを「作る」、 チームに「入り込む」
sansantech
PRO
0
370
PQC移行の今 -- IETF からみた現在地
satokan
4
640
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
1.8k
Kiro Meetup #8 Kiro アップデート (2026/3/21〜2026/9/24)
katzueno
1
300
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
820
AI coding 整合正規方法
philipz
0
570
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
200
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
18
13k
個別開発で終わらせない。 現場の課題をプロダクトの強さに変える StockmarkのFDE
ktkrhr
0
380
【ゲームメーカーズスクランブル2026】『Shadowverse: Worlds Beyond』UIとアニメーションで実現する最高のユーザー体験を叶えるプロトタイピング
cygames
PRO
1
700
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Abbi's Birthday
coloredviolet
4
10k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
910
It's Worth the Effort
3n
188
29k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The untapped power of vector embeddings
frankvandijk
2
1.9k
BBQ
matthewcrist
89
10k
Crafting Experiences
bethany
1
360
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Thoughts on Productivity
jonyablonski
76
5.4k
Transcript
Copyright (c) The Japan Research Institute, Limited 1/12 データベースの引越しを Ora2Pgでスマートにやろう
Yuichiro Narita
Copyright (c) The Japan Research Institute, Limited 2/12 アジェンダ ⚫
Ora2Pg 概要 ⚫ 主要機能、特徴的な機能の紹介 ① アセスメント ② DDL変換・作成 ③ データ移行用DML作成 ④ データ検証 ⚫ まとめ 技術統括部 DB-Architチーム データ検証 アセスメント DDL変換・作成 データ移行用DML作成 参照 参照 参照 参照 作成 作成 作成 作成 参照 実行 実行 .html .sql .sql .txt 9テーブル、92カラム、3,231,829件 10インデックス 5プロシージャ TPCCスキーマ Ora2Pg OracleDB PostgreSQL
Copyright (c) The Japan Research Institute, Limited 3/12 Ora2Pg 概要
⚫ Oracle DB / MySQL / SQL Server から PostgreSQL への移行を支援するツール ⚫ 多機能でオープンソース ⚫ PostgreSQLのプロフェッショナルサービスを提供する HexaCluster社 (カナダ) のCTOを務める Gilles Darold氏が開発 ⚫ GitHubで確認できる限り、2016年以前から現在まで開発が続く (最新バージョンは 2025/4 の v25.0) ↓Ora2Pg の開発状況 (GitHub の Insight より) ↓参考:Teraterm の開発状況 ⚫ Perl で実装 (稼働環境には Perl と DBD::Oracle といったモジュールの導入が必要) ⚫ Google と MS Azure は Ora2Pg をバックエンドとしてデータベース移行サービスを構築 ⚫ 様々な企業や団体がデータベース移行の記事などで紹介 技術統括部 DB-Architチーム AWS Ora2pg と AWS DMS を使用して BLOB および CLOB テーブルを Oracle から PostgreSQL に移行する方法 | Amazon Web Services ブログ Microsoft Oracle から Azure Database for PostgreSQL へ: Ora2Pg 移行ガイド - Azure Database for PostgreSQL - Flexible Server | Microsoft Learn Google コンバージョンの発生元を準備する | Database Migration Service | Google Cloud SRA OSS Ora2Pg (Oracle/PostgreSQLマイグレーションツール) NTTテクノクロス このora2pgがすごい!Oracleのストアドプロシージャ2種をPostgreSQLに移行してみた! | NTTテクノクロスブログ SHIFT OracleからPostgreSQLへのデータ移行|SHIFT Group 技術ブログ PostgreSQL エンタープライズ・ コンソーシアム PGECons技術ドキュメントテンプレート Ver.3
Copyright (c) The Japan Research Institute, Limited 4/12 主要機能、特徴的な機能の紹介 -
①アセスメント ⚫ 移行難易度、移行コストのアセスメント機能 ⚫ Oracle DB に接続し、Ora2Pg で自動変換できないオブジェクトの存在をスキャンしレポート作成 (html or text) ⚫ ↓レポートの全体像 (次頁で詳述) 技術統括部 DB-Architチーム
Copyright (c) The Japan Research Institute, Limited 5/12 主要機能、特徴的な機能の紹介 -
①アセスメント 技術統括部 DB-Architチーム 1/2 オブジェクト種別ごとの総数 見込み移行コスト 自動変換できず手動書換えなどが必要な分、値が大きくなる 単位当たり5分 (confファイルから変更可能) 10の索引のうち、PostgreSQLで対応していない (自動変換できない) 索引構成表が 2つ存在するため、その分見込み移行コストが計上されている 言語、型、機能、エラーハンドリングの違いなどから プロシージャの移行は他のオブジェクトと比べて見込み移行コストが大きくなりやすい
Copyright (c) The Japan Research Institute, Limited 6/12 主要機能、特徴的な機能の紹介 -
①アセスメント 技術統括部 DB-Architチーム 2/2 Oracle提供パッケージ (DBMS_RANDOMなど) が含まれている数 コレクション型の定義の数 CONCATの数 ROWIDの数 ほぼ自動変換で対応可能:A 手動書換えなどが必要で見込み対応コストが~5人日:B 〃 5人日~:C ストアドファンクションがあるとレベル5 (シンプルなものであればレベル3)
Copyright (c) The Japan Research Institute, Limited 7/12 主要機能、特徴的な機能の紹介 -
②DDL変換・作成 技術統括部 DB-Architチーム ⚫ Oracle DB に接続し、変換内容をまとめたテキストファイルと PostgreSQL で実行できるDDLが記載されたSQLファイルを作成 ⚫ 実データを踏まえて手動書換えが必要なケースあり (TPCCスキーマでは1カラム、自動変換時に bigint となっていたが numeric に手動書換えが必要となった) columns.txt table.sql INDEXES_table.sql CONSTRAINTS_table.sql
Copyright (c) The Japan Research Institute, Limited 8/12 主要機能、特徴的な機能の紹介 -
③データ移行用DML作成 技術統括部 DB-Architチーム ⚫ Oracle DB に接続し、PostgreSQLで実行できるデータ移行用のSQLファイルを作成 ⚫ INSERTかCOPYを選択可能 INSERT.sql COPY.sql
Copyright (c) The Japan Research Institute, Limited 9/12 主要機能、特徴的な機能の紹介 -
④データ検証 技術統括部 DB-Architチーム ⚫ Oracle DB, PostgreSQL 両方に接続し、定義観点の検証、テーブル件数観点の検証、実データ観点の検証が可能 定義観点の検証:DDL実行前 DDL実行後 COLUMNS COUNT, INDEXES COUNT 以外の項目 UNIQUE CONSTRAINTS COUNT TRIGGER COUNT PRIMARY KEYS COUNT VIEW COUNT CHECK CONSTRAINTS COUNT MVIEW COUNT NOT NULL CONSTRAINTS COUNT SEQUENCE COUNT COLUMN DEFAULT VALUE COUNT TYPE COUNT FOREIGN KEYS COUNT FDW COUNT PARTITION COUNT FUNCTION COUNT TABLE COUNT SEQUENCE VALUES TABLE TRIGGERS COUNT SEQUENCE VALUES COUNT 不一致 一致
Copyright (c) The Japan Research Institute, Limited 10/12 主要機能、特徴的な機能の紹介 -
④データ検証 技術統括部 DB-Architチーム ⚫ Oracle DB, PostgreSQL 両方に接続し、定義観点の検証、テーブル件数観点の検証、実データ観点の検証が可能 テーブル件数観点の検証:DDL実行前 DDL実行後 データ移行後 不一致 一致 そもそも表がない
Copyright (c) The Japan Research Institute, Limited 11/12 主要機能、特徴的な機能の紹介 -
④データ検証 技術統括部 DB-Architチーム ⚫ Oracle DB, PostgreSQL 両方に接続し、定義観点の検証、テーブル件数観点の検証、実データ観点の検証が可能 ⚫ デフォルトでは、両DBからテーブルごとに10,000件抽出し、差分が10件あると検証を停止する (confファイルから変更可能) 実データ観点の検証:データ移行前 ----------------------------------------------------------------- Data validation for table ITEM: 10 FAIL ----------------------------------------------------------------- ORACLEDB:ITEM:1:[1|8845|YEf9V6oRDxlLEeW9buiQtmd|48.72|KUBCwq4oS2coriginalivEWj0wDJf] POSTGRES:ITEM:1:[|||] ORACLEDB:ITEM:2:[2|6957|45FC1IfVGpqgK5gfInkQ|10.38|W8WxWdOHIaFZ2SXEKJmdg61Wipy6cZPyJFkW] POSTGRES:ITEM:2:[|||] ORACLEDB:ITEM:3:[3|638|adKlHN8tiTz4Jj|2.74|gjtIV8ntROEOFkCnwnCPyugzthp6Y3OoriginalH7g] POSTGRES:ITEM:3:[|||] ORACLEDB:ITEM:4:[4|2035|1GCOZ1erLzeWS0zLggP|1.59|jiDbFoewzyAKMXnuFYo5EHvrrg5nVEAH7KEgxQO] POSTGRES:ITEM:4:[|||] ORACLEDB:ITEM:5:[5|6642|bxMqQrXAc3ecRD31F4et3q|45.5|lAg4l4NnE3QVxyVr7JXBzOoUZQkDh9ydK57MXkCNoFs] POSTGRES:ITEM:5:[|||] ORACLEDB:ITEM:6:[6|948|daTVDtsNKYUiipK4hxTOS|89.82|y0oOFTtKlNgqVaksSw0m1Zl4UpAfaFNXBvQ51l8Dn2C2Bm] POSTGRES:ITEM:6:[|||] ORACLEDB:ITEM:7:[7|2368|S7SU7VcBCFTEYQGvwhH7|6.42|vN44p76fr9I7FuJa0ycnmDVDu7voIJHHGzVnrKFRu5KavQq] POSTGRES:ITEM:7:[|||] ORACLEDB:ITEM:8:[8|2845|mgrgBeWlyig7vIvqb|54.01|fxOgz1B8NO4V5hDE28ek0Qf34enZZjVXIvNM0zpFfC] POSTGRES:ITEM:8:[|||] ORACLEDB:ITEM:9:[9|9705|aso1L6kkYElgtdOVjsMry|30.07|lDDYBoWKlLgZKtQAE5ampg3RM3pkkaEUsdXhsl7OxavbHGuREy] POSTGRES:ITEM:9:[|||] ORACLEDB:ITEM:10:[10|2338|wKJ10VjPpap2yf|74.66|GnmrU6v7fMXdndRvWPd6SAZZ4eteSf2FmiD] POSTGRES:ITEM:10:[|||] データ移行後 Data validation for table ITEM: OK CREATE TABLE item ( i_id integer, i_im_id bigint, i_name varchar(24), i_price decimal(5,2), i_data varchar(50) ) ; 参考:ITEM表の定義 不一致
Copyright (c) The Japan Research Institute, Limited 12/12 まとめ 技術統括部
DB-Architチーム ⚫ 導入、基本機能の試行は一日あれば十分可能 (学習コストは高くない) ⚫ 機能の制御が容易 (confファイルをviなどで編集) ⚫ スクラッチで移行ツールを設計・開発するより効率的で多機能 (制御可能項目は100以上) ⚫ 開発環境のオブジェクト定義が本番環境と同一であれば、アセスメントやDDL変換・作成は開発環境で実施可能 ⚫ Qiita や企業のテックブログなどで取り上げられており、情報が入手しやすい ⚫ 公式ドキュメントは英語のみ ⚫ すべて自動変換できるとは限らない為、アセスメントレポートを確認して手動変換にかかる工数を確保しておく <データシート:移行対象の規模感はP.2を参照> 処理 処理時間 (秒) アセスメントレポート作成 (P.4) 33 DDL変換・作成 (P.7) 127 データ移行用DML作成・INSERT (P.8) 132 データ移行用DML作成・COPY (P.8) 128 データ検証・定義観点 (P.9) 74 データ検証・テーブル件数観点 不一致 (P.10) 1 データ検証・テーブル件数観点 一致 (P.10) 1 データ検証・実データ観点 不一致 (P.11) 8 データ検証・実データ観点 一致 (P.11) 11