OracleDBからEPASへのマイグレーション アセスメント
EDBマイグレーションツールの概要
DB移行における検討ポイント
システム基盤
- システム構成におけるポイント
-性能保証(レスポンス・タイム、スループット)
-DB容量(データ成長率、長期保存)
-障害対応(DBインスタンス障害、サーバ障害、ストレージ障害、災害対策)
-拡張性(スケールアップ/スケールアウト)
-セキュリティ - システム運用におけるポイント
-起動/停止時処理
-バックアップ/リカバリ
-DBメンテナンス
-運用監視(プロセス監視、ログ監視、リソース監視、パフォーマンス監視)
-バージョンアップ/パッチ適用
-開発環境との連携
アプリケーション開発
- 開発言語
- ミドルウェア
- 使用DBオブジェクト ⇒ OMA/MTKの範疇
アセスメントの進め方
段階的にアセスメントを進める
移行候補のOracleDBが多い場合には、段階的にアセスメントされる事をお薦めします。
- ヒアリング・ベースで、移行対象可能なOracleデータベースを選別
- OMAツールを用いて、移行難易度を大まかに把握し、難易度付けを行う。
- 難易度の高い、もしくは、低いOracleデータベースに対し、MTKを用いてデータベース移行を実際に行ってみる。
- データベース定義 (テーブル、ビュー、ストアド・プログラム、等)
- テーブル・データ
- Oracleデータベース上から、パフォーマンス上注視すべきSQLについて、レスポンス評価を行う。
- データ・ベース・オブジェクト以外のものに対し、移行難易度を評価する。
- pPro*Cアプリ
- pJava プログラム
- p運用スクリプト (バックアップ・リカバリ、再編処理 )
- pSQL*Loader制御ファイル
アセスメントにおけるポイント
- 明らかに移行困難なケースは、初期段階で断念するのもありかと思います。
⇒ ERP、Oracle OLAP、Pro*COBOLアプリ、市販OLE使用等 - EDB Postgres Advanced Server (EPAS)〜Oracle Database間で、Oracle視点での機能マッピングを行うと、当然、PPASにないものがでてきます。(もちろん、EPAS/PostgreSQL にしかない機能もありますが) NG判断の前に、サード・パーティ製品、高性能H/Wの活用や、アーキテクチャの変更を検討下さい。
- アセスメントにおいて、OMA(Oracle Migration Assessment)ツールとMTK(Migration Toolkit)の2つがあります。オブジェクト移行難易度の精度を上げるため、アセスメントの段階で、両ツールの実行をお薦め致します。特に、ストアド・プログラムは、MTKで実際に移行しないと判断が難しいケースがあります。
- 移行検証ツールは提供されていないので、自前で手順やツールを準備する必要があります。
- OMA及びMTK共に、データベース・オブジェクトの移行難易度のアセスメントのみ行います。SQL*Loaderや運用スクリプト、性能面への影響や、アプリケーション(JavaやPro*C等)の変更度合いなどは対象外となりますので、別途、アセスメント が必要です。
データベース評価の実施手順
Oracle Migration Assesment(OMA)の概要
- Oracleデータベースのデータ・ディクショナリから、EPAS側で非サポートかもしれないものを、キーワード検索してレポーティングしてくれるアセスメント・ツール。
- アセスメント・ツールなので、データ移行などは、一切行わない。
- 基本的に、PPAS9.1/9.2ベースでレポートされる。新しいバージョンでは、対応されているものも出力されるので、マニュアル等で調査が必要。
- 出力ファイルは、以下の2種類
- summary.analysis どのような問題があるか、その数を把握可能
- <schemaname>.out 各スキーマ事の問題のある箇所を把握可能
- 製品には付属されていない。もともとは、プリセール段階で、移行難易度を評価し、コンサルテーション等に繋げるものなので、アセスメント精度は比較的粗い。但し、多くの移行対象データベースの移行難易度を、短時間で把握するのには適する。
- SJIS/EUC のOracleの場合、出力されたCSVファイルは、SJISもしくはEUCエンコーディングとなっているため、UTF8に変換が必要です。
- マニュアルはなし。
OMA実行イメージ
①で検索されるOracleデータ・ディクショナリ・ビュー
- dba_tables
- dba_indexes
- dba_part_tables
- dba_part_indexes
- dba_nested_tables
- dba_triggers
- dba_dimensions
- dba_synonyms
- dba_mviews
- dba_db_links
- dba_source
- dba_jobs
- dba_outlines
- dba_policies
- dba_coll_types
- dba_varrays
- dba_profiles
- dba_users
- dba_repobject
- dba_views
- dba_tab_columns
①で検索される様々な機能
- Materialized View Usage
- Profiles
- Oracle Specific Function Search
- Resource Manager
- Replication Usage
- Database Link
アセスメントレポート②の出力例: Summary CSV Example
1,MEDNETSTUDY,24-FEB-12,orcl,SGS,BACKGROUND,Database Version,112010,0
2,MEDNETSTUDY,24-FEB-12,orcl,SGS,BACKGROUND,Total Database Size(GB),3.93,0
3,MEDNETSTUDY,24-FEB-12,orcl,SGS,BACKGROUND,Total Schema Size(MB),1440.6875,0
4,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,DATABASE LINK,16,0
5,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,FUNCTION,41,0
6,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,INDEX,9833,0
7,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,LOB,499,0
8,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,PROCEDURE,1,0
9,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,SEQUENCE,6672,0
10,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,TABLE,12220,0
11,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,TRIGGER,150,0
12,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,TYPE,8,0
13,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,VIEW,4567,0
14,MEDNETSTUDY,24-FEB-12,orcl,SGS,OBJECTS,Total Object Count,34007,0
15,MEDNETSTUDY,24-FEB-12,orcl,SGS,CONSTRAINTS,CHECK OR NOT NULL,21481,0
16,MEDNETSTUDY,24-FEB-12,orcl,SGS,CONSTRAINTS,FOREIGN KEY,10567,0
17,MEDNETSTUDY,24-FEB-12,orcl,SGS,CONSTRAINTS,PRIMARY KEY,5973,0
18,MEDNETSTUDY,24-FEB-12,orcl,SGS,CONSTRAINTS,UNIQUE KEY,120,0
19,MEDNETSTUDY,24-FEB-12,orcl,SGS,DATATYPE,Count,0,1
アセスメントレポート②の出力例: Detail CSV Example
1,MEDNETSTUDY,24-FEB-12,orcl,PDG,EXACT_CAS_PROCEDURE_VU,DATATYPE,CASP_PROC_POSTSTENT_DIAM,NVARCHAR2,,,,,,,,
2,MEDNETSTUDY,24-FEB-12,orcl,PDG,EXACT_CAS_PROCEDURE_VU,DATATYPE,CASP_PROC_PREFILT_BAL_DIAM,NVARCHAR2,,,,,,,,
3,MEDNETSTUDY,24-FEB-12,orcl,PDG,RAPID_SEARCH,DATATYPE,PS_FORMID,NVARCHAR2,,,,,,,,
4,MEDNETSTUDY,24-FEB-12,orcl,PDG,RIGHT_SEARCH,DATATYPE,PS_FORMID,NVARCHAR2,,,,,,,,
5,MEDNETSTUDY,24-FEB-12,orcl,PDG,VALSITE_LANG_STRING,DATATYPE,LS_KOR,NVARCHAR2,,,,,,,,
6,MEDNETSTUDY,24-FEB-12,orcl,PDG,NVL_VAL_INCFLAG1_IDX,INDEX,ACT1_VALIDATION,FUNCTION-BASED NORMAL,TABLE,DEFAULT,DISABLED,1,ENABLED,,,
7,MEDNETSTUDY,24-FEB-12,orcl,PDG,NVL_VAL_INCFLAG2_IDX,INDEX,ACT1_VALIDATION,FUNCTION-BASED NORMAL,TABLE,DEFAULT,DISABLED,1,ENABLED,,,
8,MEDNETSTUDY,24-FEB-12,orcl,PDG,NVL_VAL_INCFLAG3_IDX,INDEX,ACT1_VALIDATION,FUNCTION-BASED NORMAL,TABLE,DEFAULT,DISABLED,1,ENABLED,,,
9,MEDNETSTUDY,24-FEB-12,orcl,PDG,NVL_VAL_INCFLAG4_IDX,INDEX,ACT1_VALIDATION,FUNCTION-BASED NORMAL,TABLE,DEFAULT,DISABLED,1,ENABLED,,,
10,MEDNETSTUDY,24-FEB-12,orcl,PDG,NVL_VAL_INCFLAG5_IDX,INDEX,ACT1_VALIDATION,FUNCTION-BASED NORMAL,TABLE,DEFAULT,DISABLED,1,ENABLED,,,
11,MEDNETSTUDY,24-FEB-12,orcl,PDG,NVL_VAL_INCFLAG6_IDX,INDEX,ACT1_VALIDATION,FUNCTION-BASED NORMAL,TABLE,DEFAULT,DISABLED,1,ENABLED,,,
12,MEDNETSTUDY,24-FEB-12,orcl,PDG,NVL_VAL_INCFLAG7_IDX,INDEX,ACT1_VALIDATION,FUNCTION-BASED NORMAL,TABLE,DEFAULT,DISABLED,1,ENABLED,,,
Migration Tool Kit(MTK)の概要
- 製品に付属されている、データベース移行ツールで、Oracleだけでなく、MS SQL Server/MySQL/Sybase 等からの移行が可能。Oraceの場合は、ストアド・プログラムやロールも移行可能。
- Javaベースのアプリで、基本的に、JDBCを用いてDB接続を行う。
- キャラクタ・セットがSJISTILDAのOracleデータベースから、サーバ・エンコーディングがUTF-8のPPASへのデータ移行が可能。
- オンライン・モード、オフライン・モードの選択が可能。
- オブジェクト名の大文字/小文字の違いも吸収可能。(PPAS9.4〜)
- マルチ・バイトでオブジェクト名を定義している場合は要注意。
- 移行できないオブジェクトは、ログに出力されるので、手動でリカバリを行う。
- マニュアルは、「Postgres Plus Migration Guide」
MTK実行イメージ
OMAの実行手順
On Production System
1.Export Oracle Database dump with data-less mode by using exp/expdp
On Oracle database in SIer
2.Import dump data to Oracle Database by using imp/impdp
3.Execute edborascan.sql on SQL*Plus
4.Get CSV file which generated in step#3
On PPAS database in SIer
5.Copy CSV file (generated in step#4) from oracle environment to PPAS environment ** same directory which analyze.sh will be copied
6.(if needs) install PPAS
7.Creata database name :orascanner
8.Execute edborascan_tables.sql on psql
9.Execute edborascan_views.sql on psql
10.Execute scanrpt_new.sql on psql
11.Edit the line include “PPBIN” environemt variable(line#5) of analyze.sh
12.Execute analyze.sh on linux terminal
How to execute edborascan.sql
OMAの実行手順(イメージ)
MTK の実行手順
- JDBC Driver for Oracleのインストール
- $JAVA_HOME/jre/lib/ext 配下に置く
- toolkit.properties ファイルの編集
- ツールの実行
- rootユーザで実行します。
<実行例>
> $cd EDBHOME/bin
> ./runMTK.sh -dropSchema true -targetSchema hr -logBadSQL -logDir /root/enterprisedb/mtklog/9.4 -verbose on HR
- rootユーザで実行します。
toolkit.properties ファイル
- SRC_DB_URL=jdbc:oracle:thin:@localhost:1521:xe
- SRC_DB_USER=system
- SRC_DB_PASSWORD=XXXXX
- TARGET_DB_URL=jdbc:edb://localhost:5446/hr
- TARGET_DB_USER=enterprisedb
- TARGET_DB_PASSWORD=YYYYY
Migration Tool Kit(MTK) 9.4
ログ・ファイル名(フォーマットが変わりました)
[ 〜 PPAS9.3 ]
mtk_<timestamp>.log
[ PPAS9.4 〜 ]
mtk_<schemaname> _<timestamp>.log
Migration Tool Kit(MTK) 9.4
追加されたオプション
- -useOraCase
Oracle のデフォルトであるアッパーケースに変換して移行を行う
【! 注意】Oracle側で、大文字と小文字が混在している状態でも、このオプションをつけると、すべて大文字で移行される - -logBadSQL
エラーが発生したオブジェクトについて、そのDDL文をファイルに残す指定。
ファイル名 = mtk_bad_sql_schemaname_timestamp.sql
Migration Tool Kit(MTK) 9.4 〜 -useOraCaseオプション
-useOraCaseオプションを使用しない場合
./runMTK.sh -dropSchema true -targetSchema beta94 -logBadSQL -verbose on scott,beta94
-useOraCaseオプションを使用 した場合
./runMTK.sh -dropSchema true -targetSchema beta94 -useOraCase -logBadSQL -logDir /root/enterprisedb/mtklog/9.4 -verbose on scott,beta94
Migration Tool Kit(MTK) 9.4 -logBadSQL オプション
結果ログ(抜粋)
OracleDBからEPASへのマイグレーション事例
薬学共用試験センター、74大学の中継サーバをOSSデータベースに移行し、システムの安定性維持とコスト削減を実現
特定非営利活動法人 薬学共用試験センター様は、薬学共用試験の一つであるCBTシステムのオープンシステム化を目指し、74大学すべての中継サーバをオープンソース・ソフトウェア(OSS)ベースのデータベース「EDB Postgres」に移行。入念な事前検証により短期間で移行を完了し、システムの安定性維持とコスト削減を実現しました。
詳細は富士通SSL社ホームページにて。