OracleからMySQLへ 「ストアドプロシージャ」の移行手順と工数評価:実践 OSSデータベース移行プロジェクト(6)(3/3 ページ)
本連載では、商用DBMSからOSSデータベースへの移行を検討する企業に向け、「MySQL」への移行プロジェクトで必要となる具体的なノウハウをお届けします。今回は、ストアドプロシージャの移行に関する難易度評価の手順を解説します。
評価3:「PL/SQL例外処理」に関する評価結果
Oracle Databaseでは、ストアドプロシージャの例外処理を「EXCEPTION」句を使って実現します。一方のMySQLでは、それを「CONTINUE HANDLER FOR」句を使って実現する違いがあります。
このPL/SQL例外処理の使用状況について調べたところ、57個のストアドプロシージャで使われていました。移行コストは以下の理由で「中程度」と評価されます。
- 変更対象のストアドプロシージャが比較的多いこと
- 変更対象のストアドプロシージャを個々に処理の流れを把握する必要があり、ソースコードの修正において機械的な文字列変換ができないこと
評価4:「PL/SQLパッケージ」に関する評価結果
ストアドプロシージャには、「PL/SQLパッケージ」と呼ばれるPL/SQL独自関数を用いていることが多くあります。PL/SQLパッケージの使用状況を調べたところ、独自関数の1つである「DBMS_OUTPUT」パッケージが実装されていました。このパッケージについて評価を行います。
サブプログラム | 概要 | 構文例 | 本システムでの個数 |
---|---|---|---|
PUT_LINE | 行をバッファーに設定する | DBMS_OUTPUT.PUT_LINE ('!!ERROR ProgramXXX!!'); | 139 |
一般的に「DBMS_xxxxx」パッケージをMySQLに移行する場合は、以下の2つの方法が考えられます。
- MySQLでDBMS_xxxxxパッケージと同機能を有するユーザー定義関数を作成する
- ストアドプロシージャをCALLするスクリプトにDBMS_xxxxxパッケージと同じ機能を持たせる
移行コストを把握するための(1)の手順は以下の通りです。
- ステップ1:新規ユーザー定義関数のC/C++ソースコードを作成する
- ステップ2:ソースコードをコンパイルする
- ステップ3:共有オブジェクトファイル(.so(Linux)/.dll(windows))のデプロイと、環境変数の変更を行う
- ステップ4:MySQL関数を登録する(CREATE FUNCTION)
詳細は、MySQL リファレンスマニュアル「24.3.2.5 UDF Compiling and Installing(ユーザー定義関数のコンパイルおよびインストール)」も参照してください。
調査結果のまとめ
以上、今回はDMBS移行プロジェクトの移行評価作業のうち、「ストアドプロシージャの移行難易度」を評価しました。
筆者が携わった移行プロジェクトの経験から、「PL/SQL独自属性」や「PL/SQL例外処理」を多く用いたストアドプロシージャを利用しているシステムは多くあると推定されます。併せて、手順3で解説したOracleストアドプロシージャはカーソル処理を使った一般的なコーディング例となりますが、皆さんの環境のストアドプロシージャにも似たコーディングがされていると思います。移行難易度の評価は地道な作業ですが、ぜひ本記事を参考に正しく確実に移行の難易度を評価するようにしてください。
次回は、Oracle DatabaseからMySQLへの移行に向けた「トリガの移行評価手順」を解説します。
筆者紹介
廣濱顕司(ひろはま けんじ)
SCSK株式会社 ITマネジメント事業部門 基盤インテグレーション事業本部 通信基盤インテグレーション部所属。東京都出身 東京都在住。MySQLやMySQL Clusterのコンサルティング、設計構築、プリセールスなどを行っていたが、最近は営業やマーケティング活動もカバーするようになり、技術が分かる営業として日本国内を縦断中。
荻野邦裕(おぎの くにひろ)
SCSK株式会社所属。神奈川県横浜市在住。1983年よりIT業界へ。その間Oracleを中心とした、DB関連作業を多数経験。DBの移行を得意とする。趣味は自己チューニング(水泳、マラソン、筋トレ)及び愛犬アポロ(チワワ)と遊ぶこと。
潮雅人(うしお まさと)
SCSK株式会社 ITマネジメント事業部門 基盤インテグレーション事業本部 通信基盤インテグレーション部所属。神奈川県川崎市在住。入社当初よりデータベースの設計構築や技術サポート業務に従事。MySQLを中心にしつつもOracle Database、Oracle RACなどの構築にも携わる。趣味はスノーボード、スキューバダイビング、海外旅行など。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
「Oracle Databaseをやめる」という選択肢
Oracle Databaseのライセンス体系が変更され、これまでSE1/SEを利用していたユーザーは「実質の値上げを受け入れる」か「Oracle Databaseをやめる」かの選択が迫られています。本連載では、商用DBMSからOSSデータベースへの移行を検討する企業に向け、「MySQL」への移行プロジェクトで必要となる具体的なノウハウをお届けします。初回は、本連載を展開する背景を説明します。MySQLの「気になるウワサ」はどこまで本当?
Webの世界で人気の高いオープンソースRDB「MySQL」は、振り返ると買収や分岐など、運命に翻弄されてきましたが、中には正しくない話も出回っているようです。あの話は、本当ですか?MySQL+Apache+PHPをインストールしよう
本連載は、これからWebアプリケーション開発を習得しようとする方や本格的なプログラミング経験の少ない方を対象にしています。連載途中から始まるサンプルWebアプリケーション(簡単なショッピングサイト)開発を進めていきながら、基本事項や注意点などについて詳しく解説していきます。OSSデータベースのMySQLとPostgreSQLは「次の段階」へ進む
オープンソースデータベースの両雄、MySQLとPostgreSQLはどちらも近々大きく変化を遂げそうです。まだ公式発表前ですが、現在入手できる情報から「来たるべき進化」を考えます。いよいよMySQL編、ソースからビルドすべきか?
今回から、オープンソースのRDBMSである「MySQL」の環境構築に話題を移します。まずはソースコードを探して入手と行きたいところですが、MySQLの場合はソースコードからのビルドが最善の策かどうかを考える必要があります(編集部)