Oracle DatabaseからEDB(Postgrresql)への移行(案)

1) 事前評価(Assessment)

  • 目的:依存関係、互換性問題、Data types、サイズ、プロシージャ/トリガーの量、LOBやパーティションなどを洗い出す。
  • 推奨:EDBのMigration Portalでスキーマをアップロードして自動評価を行うと、互換性アセスメントと推奨変換が得られます。大規模ならプロファイリング(クエリ実行頻度、長時間実行クエリ)も実施。

2) ツール選定(何を使うか)

  • EDB Migration Portal / Migration Toolkit(EDB公式)
    スキーマ変換支援・DDL生成・一部のPL/SQL変換サポートがあるため、EDB(EPAS)に移すならまず有力候補。
  • ora2pg(OSS):
    無償で成熟したツール。スキーマ抽出・DDL変換・データエクスポートが可能で、多くの事例がある。小〜中規模やカスタム対応で有用。
  • CDC(継続レプリケーション)ツール(切替をほぼゼロダウンタイムで行う場合)
    例:Quest SharePlex、Debezium、または商用のレプリケーション製品。初期ロードはora2pg/EDBツール、差分はCDCで追従する設計が多い。

3) スキーマとコードの変換(DDL・ストアド・トリガー)

  • 自動変換ツール(Migration Portal / Migration Toolkit / ora2pg)でまずDDLとオブジェクトを変換。
  • 注意点:データ型(NUMBER→numeric/integer)、シーケンス、日付型、NULL/空文字の扱い、パーティション、LOBの扱い、Oracle固有の機能(パッケージ、カーソル、暗黙の型変換)等は手作業レビューが必要。
  • PL/SQLは自動変換で8〜9割対応できることもあるが、複雑なパッケージやダイナミックSQLは手動で書き換える必要が出る。EDBのEPASはOracle互換機能があり変換工数を削減できる場合がある。

4) データ移行(初期ロード)

  • 初期ロードはツールで一括エクスポート→インポート(CSV、COPY、または専用ロード)で行う。大容量データは並列ロード、インデックス・制約は後付けでロード効率を上げる。
  • LOBやBLOBは取り扱いに注意(ツールのドキュメント確認)。トランザクション境界やコミット頻度も調整する。

5) 差分同期・切替(ダウンタイム最小化)

  • 要件によるが「完全停止で一気に切替」か「ほぼゼロダウンタイム」か方法を決定。
  • ほぼゼロダウンタイムの場合:初期ロード後にCDCで変更を適用(SharePlex、Debezium等)→アプリケーションのリード/ライトを段階的に切替→最終同期→切替・検証。

6) テスト(機能・性能・回帰)

  • 単体テスト:ストアドプロシージャ、トリガー、例外処理、カーソルの動作を確認。
  • 負荷/性能テスト:インデックス、クエリプランの差異を洗い出し、必要に応じてインデックスや統計情報を調整。Postgres(EDB)はオプティマイザがOracleと異なるためチューニングが必要。

7) 運用準備と切替後チューニング

  • 監視、バックアップ/リカバリ(pg_basebackup/EDBツール)、権限・接続プール、運用手順を整備。
  • 切替後は実運用負荷を見てクエリチューニング、パラメータ調整(shared_buffers, work_mem 等)を行う。

典型的な移行パターン(小まとめ)

  1. 小〜中規模:ora2pgでスキーマ+データ → 手動でPL/SQL修正 → 切替(短時間停止)。
  2. 大規模/業務連続性重視:EDB Migration Portalで評価 → Migration Toolkit/EDBプロの支援で変換 → CDC(SharePlex/Debezium等)で差分同期 → 切替(ほぼゼロダウン)。

リスクと対策(重要)

  • PL/SQL互換性とアプリ変更工数を過小評価しない(プロシージャ/パッケージの再実装が発生)。
  • 性能差:同じSQLでも実行計画が異なるため、性能回帰の可能性あり → 本番同等負荷での検証必須。
  • 長期サポート/運用体制:DBAのスキルセット(Postgres運用)を確保すること。

推奨アクション(今すぐできること)

ダウンタイム要件が厳しいなら、CDCソリューション(例:SharePlex、Debezium)での差分同期設計を並行検討。

現行OracleのスキーマDDL(小さめのスキーマや代表的なスキーマ)を用意して、EDB Migration Portalへアップロードしてみる(互換性レポート取得)。

小さなスキーマでora2pgを試して、DDL・データ移行の流れをハンズオンで確認する(問題点を洗い出せます)。

関連記事

TOP