db tech showcase

dbtsブログ

このエントリーをはてなブックマークに追加

【dbts2025 レポート】PostgreSQL移行の技術的ポイントと解決ノウハウを複数事例からご紹介

テクノロジー ユーザー事例 中級者向け
【dbts2025 レポート】PostgreSQL移行の技術的ポイントと解決ノウハウを複数事例からご紹介

こんにちは、コンサルティング本部志岐です。
db tech showcase 2025 1日目のC3のセッションである「PostgreSQL移行の技術的ポイントと解決ノウハウを複数事例からご紹介」のレポートをお届けします。

セッション概要

近年、システムのモダナイゼーションとクラウドリフトが進む中でDBの移行先としてPostgreSQLが注目されるようになってきており、NECではOracleをはじめとする商用DBからPostgreSQLへの移行案件を支援してきました。
本セッションではOracleからPostgreSQLへの移行を支援した複数の事例をもとに、DB移行作業の全体像と、その中で発生する課題やトラブルへの対応事例を共有し、PostgreSQL移行を検討している方々に参考にしていただきたいと思います。
現環境へのアセスメント、DDLやSQLの変換、変換したSQLが動作はしたが性能が出なかった場合のチューニング対応などの事例を紹介いたします。

スピーカー名:
NEC
プラットフォーム・テクノロジーサービス事業部門
データ基盤サービス統括部
湯村 昇平 様

はじめに

Oracle⇒PostgreSQL移行を複数件手がけてきた事例の中で、よく相談される、課題となるポイントとその対応方針を紹介していただきました。

移行の中でよく課題となるポイントは以下の3つでした。
①アセスメント
②SQLやオブジェクトの変換
③動作/性能評価

それぞれのポイントについて学んだことを本レポートでは共有します。

セッション内容まとめ

①アセスメント

要件を満たしているかを確認するアセスメントはプロジェクトにおいて重要で、主に以下のようなアクションを行います。
・PostgreSQLで次期環境に求められる要件が満たせるかどうかの確認
・DDLやSQLを分析し、非互換箇所と移行難易度を調査
・性能要件の担保のためにPoC(概念実証)を実施

例えば、非互換箇所・代替機能調査では、Oracle RACの高可用性機能はPostgreSQLのストリーミングレプリケーションで代替可能だが、中断されたトランザクションを別インスタンスで再開する機能などOracleRAC特有の機能は制限事項となることなどは判断材料として調べておく必要があります。

性能要件の観点では、移行元でSQLを実施したときよりも処理時間が長くなり性能が劣化していないか、変換したSQLで期待する結果が得られるか等の観点でPoCを行います。

非互換箇所や代替機能の調査など、性能要件を満たしているか等を総合的に評価し、次期環境の設計・構築に入る前に、PostgreSQLに移行するかどうかを判断する必要があります。

②SQLやオブジェクトの変換

Oracle ⇒PostgreSQLのSQL変換の際によくある課題について説明していただきました。

・Oracleにないデータ型、関数、文法の置き換え
⇒Ora2PgやAWS SCTなどの自動変換ツールは有効ですが、仕様や挙動が異なるケース(例: DATE型、Nullと空文字の扱い、SUBSTR/LENGTHの違い)に注意し、手動調整・確認が必要になります。

動的SQLは自動変換ツールでは対応できないため、手動抽出が必要という注意点もありました。
手動で抽出する場合、手間がかかる割に網羅性に不安が残るといったこともあると思いますが、Insight SQL Testing を利用すれば、移行元環境で実際に実行されているSQLをキャプチャすることができます。

・PL/SQL(ストアドプロシージャ)変換
⇒Oracleが提供しているパッケージ(DBMS_xx、UTL_xx)もユーザ定義関数など独自に用意しなおす必要があったり、プロシージャ内のCOMMIT、ROLLBACKは仕様が異なったり、基本的に人手と工数をかけて手動変換することになります。

③動作/性能評価

アーキテクチャやオプティマイザ、処理特性の違いにより、一部SQLで性能劣化の可能性があり、単発SQLでは見つけられない不具合や、移行元に近い負荷状況での性能要件を満たしているかを確認する必要があります。セッションでは、実行計画も見せていただきながら、以下のような具体的な事例と解決ポイントを教えていただきました。

具体的な性能劣化ケース:
・LIKE前方一致での索引不使用
⇒PostgreSQLのロケールをCにして解決

・SCTで移行したSQLでの索引不使用
⇒自動変換後のSQLで使われていた関数 aws_oracle_ext を使用しないことで解決

・副問い合わせ(サブクエリの中で時間がかかる)
⇒LATERAL句を使って処理を効率化し解決

聴講した感想

 Oracle ⇒ PostgreSQL 移行の複数事例をもとにしたリアルな課題がまとまっていて、とても勉強になりました。セッションで教えていただいたようなポイントをもとに調査・検証を行い、事前に課題となるポイントを把握することで、円滑にプロジェクトが進められそうだと思いました。
今回のセッションで学んだポイントや、チューニングの仕方などは、今後異種DBへの移行プロジェクトで活かせると思います。

一覧に戻る