...

4 使用可能化のシナリオ

by user

on
Category: Documents
33

views

Report

Comments

Transcript

4 使用可能化のシナリオ
4
Chapter 4.
使用可能化のシナリオ
DB2 9.7 の DB2 互換性フィーチャーを使用することにより、最小限の変更で、
または変更なしで Oracle データベース・アプリケーションを DB2 に移行する
ことができます。ここまでのいくつかの章で、ネイティブ・サポートの構文や
使用可能化ツールなど、DB2 での互換性フィーチャーのほとんどについて説明
してきました。この章では、マイグレーションの工程の全体を示すシナリオを
示します。新しい互換性フィーチャーにより、変換処理がどれほど簡単に行え
るかを理解することができます。
このシナリオの一部として、DB2 ソフトウェアのインストール方法、また
Oracle 互換モードで DB2 データベースを作成する方法を示します。その後、デ
モとして、IBM データ移動ツール (DMT) を使用することにより、Oracle デー
タベース Sales およびそれに付随する PL/SQL アプリケーションを DB2 に移行
する作業について説明します。
この章に含まれるトピックは、以下のとおりです。
򐂰
򐂰
򐂰
򐂰
򐂰
򐂰
DB2 のインストールとインスタンスの作成
SQL 互換性の使用可能化
ターゲット DB2 データベースの作成と構成
データベース管理者権限を持つ追加のデータベース・ユーザーの定義
IBM データ移動ツールの使用による使用可能化
使用可能化の検証
© Copyright IBM Corp. 2009. All rights reserved.
#
4.1 DB2 のインストールとインスタンスの作成
DB2 9.7 をどのプラットフォームにインストールするにしても、必要とされる
ハードウェア要件とソフトウェア要件のすべてを十分検討し、それらが満たさ
れているようにしてください。この作業のために、インストールの要件とオプ
ションを注意深く検討することをお勧めします。それらは、DB2 インフォメー
ション・センターの以下のトピックに記載されています。
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.qb.server.doc/doc/r
0025127.html
このトピックに関する詳細情報を得る上で、以下の DB2 資料も有用です。
򐂰 DB2 インストールおよび管理 概説 (Linux および Windows 版 ) (GD88-6767)
򐂰 DB2 サーバー機能 概説およびインストール (GD88-6766)
򐂰 DB2 クライアント機能 概説およびインストール (GD88-6764)
注 : ソフトウェア要件の最新情報については、以下を参照してください。
http://www.ibm.com/software/data/db2/udb/sysreqs.html
DB2 データベース・サーバーのサンプル・シナリオ環境は、Red Hat Linux が
実行されているマシンを想定しています。
4.1.1 db2setup を使用した DB2 のインストール
まず、DB2 ソフトウェアを入手する必要があります。パスポート・アドバン
テージのアカウントをお持ちでない場合は、「試用版」モードの DB2 をダウン
ロードできます。これは、インストール後 90 日間ご利用いただけます。このア
プリケーションをダウンロードするには、以下のアドレスを参照してください。
http://www-01.ibm.com/software/data/db2/9/download.html
DB2 のインストールには、セットアップ・ウィザードの GUI を使用するようお
勧めします。しかし、DB2 のインストールは、コマンド行モードを使用して、
あるいはサイレント ( ハンズ・フリー ) モードでも可能です。
それぞれのインストール方法について詳しくは、インフォメーション・セン
ターで以下のトピックを参照してください。
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.qb.serve
r.doc/doc/c0008711.html
158
Oracle to DB2 Conversion Guide: Compatibility Made Easy
DB2 Enterprise Server Edition 9.7 for Linux, UNIX, and Windows をダウンロー
ドおよび解凍した後、管理者 (Administrator) ユーザー ID を使用して
.\ESE\setup.exe コマンドを実行してください。このコマンドを実行すると、
図 4-1 のように DB2 セットアップ・ランチパッドが起動します。
図 4-1 DB2 セットアップ・ランチパッド
「製品のインストール」オプションを選択し、DB2 セットアップ・ウィザード
のウィンドウに表示される指示に従ってインストールを進めます。その際、デ
フォルト値をそのまま使用してください。DB2 管理者用に、新しいユーザー ID
(db2inst1) を指定してください。インストール作業の一部として、それが作成
されます。
インストールが終了すると、DB2 セットアップ・ウィザードにより、インス
トールが正常に終了したことを確認するためのウィンドウが表示されます。
Chapter 4. Enablement scenario
159
4.2 SQL 互換性の使用可能化
Chapter 2, “Language compatibility features” on page 21 で説明したとおり、
DB2 データベースを作成する前に、Oracle 互換モードで DB2 インスタンスを使
用可能にする必要があります。この作業は、DB2_COMPATIBILITY_VECTOR
と DB2_DEFERRED_PREPARE_SEMANTICS という 2 つのレジストリー変数を
設定することによって実行します。互換性が設定されたら、db2stop コマンド
と db2start コマンドを実行することによってインスタンスを再始動します。
例 4-1 を参照してください。
例 4-1 Oracle データベース互換性フィーチャーの使用可能化
/home/db2inst1>db2set DB2_COMPATIBILITY_VECTOR=ORA
/home/db2inst1>db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES
/home/db2inst1>db2set -all
[i] DB2_COMPATIBILITY_VECTOR=ORA
[i] DB2_DEFERRED_PREPARE_SEMANTICS=YES
[i] DB2COMM=tcpip
[g] DB2INSTDEF=db2inst1
/home/db2inst1>db2stop
SQL1064N DB2STOP processing was successful.
/home/db2inst1> db2start
SQL1064N DB2STOP processing was successful.
4.3 ターゲット DB2 データベースの作成と構成
例 4-2 に示すのは、CREATE DATABASE コマンドと、データベース作成後の作
業を行うコマンドをいくつか含むスクリプトです。このスクリプトは、データ
ベース・サーバー上でユーザー db2inst1 としてログインして実行します。その
ようにすれば、CONNECT TO コマンドでユーザー ID とパスワードを指定する
必要はありません。それらについては、暗黙のうちにオペレーティング・シス
テムから取得されます。
例 4-2 サンプル・シナリオ・データベースを作成するためのスクリプト
CREATE DATABASE sales PAGESIZE 32 K AUTOMATIC STORAGE /home/db2inst1 restrict;
CONNECT TO sales;
CREATE USER TEMPORARY TABLESPACE user_temp;
UPDATE DB CFG USING auto_reval deferred_force;
UPDATE DB CFG USING decflt_rounding round_half_up;
TERMINATE;
このスクリプトを実行するには、以下のコマンドを使用します。
158
Oracle to DB2 Conversion Guide: Compatibility Made Easy
db2 -tvf <scriptname>
注 : デフォルトで、DB2 データベースは Unicode で作成されます。
この使用可能化サンプル・シナリオのために使用するコマンド・パラメーター
には、データベースの設計、将来の管理作業、および初期チューニング作業を
シンプルにするのに役立つ DB2 の機能がいくつか含まれています。また、いく
つかの自動化機能も使用されています。それらは、デフォルトで有効になって
おり、それらを利用するための構文は特に必要ありません。それらの機能のい
くつかについて、以下に説明します。
򐂰 AUTOMATIC STORAGE
このフィーチャーはデフォルトで有効になっており、これを使用する場合、
表スペースのサイズや位置を構成したり、表スペースのサイズが大きくなっ
ていく場合にその保守のための作業をしたりする必要はありません。Linux
および AIX のプラットフォームの場合、DB2 によって作成されるデータ
ベースとその表スペースは、デフォルトでは、ユーザーによって指定される
パスにある、インスタンス所有者のホーム・ディレクトリー
(/home/db2inst1 など ) の下に入れられます。
򐂰 PAGESIZE 32 K
CREATE DATABASE コマンドによって使用されるデフォルトのページ・サ
イズは 4 KB です。ここでは、使用可能な最大のページ・サイズを選択する
ことにより、そのデフォルト値をオーバーライドしています。これは、行サ
イズが小さい表と大きい表の両方のマイグレーションを処理するためです。
򐂰 RESTRICTIVE
このパラメーターは、デフォルトではグループ PUBLIC に何も特権を付与し
ないことを指定します。これにより高いレベルのセキュリティーが設定され
ます。このサンプル・シナリオでは、このオプションを実装しないことにし
ました。
データベースの作成後、以下の変更を加えています。
򐂰 GLOBAL TEMPORARY TABLESPACE
USER TEMPORARY 表スペースを作成しています。これは、サンプル・シ
ナリオにおいて、この後、GLOBAL TEMPORARY TABLE の作成を可能に
するためです。このシナリオでは、使用可能化のために IBM DMT を使用し
ていますが、このツールでも GLOBAL TEMPORARY TABLE が作成される
ため、ここではこのコマンドをスキップすることもできます。
򐂰 AUTOMATIC REVALIDATION
データベース構成パラメーター AUTO_REVAL が DEFERRED_FORCE に変
更されています。これについては、2.1.1, “SQL compatibility setup” on
page 23 の説明を参照してください。
Chapter 4. Enablement scenario
159
򐂰 DECIMAL FLOAT POINT ROUNDING
もう 1 つのデータベース構成パラメーター DECFLT_ROUNDING について
も、可能な限り Oracle の動作を模倣するように設定されています。
158
Oracle to DB2 Conversion Guide: Compatibility Made Easy
その他の注意事項 :
򐂰 メモリー管理
このサンプル・シナリオ環境においては、DB2 のセルフチューニング・メモ
リー・マネージャー (STMM) およびオートノミック・フィーチャーをフル
に活用しています。デフォルトでは、多くの DB2 メモリー・ヒープが
STMM によりセルフチューニングされます。それには、バッファー・プー
ルのサイズ、ソート・メモリー、ハッシュ・メモリー、およびロック・メモ
リーが含まれます。STMM は、データベースの総メモリー消費量を調整す
ると共に、さまざまな目的や必要に応じてメモリーの配分も調整します。つ
まり STMM は、各種メモリーのサイズを必要に応じて自動的に調整し、さ
まざまな要件の間のバランスを保つことができます。それらの調整は、実行
時にワークロードの要求の変化に応じて数分ごとに行われます。
򐂰 物理データベース設計とストレージ管理
DB2 の物理データベース設計の手法は Oracle の場合とよく似ていますが、
それらの間にはいくつかの相違点があります。例えば、DB2 には多次元クラ
スタリングの機能がありますが、これは Oracle では利用できません。一方
Oracle には、ビットマップ索引およびリスト・パーティションの機能があり
ます。同じように、DB2 には、複数のデバイスやファイル・システムにわた
るデータ・ストレージの管理作業をシンプルにするための自動ストレージの
機能があります。基本的には Oracle のストレージ・モデルとよく似ていま
すが、DB2 のフィーチャーではいくつかの異なる用語やセマンティクスが使
用されているので確認しておくとよいでしょう。物理データベース設計と
データベース・ストレージ管理の両方に関するベスト・プラクティスの概要
については、「DB2 Best Practices」の Web サイトを参照することをお勧めし
ます。これは、以下の場所にあります。
http://www.ibm.com/developerworks/data/bestpractices/
物理データベース設計に関するベスト・プラクティスの記事では、索引、マ
テリアライズ照会表 ( マテリアライズ・ビュー )、データ・クラスタリング
と多次元クラスタリング、範囲パーティション、ハッシュ・パーティション
のそれぞれの設計のためのベスト・プラクティス、データベース設計におけ
るサンプリングとカウントの使用のベスト・プラクティス、そして設計上の
さまざまな決定においてより良い選択をするために EXPLAIN を活用するこ
とに関するベスト・プラクティスが扱われています。データベース・スト
レージのベスト・プラクティスとしては、スピンドルと論理装置番号
(LUN)、ストライプとストライピング、トランザクション・ログおよびデー
タ、ファイル・システムとそれに対するロー・デバイス、RAID (Redundant
Array of Independent Disks) デバイス、レジストリー変数と構成パラメー
ターの設定値、および自動ストレージのそれぞれに関するガイドラインや推
奨事項が扱われています。
Chapter 4. Enablement scenario
159
4.4 データベース管理者権限を持つ追加のデータベース・
ユーザーの定義
この使用可能化シナリオ環境において、DB2 データベースへの接続は、データ
ベース管理者 (DBADM) 権限を持つユーザー sales を使用して行います。
使用できる認証方式には LDAP、Kerberos、クライアント認証など、さまざま
なものがありますが、最も一般的な方式はサーバー認証です。サーバー認証の
場合、データベース・ユーザー ID およびパスワードは、データベース・サー
バーのオペレーティング・システムに備わっているメカニズムを使用して認証
されます。したがって、データベースにおいてこの新しいユーザーに関する作
業をする前に、まずオペレーティング・システムでユーザー sales を作成する必
要があります。そのためには、次の Linux コマンドを使用します。
useradd -g db2iadm1 -m -d /db2home/sales sales
このユーザーが作成されたなら、その後、db2inst1 シェル・セッションにより
以下のようにして DBADM 権限を付与します。
/home/db2inst1>db2 "CONNECT TO sales"
/home/db2inst1>db2 "GRANT DBADM ON DATABASE TO USER sales"
4.5 IBM データ移動ツールの使用による使用可能化
このセクションでは、使用可能化シナリオのデモとして、DB2 データベース
Linux サーバー上で実行されている IBM データ移動ツールを使用します。ここ
では、DDL や表データの移動、および PL/SQL オブジェクトのデプロイのため
に DMT を使用します。
このシナリオで使用される DDL とデータは、IBM Redbooks の Web サイトか
らダウンロードできます。ダウンロードの詳細については、Appendix F,
“Additional material” on page 317 を参照してください。それらの DDL は、
Appendix E, “Test cases” on page 279 にも含めてあります。
4.5.1 概要
developerWorks の記事に含まれているリンクから、最新の IBM データ移動
ツールをダウンロードし、アーカイブ・ファイルを解凍して
/home/db2inst1/IBMDataMovementTool ディレクトリーに入れます。さらに、
DB2 および Oracle JDBC Drivers も、そのディレクトリー中にコピーします。
158
Oracle to DB2 Conversion Guide: Compatibility Made Easy
スクリプト IBMDataMovementTool.sh を実行することによってこのツールの
GUI バージョンを起動した後、「抽出 / デプロイ (Extract/Deploy)」タブ (
図 4-2) に移動し、Oracle ソース・データベースと DB2 ターゲット・データ
ベースの両方について、データベース接続情報と JDBC ドライバーのロケー
ションを入力します。
図 4-2 IBM DMT でデータベース接続情報を入力したところ
4.5.2 DDL、表データ、および PL/SQL オブジェクトの抽出
「ORACLE に接続 (Connect to ORACLE)」ボタンをクリックすると、次の 2 つ
のことが実行されます。すなわち、「ソース・スキーマ」領域に既存のスキーマ
のリストが表示され、そして「DDL/ データの抽出 (Extract DDL/Data)」ボタン
がアクティブになります。エラーがある場合、ツールによって表示されるコマ
ンド・ウィンドウ・コンソールにエラーの詳細が示されます ( このウィンドウ
が GUI の後ろに隠れていることがあります )。
サンプル・データベースでは Oracle マルチアクション・トリガーが使用されて
いますが、それは DB2 では利用できません。「オプション (Options)」メニュー
で「マルチアクション・トリガーの分割 (Split multiple action triggers)」オプ
ションを選択し、さらに、3.1, “IBM Data Movement Tool” on page 144 で説明
されているその他の推奨設定値を選択します。
Chapter 4. Enablement scenario
159
Oracle からの抽出処理を進める前に、作成されたスクリプトをターゲット DB2
データベースのバージョンに合わせて調整するため、まず DB2 に接続します。
ターゲット・データベースに「DB2 互換モード (DB2 With Compatibility
Mode)」が選択されていることに注意してください。
データベースに接続したら、Oracle DDL およびデータを抽出する準備ができま
した。「DDL/ データの抽出 (Extract DDL/Data)」ボタンをクリックすると、
DDL とデータの両方が抽出されます。
「ファイルの表示」タブ ( 図 4-3) で処理をモニターします。処理が終了した時点
で、「作業終了 (Work completed)」というメッセージがツールにより表示され
ます。また、新たに作成されたスクリプトが、指定したディレクトリー
(/home/db2inst/migr) の中に入っていることが分かります。このスクリプトに
は、抽出および修正された DDL ステートメント、表データの入ったフラット・
ファイル、および PL/SQL オブジェクトの各タイプに対応する個々のファイル
が含まれています。
図 4-3 DDL/ データ抽出のモニター
158
Oracle to DB2 Conversion Guide: Compatibility Made Easy
4.5.3 DDL と表データを DB2 ターゲット・データベースにデプロイする
作業
Oracle データが正常に抽出されたら、Oracle オブジェクトをターゲット DB2
データベースにデプロイする準備ができました。
この処理を開始するには、同じ「抽出 / デプロイ (Extract/Deploy)」ウィンドウ
の「DDL/ データのデプロイ (Deploy DDL/Data)」ボタンを使用します。この
操作の一部として含まれるのは、表、索引、およびシーケンスを作成すること、
および表のデータを設定することだけである点に注意してください。この操作
の一部として、PL/SQL オブジェクトがデプロイされることはありません。
この例では、表とデータのすべてが正常に移行されました。処理が正常に実行
されたことを示すメッセージが表示されます ( 図 4-4)。
図 4-4 表とデータのデプロイが完了したところ
Chapter 4. Enablement scenario
159
4.5.4 PL/SQL オブジェクトを DB2 ターゲット・データベース中にデプ
ロイする作業
PL/SQL オブジェクトの抽出は DDL/ データの抽出処理の一部として実行され
ますが、それに手動での変更が必要になる場合があるため、デプロイについて
は自動的に実行されないようになっています。PL/SQL オブジェクトをデプロ
イするには、IBM データ移動ツールの「対話式デプロイ (Interactive Deploy)」
ウィンドウを使用します。
使用可能なオブジェクトのリストを表示するには、「リフレッシュ」ボタンをク
リックします。 DB2 オブジェクト・ツリーに、さまざまなタイプのオブジェ
クトのデータが設定されます。図 4-5 を参照してください。
図 4-5 DMT の「対話式デプロイ (Interactive Deploy)」ウィンドウをリフレッシュした後
デプロイメントを開始するには、「すべてのオブジェクトをデプロイ (Deploy
All object)」ボタンをクリックします。図 4-6 を参照してください。
158
Oracle to DB2 Conversion Guide: Compatibility Made Easy
図 4-6 DMT「すべてのオブジェクトをデプロイ (Deploy All objects)」
デプロイメントの処理中に、各定義が実行されるにつれてオブジェクト・ツ
リーが下へスクロールします。数秒後、GUI の右下ペインに結果が表示されま
す。図 4-7 を参照してください。
図 4-7 DMT によるデプロイメントの結果
4.5.5 対話式デプロイによる非互換性の解決
この使用可能化シナリオには、非互換性を解決する方法を示す目的で、意図的
に非互換性を含めてあります。例えば、デプロイメント結果リスト (「対話式デ
プロイ (Interactive Deploy)」ウィンドウの右下ペイン ) をスクロールして
Chapter 4. Enablement scenario
159
EMP_INFO_TYPE タイプを表示すると、そのデプロイが失敗したことが示され
ています (SQLCODE -104、予期しないトークン )。その行を右クリックすると、
詳細なエラー・メッセージを編集域に表示するか、または DDL ソースを編集
域に表示した後、オブジェクト・ツリーを下にスクロールしてそのオブジェク
トを表示する ( その行をダブルクリックした場合のデフォルトの動作 ) オプ
ションを利用できます。170 ページの図 4-8 を参照してください。
図 4-8 DMT: デプロイメント結果を右クリックして表示される 2 つのオプション
詳細エラー・メッセージを表示すると ( 図 4-9)、問題は CREATE OR REPLACE
構文の後にある TYPE トークンに関係したものであることが分かります。
158
Oracle to DB2 Conversion Guide: Compatibility Made Easy
図 4-9 編集ペインに表示された詳細エラー・メッセージ
現在のところ DB2 では、CREATE TYPE ステートメントで OR REPLACE 構文
を利用できないため、それを削除する必要があります。同時に、AS OBJECT が
使用されていることにも気付きます。DB2 では、これを AS ROW に置き換える
必要があります。編集域でそれらの修正を加えた後、「選択したオブジェクトを
デプロイ (Deploy Selected Objects)」をクリックします。これで、IBM DMT
によるオブジェクトのデプロイが正常に実行されます。図 4-10 を参照してくだ
さい。
Chapter 4. Enablement scenario
159
図 4-10 選択したオブジェクトの構文を修正した後の、DMT によるデプロイメント
修正された定義は、< データベース名 >\savedobjects ディレクトリーの中にス
クリプトとして保存されます。この例の場合、スクリプトの名前は
sales_helper_package.sql でした。それ以外に、「対話式デプロイ (Interactive
Deploy)」ウィンドウで修正された例外として、次のものがあります。
򐂰 ネストされた関数 AVERAGE_BAND が
ACCOUNT_PACKAGE.DISPLAY_ACCOUNT_LIST プロシージャーから
ACCOUNT_PACKAGE 本体へと移されました。
򐂰 Oracle の CREATE DIRECTORY コマンドが、それに対応する DB2 コマンド
UTL_DIR.CREATE_DIRECTORY に置換されました。
򐂰 Oracle の DBMS_SQL.BIND_VARIABLE コマンドが、それに対応する DB2
の 2 つのコマンド DBMS_SQL.BIND_VARCHAR および
DBMS_SQL.BIND_CHAR に置換されました。
򐂰 Oracle の DBMS_LOB.WRITE コマンドおよび DBMS_LOB.APPEND コマン
ドが、それに対応する DB2 のコマンド DBMS_LOB.WRITE_CLOB および
DBMS_LOB.APPEND_CLOB に置換されました。
158
Oracle to DB2 Conversion Guide: Compatibility Made Easy
򐂰 XML データ処理のための Oracle の XMLType および EXTRACT 構文が、
DB2 のネイティブ XML データ・タイプおよび XQUERY に置換されました。
上記の変更が加えられた後、すべての PL/SQL オブジェクトが DB2 で正常にコ
ンパイルできるようになりました。
4.6 使用可能化の検証
データベース・オブジェクトおよび PL/SQL コードの使用可能化が正常に実行
されたことを検証するため、アプリケーション実行をシミュレートする無名ブ
ロックを実行します。このブロックは、DB2 CLPPlus インターフェースの中で
実行します。
CLPPlus を開始し、同時に DB2 データベースに接続するには、以下のコマンド
を実行します。
db2inst1>clpplus sales/password@localhost:50000/sales
Database Connection Information
Hostname = localhost
Database server = DB2/Linux SQL09070
SQL authorization ID = sales
Local database alias = SALES
Port = 50000
CLPPlus:Version 1.0
Copyright (c) 2009, IBM CORPORATION.All rights reserved.
少し修正するだけで、この同じ無名ブロックを Oracle データベースから実行す
ることも可能です。スタンドアロンのタイプ EMP_INFO_TYPE を使用する代
わりに、パッケージ HELPER.EMP_INFO_TYPE からのタイプを使用します。
Chapter 4. Enablement scenario
159
CLPPlus では、SQL*Plus’ SERVEROUTPUT ON オプションもサポートされて
います。これを使用することによって、無名ブロックからの出力を表示するこ
とができます。図 4-11 に示されているように、この無名ブロックは DB2 で正
常に実行されます。その結果は同じ無名ブロックの Oracle バージョンと一致す
るため、この例のアプリケーションの DB2 での使用可能化が正常に実行された
ことを確認できます。
図 4-11 CLPPlus での無名ブロックの実行
4.7 まとめ
この章では、Oracle で実行されるサンプル・データベースを使用して、最小限
の作業でそれを DB2 に移行する方法について示しました。ソース・データベー
スのソース・ステートメントのうち 98% 以上は、修正しなくても DB2 と互換
性があります。残りの少数も容易に特定でき、必要な修正作業も比較的少ない
ものでした。このように短い使用可能化処理の結果、移行後の DB2 データベー
スは十分に機能するものとなります。
158
Oracle to DB2 Conversion Guide: Compatibility Made Easy
Fly UP