連載
» 2017年04月18日 05時00分 UPDATE

実践 OSSデータベース移行プロジェクト(5):OracleからMySQLへ 「SQL」と「DDL」の移行評価を実施する (1/3)

本連載では、商用DBMSからOSSデータベースへの移行を検討する企業に向け、「MySQL」への移行プロジェクトで必要となる具体的なノウハウをお届けします。今回は、Oracle DatabaseからMySQLへの移行に向けた「SQL」と「DDL」の移行評価ポイントを解説します。

[荻野邦裕,SCSK株式会社]

連載バックナンバー

 商用DBMSからOSSデータベースへの移行を検討する企業に向け、「MySQL」への移行プロジェクトで必要となる具体的なノウハウをお届けする本連載。前回は、Oracle DatabaseからMySQLへの移行計画に必要な、オブジェクトとデータ型の移行コストを評価しました。

 今回も前回と同様に、「Oracle Database 11.2.0.4 Standard Edition One(SE1)」から「MySQL 5.7 Community Edition(ストレージエンジン:InnoDB)」への移行を計画する、ある製造業(仮名:株式会社豊洲部品)の架空プロジェクトを例とし、「SQL(Structured Query Language)」とテーブルおよびインデックスの「DDL(Data Definition Language)」の移行を考察します。ここで取り上げるSQLは、ビュー、ストアドプロシージャ、DMLトリガ内で利用されるSELECTクエリを主なターゲットとしています。

 なお株式会社豊洲部品(仮名)の現システム規模は、以下のOracle環境であるという前提で話を進めていきます。これはOracle Databaseのライセンス体系変更に伴い、コスト増の回避策を含めてMySQLへ移行するのに適していると位置付けられる構成の一例となります。また、本稿で評価結果として提示したSQL関数の数やヒント句の数などは、全て架空の値となります。

現(移行前)Oracle環境
OS Windows2008R2 64bit
プロダクト名(バージョン) Oracle Database 11g R2 SE1(11.2.0.4.0)
データベース名 APODB
ブロックサイズ 8192バイト
キャラクタセット JA16SJIS
各国語キャラクタセット AL16UTF16
接続モード 専用サーバモード
ユーザーデータ容量 約200GB
最大同時接続数 100
アプリケーション VB(oo4o)、PL/SQLストアドプロシージャ

手順1:SQLとDDLの評価目的を理解する

 本評価は、以下の2項目の情報を把握して、MySQLへ移行する場合の「コスト(=作業量)を把握する」ことが目的です。

  • 現在実装しているビュー、ストアドプロシージャ、DMLトリガ内で使われているSELECTクエリ
  • 現在実装しているテーブルやインデックスのCREATE文

 作業コストは、以下の3段階で評価します。

  • 移行コスト:(0〜0.5人月)
  • 移行コスト:中程度(0.5〜1人月)
  • 移行コスト:(1人月以上)

手順2:SQL、DDL情報を取得する

 SQLおよびDDLの情報は、以下2通りの取得方法があります。

  1. 「DBMS_METADATA」パッケージ「GET_DDL」ファンクションを使用する
  2. 「DataPumpユーティリティー」を使用する

1:「DBMS_METADATA」パッケージ「GET_DDL」ファンクションを使用する

 「SQL*Plus」を起動し、第1パラメータに「オブジェクトタイプ」、第2パラメータに「オブジェクト名」、第3パラメータに「スキーマ」を指定して実行すると、パラメータに指定したDDLが戻されます。

SQL> set long 2000000
SQL> set pages 0
SQL> select dbms_metadata.get_ddl('TABLE','SHAIN', 'APR1') from dual;
 
CREATE TABLE "APR1"."SHAIN"
(   "SHAIN_ID"     NUMBER(10), 
(省略)
"KOUSHIN_DATE" DATE,
PRIMARY KEY ("SHAIN_ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
(省略) 
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "APRDATA1"
DDL取得例

2:Data Pumpユーティリティーを使う

 DataPumpユーティリティーでは、以下のコマンドを用いて情報を取得できます。

  • (1)「expdp」コマンドでメタデータをエクスポートする
expdp USER/PASSWD FULL=Y CONTENT=METADATA_ONLY DUMPFILE=IKO_DIR:full_meta.dmp 
EXCLUDE=STATISTICS LOGFILE=IKO_DIR:exp_full_meta.log
(例)
  • (2)「impdp」コマンドでメタデータからSQL文(DDL:Data Definition Languageなど)を生成する
impdp USER/PASSWD DUMPFILE=IKO_DIR:full_meta.dmp SQLFILE=full_meta.sql
LOGFILE=IKO_DIR:cr_sql.log
(例)
  • (3)(2)で生成されたDDLから調査を行う

 テキスト編集ツールを用いて、(2)で生成されたアプリケーションスキーマのDDLから調査を実施します。

 (*:Data Pumpユーティリティーを使う手順は、第4回「オブジェクトとデータ型の「移行コスト評価」を実施する」と同じです)

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。