oracle 互換(後半) - ibm...number 1-31,1-31 number(p,s)...
TRANSCRIPT
第2章 Oracle互換 (後半)
本書に含まれている情報は、正式なIBMのテストを受けていません。また、明記にしろ、暗黙的にしろ、なんらの保証もなしに配布されるものです。
この情報の使用またはこれらの技術の実施は、いずれも、使用先の責任において行われるべきものであり、それらを評価し、実際に使用する環境に統合する使用先の判断に依存しています。それぞれの項目は、ある特定の状態において正確であることがIBMによって調べられていますが、他のところで同じまたは同
様の結果が得られる保証はありません。これらの技術を自身の環境に適用することを試みる使用先は、自己の責任において行う必要があります。
© Copyright IBM Japan Systems Engineering Co., Ltd. 2009
<第1.00版 2009年 7月>
2 © 2009 ISE Corporation
内容
• Oracleから移行する際の主なタスク
• 移行をサポートするツール
• IBM Data Movement ToolによるDDL/データの移行
• IBM Optim Developer Studioによるオブジェクトの移行
3 © 2009 ISE Corporation
Oracleから移行する際の主なタスクOracleから移行する際の主なタスク
4 © 2009 ISE Corporation
OracleからDB2へ移行する際の主なタスク
• プロジェクトプロジェクトプロジェクトプロジェクトののののアセスアセスアセスアセスとととと計画計画計画計画
• DB関連関連関連関連リソースリソースリソースリソースのののの移行移行移行移行
• オブジェクトの移行
• データの移行
• アプリケーションの移行
• テストテストテストテスト
• 本番本番本番本番システムシステムシステムシステムのののの移行移行移行移行
5 © 2009 ISE Corporation
オブジェクト移行のタスク
• 各種各種各種各種オブジェクトオブジェクトオブジェクトオブジェクトDDLのののの抽出抽出抽出抽出
• IBM Data Movement Tool, IBM Optim Development Studioが使用可能
• 移行先移行先移行先移行先データベースデータベースデータベースデータベースのののの作成作成作成作成
• 事前にDB2_COMPATIBILITY_VECTORをセットする
• DB2にあわせたにあわせたにあわせたにあわせたスキーマスキーマスキーマスキーマのののの更新更新更新更新
• データ・タイプのマッピング
• DDLフォーマットの変更
• 論理設計を変更する場合はその対応
6 © 2009 ISE Corporation
• データタイプデータタイプデータタイプデータタイプ・・・・マッピングマッピングマッピングマッピングのののの例例例例((((1111))))
• IBM Optim Development Studioでのデフォルトのマッピング
XMLXMLTYPE
タイムゾーン付きは未サポートTIMESTAMP(p)pTIMESTAMP
DOUBLEBINARY_DOUBLE
FLOATBINARY_FLOAT
DECIMAL(p,s)p,sDECIMAL
NUMBERNUMBER
34桁以上では桁落ちが発生。文字列としての保持を検討DECFLOAT32-38,1-38NUMBER
NUMBER(p,s)1-31,1-31NUMBER
34桁以上では桁落ちが発生。文字列としての保持を検討DECFLOAT32-38,0NUMBER
NUMBER(p,s)19-31,0NUMBER
一律NUMBERでの保持も可能BIGINT10-18,0NUMBER
一律NUMBERでの保持も可能INTEGER5-9,0NUMBER
一律NUMBERでの保持も可能SMALLINT1-4,0NUMBER
備考ターゲット桁数ソース
Note:
7 © 2009 ISE Corporation
• データタイプデータタイプデータタイプデータタイプ・・・・マッピングマッピングマッピングマッピングのののの例例例例((((2222))))
VARCHAR FOR BIT DATARAW
DBCLOBNCLOB
CLOBCLOB
BLOBBLOB
BLOBLONG RAW
BLOBBFILE
DATEも選択可TIMESTAMPDATE
CHARUROWID
CHARROWID
VARCHAR2VARCHAR2
VARCHAR255-2000CHAR
CHAR1-254CHAR
VARGRAPHICNVARCHAR2
VARGRAPHIC128-2000NCHAR
GRAPHIC1-127NCHAR
備考ターゲット桁数ソース
Note:
8 © 2009 ISE Corporation
ブランクブランクブランクブランク・・・・ページページページページ
9 © 2009 ISE Corporation
データ移行のタスク
• データデータデータデータのののの抽出抽出抽出抽出
• Oracleは、デフォルトではCSV等への出力機能を持たない
• IBM Data Movement Toolを使用してCSVへの抽出が可能
• 論理設計を変更する場合、データフォーマットの変換を実施
• データデータデータデータををををテストテストテストテスト環境環境環境環境へへへへ投入投入投入投入
• 移行先の表へのデータ投入が可能かどうかをチェック
• 特に論理設計の変更が行われている場合
• アプリケーションのテスト環境を提供
• 本番本番本番本番データデータデータデータ移行移行移行移行のののの計画計画計画計画、、、、準備準備準備準備
• データの抽出、転送、投入のプロセスを検証し、本番データ移行での所要時間やシステム停止時間を算出する
10 © 2009 ISE Corporation
アプリケーション移行のタスク
• 移行先移行先移行先移行先ののののアプリケーションアプリケーションアプリケーションアプリケーション・・・・インターフェースインターフェースインターフェースインターフェースのののの構成構成構成構成
• JDBC, 組み込みSQL, .NET, ODBC, CLI等適切なドライバを選定、構成
する
• アプリケーションアプリケーションアプリケーションアプリケーション・・・・コードコードコードコードのののの変更変更変更変更
• DBへの接続ストリング
• 互換性のないSQLやエラーハンドリングを検出
• 分離レベルやロッキングの要件を確認
• 基本的にはDB2 9.7で提供されるCurrently Committedを使用可能
• 未サポートのAPI、Build-in-package使用、ディクショナリー参照等があれ
ば修正
• UDFやPROCEDUREの定義で回避可能か検討
• 検証検証検証検証テストテストテストテストのののの実施実施実施実施
11 © 2009 ISE Corporation
DB2 V9.7 GAレベルでの主要な非互換/未サポート機能
一階層のパッケージ等に移行。名前の衝突に注意する。
Function / procedure定義のネスト
は不可(複数階層の定義)
Procedureに変更し、戻り値をパラ
メーターとして受け渡すよう変更
Function はOUT / IN OUTパラメー
ターをもてない
パッケージ内部で宣言し、タイプの参照にパッケージの接頭辞を追加
独立したType宣言は未サポート
複数のシングル・アクションのトリガーに分割する
マルチ・アクションのトリガーは未サポート
カラムのNOT NULL化や非UNIQUE
INDEXへの定義変更を検討DB2では、UNIQUE INDEXは複数
のNULL値を許容しない
12 © 2009 ISE Corporation
ブランクブランクブランクブランク・・・・ページページページページ
13 © 2009 ISE Corporation
移行をサポートするツール移行をサポートするツール
14 © 2009 ISE Corporation
• データオブジェクトデータオブジェクトデータオブジェクトデータオブジェクトをををを移行移行移行移行するするするする
• IBM Data Movement Tool
• IBM Optim Development Studio
• データデータデータデータをををを移行移行移行移行するするするする
• IBM Data Movement Tool
• アプリケーションアプリケーションアプリケーションアプリケーションをををを移行移行移行移行するするするする
• IBM Optim Development Studio
• スクリプトスクリプトスクリプトスクリプトのののの移行移行移行移行をををを容易容易容易容易にするにするにするにする
• CLP Plus
移行をサポートするツール
15 © 2009 ISE Corporation
• 他社他社他社他社DBMSからのからのからのからのDDL/データデータデータデータ抽出抽出抽出抽出ををををサポートサポートサポートサポートするするするするツールツールツールツール
• Oracle, SQL Server, Sybase, MySQL, PostgreSQL等多数のデータソースをサポート
• OracleはCSVでのデータ抽出機能を持たないため、当ツールの活用が重要
• 主主主主なななな機能機能機能機能• GUI及び、コマンドラインによるDDL/データの抽出
• GUIによるターゲット・データベースでのオブジェクト作成
• 抽出、投入をコマンドラインから実施するための各種スクリプトの生成
• Oracleソースソースソースソースのののの場合場合場合場合ににににサポートサポートサポートサポートされているされているされているされているオブジェクトオブジェクトオブジェクトオブジェクト
• 表、ビュー、シーケンス、制約、索引、シノニム(ALIAS)
• Procedure, Function, Trigger
• 権限情報(Role, Privilege)
IBM Data Movement Tool
16 © 2009 ISE Corporation
• マルチマルチマルチマルチ・・・・スレッドスレッドスレッドスレッド動作動作動作動作によるによるによるによる高速高速高速高速ななななデータデータデータデータのののの抽出抽出抽出抽出がががが可能可能可能可能
• DB2へのLOAD用スクリプトも生成
• 前提前提前提前提
• JDK 1.5以降
• Oracleと接続する場合、Oracle JDBCドライバ要
• 必要なドライバは、ojdbc14.jar, xmlparserv2.jar and xdb.jar の3つ
• 入手方法入手方法入手方法入手方法
• DeveloperWorksにて配布
• http://www.ibm.com/developerworks/db2/library/techarticle/dm-0906datamovement/
• ツールの詳細な使用方法の解説もあり
IBM Data Movement Tool
17 © 2009 ISE Corporation
IBM Data Movement Tool• GUI画面画面画面画面
18 © 2009 ISE Corporation
ブランクブランクブランクブランク・・・・ページページページページ
19 © 2009 ISE Corporation
• Data Studio Developerのののの後継後継後継後継
• 2009年6月にOptimを統合したV2.2が登場
• Oracle移行関連移行関連移行関連移行関連のののの機能強化機能強化機能強化機能強化
• Data Source ExplorerがOracleへの接続をサポート
• Copy & Pasteによるデータオブジェクトの移行をサポート
• SELECT/INSERTによるデータ移動も可能
• 互換性のないデータタイプは自動的にマッピング
• PL/SQLの移行及び、デバッグ機能を提供
IBM Optim Development Studio
20 © 2009 ISE Corporation
IBM Optim Development Studio
21 © 2009 ISE Corporation
CLPPlus
• OracleのSQL*Plusに似たインターフェースを持ち、SQLを実行
するためのユーティリティ
• SQL、PL/SQL、SQL PLの実行
• 対話式でのSQLの実行
• ファイルに保存したSQLの実行
• 主要なSQL*Plusコマンドをサポート
• OracleのSQL*Plusと同じような動作をする
• サポートされているコマンドは、HELP INDEXコマンドで確認
• CLPの一部のコマンドもサポート
• パラメーターのGET/UPDATE、EXPORT/IMPORT/LOAD等
22 © 2009 ISE Corporation
CLPPlusの起動方法 1
• clpplus 起動起動起動起動コマンドコマンドコマンドコマンド
>>-clpplus--+------------------------+-------------------------->'-user-id--+-----------+-'
'-/password-'
>--+---+------------+----+--------------+--+----------------+-+-><| +-@host-name-+ '-:port-number-' '-/database-name-' | | '-@localhost-' | | | '-script-filename------------------------------------------
起動例:
C:¥work>clpplusclpplusclpplusclpplus db2admin/db2admin@localhost:50000/testdbdb2admin/db2admin@localhost:50000/testdbdb2admin/db2admin@localhost:50000/testdbdb2admin/db2admin@localhost:50000/testdbデータベース接続情報
ホスト名 = localhostデータベース・サーバー = DB2/NT SQL09070SQL 許可 ID = db2adminローカル・データベース別名 = TESTDBポート = 50000
CLPPlus: バージョン 1.0Copyright (c) 2009, IBM CORPORATION. All rights reserved.
SQL>
23 © 2009 ISE Corporation
CLPPlusの起動方法 2
• SQL*Plusでの「sqlplus userid/password@ネットサービス名」と似た形式で接続可能
• login.sqlファイルに接続で使用する変数を定義し、接続時にその変数を使用可能
• clpplus userid/passwod@変数
• 例
C:¥work>type login.sqllogin.sqllogin.sqllogin.sqldefine test21=localhost:50000/test21define testdb=localhost:50000/testdbtestdb=localhost:50000/testdbtestdb=localhost:50000/testdbtestdb=localhost:50000/testdbC:¥work>clpplus db2admin/db2admin@testdbclpplus db2admin/db2admin@testdbclpplus db2admin/db2admin@testdbclpplus db2admin/db2admin@testdbデータベース接続情報
ホスト名 = localhostデータベース・サーバー = DB2/NT SQL09070SQL 許可 ID = db2adminローカル・データベース別名 = TESTDBポート = 50000
CLPPlus: バージョン 1.0Copyright (c) 2009, IBM CORPORATION. All rights reserved.
SQL>
login.sqlにconnect_idintifierを記述
login.sqlでdefineした
変数を指定
24 © 2009 ISE Corporation
CLPPlusコマンド
• ファイルに記述されたSQLを読み込み実行
• 置換変数の使用
SQL> host dir | host dir | host dir | host dir | findstrfindstrfindstrfindstr sql10sql10sql10sql102009/05/12 01:48 306 sql10.sqlSQL> get sql10.sqlget sql10.sqlget sql10.sqlget sql10.sql1 BEGIN2 for cur1 in (SELECT * FROM dept WHERE deptno = &&&&depnodepnodepnodepno)3 LOOP4 DBMS_OUTPUT.PUT_LINE('========================');5 DBMS_OUTPUT.PUT_LINE(' DEPTNO:'||cur1.deptno);6 DBMS_OUTPUT.PUT_LINE(' DNAME :'||cur1.dname );7 DBMS_OUTPUT.PUT_LINE(' LOC :'||cur1.loc );8 END LOOP;9* END;
SQL> set serveroutput onset serveroutput onset serveroutput onset serveroutput onSQL> ////変数 depno の値を入力してください: 10
元元元元ののののステートメントステートメントステートメントステートメント:: for cur1 in (SELECT * FROM dept WHERE deptno = &:: for cur1 in (SELECT * FROM dept WHERE deptno = &:: for cur1 in (SELECT * FROM dept WHERE deptno = &:: for cur1 in (SELECT * FROM dept WHERE deptno = &depnodepnodepnodepno))))置換置換置換置換されたされたされたされた新規新規新規新規ステートメントステートメントステートメントステートメント:: for cur1 in (SELECT * FROM dept WHERE deptno = 10):: for cur1 in (SELECT * FROM dept WHERE deptno = 10):: for cur1 in (SELECT * FROM dept WHERE deptno = 10):: for cur1 in (SELECT * FROM dept WHERE deptno = 10)========================DEPTNO:10DNAME :ACCOUNTINGLOC :NEW YORK
DB250000I: コマンドは正常に完了しました。
置換変数
実行前に置き換えができる
25 © 2009 ISE Corporation
CLPPlusコマンドで出力形式を整形
• CLPPlusコマンドで出力形式を整えることも可能SQL> select table_schema,table_name,num_rows,blocks from user_tables;
TABLE_SCHEMA--------------------------------------------------TABLE_NAME NUM_ROWS-------------------------------------------------- --------------------
BLOCKS--------------------DB2ADMINDEPT 5033
1004
DB2ADMINSALGRADE 5
1
TABLE_SCHEMA--------------------------------------------------TABLE_NAME NUM_ROWS-------------------------------------------------- --------------------
BLOCKS--------------------DB2ADMINBONUS 0
0
DB2ADMINEMP 6790032
100234SQL> set linesize 150set linesize 150set linesize 150set linesize 150SQL> col table_schema format a30col table_schema format a30col table_schema format a30col table_schema format a30SQL> col table_name format a30col table_name format a30col table_name format a30col table_name format a30SQL> col num_rows format 999,999,999col num_rows format 999,999,999col num_rows format 999,999,999col num_rows format 999,999,999SQL> col blocks format 999,999,999col blocks format 999,999,999col blocks format 999,999,999col blocks format 999,999,999SQL> llll1* select table_schema,table_name,num_rows,blocks from user_tables
SQL> ////
TABLE_SCHEMA TABLE_NAME NUM_ROWS BLOCKS------------------------------ ------------------------------ -------------------- --------------------DB2ADMIN DEPT 5,033 1,004DB2ADMIN SALGRADE 5 1DB2ADMIN BONUS 0 0DB2ADMIN EMP 6,790,032 100,234
変更した出力形式で出力
SQL> set linesize 150
SQL> col table_schema format a30
SQL> col table_name format a30
SQL> col num_rows format 999,999,999
SQL> col blocks format 999,999,999
SQL> l
1* select
table_schema,table_name,num_rows,blocks from
user_tables
SQL> /
デフォルトでは80バイトで行が折り返される
26 © 2009 ISE Corporation
CLPPlusでDB2 CLPコマンドが使用可能!
• CLPコマンドのExportとImportをCLPPlusから実行SQL> export to c:export to c:export to c:export to c:¥¥¥¥workworkworkwork¥¥¥¥emp.del of del select * from emp;emp.del of del select * from emp;emp.del of del select * from emp;emp.del of del select * from emp;
エクスポートされる行数の合計: 12DB250000I: コマンドは正常に完了しました。
SQL> host type c:¥work¥emp.del+7369.,"SMITH","CLERK",+7902.,"1980-12-17-00.00.00",+00800.00,,+20.+7499.,"ALLEN","SALESMAN",+7698.,"1981-02-20-00.00.00",+01600.00,+00300.00,+30.・・・省略・・・
SQL> create table emp2 like emp;
DB250000I: コマンドは正常に完了しました。
SQL> import from c:import from c:import from c:import from c:¥¥¥¥workworkworkwork¥¥¥¥emp.del of del replace into emp2;emp.del of del replace into emp2;emp.del of del replace into emp2;emp.del of del replace into emp2;
読み取り行数の合計: 12スキップされた行数の合計: 0挿入された行数の合計: 12更新行数の合計: 0拒否された行数の合計: 0コミットされた行数の合計: 12DB250000I: コマンドは正常に完了しました。
SQL> select * from emp2;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------------------- --------- --------- ------7369 SMITH CLERK 7902 1980-12-17 00:00:00 800.00 207499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600.00 300.00 30
・・・省略・・・
デリミタ形式でファイルにExportされている
Import先の表にデータが格納された
27 © 2009 ISE Corporation
IBM Data Movement Tool
を利用したDDL/データの移行IBM Data Movement Tool
を利用したDDL/データの移行
28 © 2009 ISE Corporation
• 2222つのつのつのつのレジストリーレジストリーレジストリーレジストリー変数変数変数変数
• DB2_COMPATIBILITY_VECTOR
• Oracle互換機能の有効化
• DB作成前にセットすることが必須必須必須必須
• DB2_DEFERRED_PREPARE_SEMANTICS
• 型無しパラメータマーカーのサポート
• db2setにてにてにてにてレジストリーレジストリーレジストリーレジストリー変数変数変数変数をををを設定設定設定設定
• インスタンスインスタンスインスタンスインスタンスをををを再起動再起動再起動再起動してしてしてして設定設定設定設定をををを反映反映反映反映
データベース作成前の設定
$ db2set DB2_COMPATIBILITY_VECTOR=ORA$ db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES
$ db2stop force$ db2start
29 © 2009 ISE Corporation
• データベースデータベースデータベースデータベース作成時作成時作成時作成時のののの一般的一般的一般的一般的なななな推奨推奨推奨推奨
• 自動ストレージを活用しストレージ管理をシンプルに
• 表スペース単位の初期サイズ、上限設定が不要
• ストレージ・パス単位での容量管理のみ実施
• 32KBページサイズの使用
• Oracleと異なり、DB2は各レコードが1ページに収まる必要がある。移行をシンプルにする場
合、なるべく大きなページサイズを使用する
• 高トランザクションのOLTP環境では、4KB等のより小さなページサイズも考慮
• 複数ページサイズを使用する場合、ページサイズごとにバッファープールが必要
• STMMを活用し、各バッファープールのサイズを最適化(デフォルト)
• LOBを格納する表スペースは分割する
• インライン格納されていないLOBはバッファープールに載らないため、データ部と表スペース
を分割し、ファイル・キャッシュの使用を有効化することとを推奨
• CREATE TABLESPACEに"FILE SYSTEM CACHING"のオプションを付加
データベースを作成
30 © 2009 ISE Corporation
• CREATE DATABASEコマンドコマンドコマンドコマンドのののの例例例例
• /db2data1, /db2data2, /db2data3を自動ストレージパスとして設定
• 各ストレージ・パスは、独立したファイルシステム、物理ディスク上に配置
• データベースディレクトリーは/db2systemに配置
• デフォルトページサイズとして32KBページを指定
データベースを作成
CREATE DB TESTDB AUTOMATIC STORAGE YESON /db2data1,
/db2data2,/db2data3
DBPATH ON /db2systemPAGESIZE 32 K
31 © 2009 ISE Corporation
• IBM Data Movement Toolをををを起動起動起動起動
• Linux/UnixではIBMDataMovementTool.shを起動(Windowsでは~.cmdを使用)
• Connection Informationのののの入力入力入力入力
• GUI画面の起動後にソース、ターゲットDBへの接続情報を入力
• Oracleへの接続ユーザーIDは、システムユーザーを使用することを推奨
IBM Data Movement Toolの起動
$ ls -ltotal 889-rw-r--r-- 1 db2inst1 db2grp 410 ... IBMDataMovementTool.cmd-rw-r--r-- 1 db2inst1 db2grp 897647 ... IBMDataMovementTool.jar-rwxr--r-- 1 db2inst1 db2grp 919 ... IBMDataMovementTool.sh$ cat IBMDataMovementTool.sh...java -Xmx990m -jar IBMDataMovementTool.jar $1
$ ./IBMDataMovementTool.sh
32 © 2009 ISE Corporation
IBM Data Movement Toolの起動
• データベースへの接続• ボタン1,2を押下し、ソース/ターゲットDBへ接続する
1 2
3 4
33 © 2009 ISE Corporation
• DDL/データデータデータデータのののの抽出抽出抽出抽出
• 出力先ディレクトリーを設定
• 抽出の対象を選択
• 抽出対象のデータが少量の場合、リモートでの抽出も可能
• 大量データの抽出は、DDLの抽出とは独立してソースDBサーバ上で行うこ
とを推奨
• 「Extract DDL/Data」ボタンを押し、抽出を実行
• (前ページチャートの「3」)
• 抽出の結果を確認
IBM Data Movement ToolによるDDL/データの抽出
34 © 2009 ISE Corporation
• 必要必要必要必要にににに応応応応じてじてじてじてDDLをををを修正修正修正修正
• データ/索引/LOBの格納先表スペースの分割
• ページサイズの指定
• データタイプの再マッピング等々
• DDL/データデータデータデータのののの投入投入投入投入
• IBM Data Movement ToolのGUI画面から実施
• 「Deploy DDL/Data」ボタンから一括作成
• 「Interactive Deploy」機能を使用して個別に作成
• ツールが生成するdb2ddl.sh / db2gen.shを手動で実行
• 生成対象のオブジェクト
• バッファープール、表スペース、表、制約、シーケンス、シノニム(ALIAS)
IBM Data Movement Toolの起動
35 © 2009 ISE Corporation
Note:
• IBM Data Movement Toolがががが生成生成生成生成するするするする設定設定設定設定ファイルファイルファイルファイル、、、、スクリプトスクリプトスクリプトスクリプト
IBM Data Movement Toolののののプロパティファイルプロパティファイルプロパティファイルプロパティファイル。。。。データベースデータベースデータベースデータベースへへへへ
のののの接続情報接続情報接続情報接続情報やややや、、、、前回実行時前回実行時前回実行時前回実行時ののののオプションオプションオプションオプションをををを保持保持保持保持するするするする。。。。
IBMExtract.properties
ソースソースソースソースDB、、、、ターゲットターゲットターゲットターゲットDBのののの両方両方両方両方にににに接続接続接続接続しししし、、、、<SID>.tableをををを元元元元ににににテーテーテーテー
ブルブルブルブルのののの件数件数件数件数ををををカウントカウントカウントカウントするするするする。。。。
rowcount
db2gen.sh
db2ddl.sh
unload
<SID>.table
geninput
ファイルファイルファイルファイル名名名名
ターゲットターゲットターゲットターゲットDBにににに接続接続接続接続しししし、、、、DDLのののの実行実行実行実行ととととデータデータデータデータのののの投入投入投入投入をををを行行行行うううう((((PL/SQLをををを含含含含むむむむオブジェクトオブジェクトオブジェクトオブジェクトはははは対象外対象外対象外対象外)。)。)。)。DDL/データデータデータデータのののの両方両方両方両方をををを抽出抽出抽出抽出したしたしたした際際際際にににに生生生生
成成成成されるされるされるされる。。。。
ターゲットターゲットターゲットターゲットDBにににに接続接続接続接続しししし、、、、DDL中中中中にににに含含含含まれたまれたまれたまれたオブジェクトオブジェクトオブジェクトオブジェクトをををを作成作成作成作成するするするするススススクリプトクリプトクリプトクリプト((((PL/SQLをををを含含含含むむむむオブジェクトオブジェクトオブジェクトオブジェクトはははは対象外対象外対象外対象外)。)。)。)。DDLのみをのみをのみをのみを抽出対抽出対抽出対抽出対
象象象象としたときにとしたときにとしたときにとしたときに生成生成生成生成されるされるされるされる。。。。
ソースソースソースソースDBにににに接続接続接続接続しししし、、、、DDL/データデータデータデータのののの抽出抽出抽出抽出をををを実行実行実行実行するするするするスクリプトスクリプトスクリプトスクリプト。。。。抽出抽出抽出抽出のののの対象対象対象対象((((DDLのみのみのみのみ、、、、データデータデータデータのみのみのみのみ、、、、DDL及及及及びびびびデータデータデータデータ))))はははは、、、、プロパティファプロパティファプロパティファプロパティファイルイルイルイル((((IBMExtract.properties))))のののの設定内容設定内容設定内容設定内容でででで決定決定決定決定されるされるされるされる。。。。
ソースソースソースソースDBにににに接続接続接続接続しししし、、、、<SID>.tableファイルファイルファイルファイルをををを生成生成生成生成するするするする
移行対象移行対象移行対象移行対象ののののテーブルテーブルテーブルテーブル一覧一覧一覧一覧。。。。ソースソースソースソースDB上上上上ののののテーブルテーブルテーブルテーブルをををを元元元元にににに生成生成生成生成されされされされ
るるるる。。。。このこのこのこのファイルファイルファイルファイルのののの内容内容内容内容をををを編集編集編集編集することですることですることですることで、、、、ツールツールツールツールによるによるによるによる移行対象移行対象移行対象移行対象のののの表表表表をををを制御可能制御可能制御可能制御可能。。。。<SID>ははははオラクルオラクルオラクルオラクルののののシステムシステムシステムシステム識別子識別子識別子識別子をををを表表表表すすすす
内容内容内容内容
36 © 2009 ISE Corporation
Note:
• 前述前述前述前述したしたしたした設定設定設定設定ファイルファイルファイルファイル、、、、スクリプトスクリプトスクリプトスクリプト以外以外以外以外ののののファイルファイルファイルファイル
db2check.sql
db2synonyms.db2
db2uniq.sql
db2cons.sql
db2default.sql
db2tsbp.sql
db2udf.sql
db2tables.sql
db2fkeys.sql
db2sequences.sql
オブジェクトオブジェクトオブジェクトオブジェクトののののDDL
db2plsql_type_body.db2
db2plsql_type.db2
db2plsql_views.db2
db2plsql_procedure.db2
db2plsql_function.db2
db2plsql_package.db2
db2plsql_package_body.db2
db2plsql_trigger.db2
PL/SQLをををを含含含含むむむむDDL
db2load.sql
db2loadterminate.db2
db2checkRemoval.sh
データロードデータロードデータロードデータロード用用用用スクリプトスクリプトスクリプトスクリプト
db2roleprivs.db2
db2objprivs.db2
db2runstats.sql
db2droptables.db2
db2tabcount.sql
db2tabstatus.sql
db2checkpending.sql
db2fkdrop.sql
そのそのそのその他他他他
db2roleprivs.db2
db2objprivs.db2
権限情報権限情報権限情報権限情報
37 © 2009 ISE Corporation
• 「「「「Interactive deploy mode」」」」によるによるによるによるオブジェクトオブジェクトオブジェクトオブジェクトのののの作成作成作成作成
• GUI画面からのオブジェクト作成も可能
• "Interactive Deploy" タブから“Refresh Objects to be deploy“を選択
• 抽出したDDLを読み込み、オブジェクトのツリーが表示される。
• 個別に対象オブジェクトを選択して作成可能
• 一括作成も可能
IBM Data Movement Tool
38 © 2009 ISE Corporation
• コマンドラインコマンドラインコマンドラインコマンドラインからのからのからのからのツールツールツールツール実行実行実行実行
• IBM Data Movement Toolはコマンドライン環境からも実行可能
• テキストによる対話式のメニューから実行する
コンソールモードによる IBM Data Movement Tool の実行
39 © 2009 ISE Corporation
• コンソールコンソールコンソールコンソール・・・・モードモードモードモードでのでのでのでの起動起動起動起動
• TELNET/SSH等のコマンドライン環境から起動した場合、自動的にコンソール・モードで起動
• "-console" オプションを負荷することで、強制的にコンソール・モードを選択することも可能
• コンソールコンソールコンソールコンソール・・・・モードモードモードモードでのでのでのでの抽出抽出抽出抽出ののののステップステップステップステップ
• コンソール・モードでの起動
• 動作設定、接続情報の入力
• テーブル一覧の生成
• テーブル一覧の編集(オプション)
• ソースDBからの抽出の実行
• ターゲットDBへの投入
コンソールモードによる IBM Data Movement Tool の実行
40 © 2009 ISE Corporation
• コンソールモードでの起動後、抽出対象の選択や接続情報の入力を実施。入力する情報はGUIモードと同様
• 下記メッセージが出力されたタイミングで、テーブル一覧の生成が完了
• テーブル一覧を編集する場合は、ツールの実行を一旦保留して、別セッションからファイルの編集を行う
• コンソール・モードの場合、全スキーマのテーブルを含んだテーブル一覧が生成されるため、必要な表のみに絞ることを推奨
コンソールモードによる IBM Data Movement Tool の実行
$ ./IBMDataMovementTool.sh -consoleSwitching to Console Mode of operation[2009-06-07 10.11.04.838] INPUT Directory = ....Extract DDL (Yes) : 1Extract DDL (No) : 2Enter a number (Default=1) : 1Extract Data (Yes) : 1Extract Data (No) : 2Enter a number (Default=1) : 2
You can remove tables that you do not want to migrate by editing .tables fileDo you want to go ahead and extract data (Yes) : 1Quit Program : 2Enter a number (Default=1) : 1
41 © 2009 ISE Corporation
• テーブル一覧の編集
• 行単位で必要な表のみ残すよう編集
• DDL抽出の再開
• テーブル一覧の編集完了後に、保留していたツールの実行を再開する
• このタイミングでDDL、データファイルの抽出が実行される
• IBMExtract.propertiesも同時に出力される
• DDL/データの投入
• 抽出完了後に、DDL/データの投入を実行するかを選択する
• 抽出のみ実行の場合、このタイミングでQuitを選択する
コンソールモードによる IBM Data Movement Tool の実行
$ cat orcl.tables"TUKI11G"."ACCOUNTS":SELECT * FROM "TUKI11G"."ACCOUNTS""TUKI11G"."CUSTOMERS":SELECT * FROM "TUKI11G"."CUSTOMERS""TUKI11G"."DEPARTMENTS":SELECT * FROM "TUKI11G"."DEPARTMENTS"
[2009-06-07 10.13.08.224] JAR file '/opt/ibm/db2/V9.7/java/db2jcc.jar' found[2009-06-07 10.13.08.225] JAR file '/opt/ibm/db2/V9.7/java/db2jcc_license_cu.jar' foundDo you want to go ahead and deploy data (Yes) : 1Quit Program : 2Enter a number (Default=1) : 2
42 © 2009 ISE Corporation
ブランクブランクブランクブランク・・・・ページページページページ
43 © 2009 ISE Corporation
IBM Optim Development Studio
を利用したオブジェクトの移行IBM Optim Development Studio
を利用したオブジェクトの移行
44 © 2009 ISE Corporation
• 下記下記下記下記ののののオブジェクトオブジェクトオブジェクトオブジェクト作成作成作成作成はははは事前事前事前事前にににに実施実施実施実施するするするする
• レジストリー変数の設定
• データベースの作成
• バッファープール、表スペースの作成
IBM Optim Development Studio によるオブジェクトの移動
45 © 2009 ISE Corporation
IBM Optim Development Studio によるオブジェクトの移動
• Oracle/DB2それぞれにそれぞれにそれぞれにそれぞれに接続接続接続接続するするするする
• 接続状態では、それぞれのデータソースでオブジェクトツリーが参照可能
• DB2側はLABDB、Oracle側はorclに接続している
46 © 2009 ISE Corporation
IBM Optim Development Studio によるオブジェクトの移動
• ACCOUNTS表表表表をををを移動移動移動移動するするするする場合場合場合場合
• OracleデータソースからACCOUNTS表を選択し、“Copy”を選ぶ
47 © 2009 ISE Corporation
• DB2データソース上で移行先のスキーマを作成する
IBM Optim Development Studio によるオブジェクトの移動
48 © 2009 ISE Corporation
• DB2データソース上で、作成対象のスキーマにテーブルを“Paste”する
IBM Optim Development Studio によるオブジェクトの移動
49 © 2009 ISE Corporation
• 移動時のオプションを設定する• DDLのみを移行する場合“Copy database objects only”を選択
• 少量データの場合、データを同時にコピーすることも可能(SELECT/INSERTに
よるコピーが行われる)
• オブジェクトの依存関係がある場合、“Copy dependent database objects” を選択
IBM Optim Development Studio によるオブジェクトの移動
50 © 2009 ISE Corporation
• データ・タイプのマッピング
• ODSにはデータ・タイプのマッピングルールがデフォルトで設定されている。
• 元となるデータタイプごとにマッピング先のデータタイプを設定できる。
IBM Optim Development Studio によるオブジェクトの移動
51 © 2009 ISE Corporation
• 生成されたDDLを確認後、Finishボタンを押してオブジェクトを作成する
• 以下の例では、ACCOUNTSテーブルと依存関係にあるDEPARTMENTS テーブルも作成されている
IBM Optim Development Studio によるオブジェクトの移動
52 © 2009 ISE Corporation
• 実行結果を確認する (1/2)
• 画面右下に「SQL Result」が表示される
IBM Optim Development Studio によるオブジェクトの移動
Failed/Warningがある場合、Statusパネルから理由を確認
53 © 2009 ISE Corporation
• 実行結果を確認する (2/2)
• DB2データソース上に、2つのテーブルが追加されている
IBM Optim Development Studio によるオブジェクトの移動
54 © 2009 ISE Corporation
ブランクブランクブランクブランク・・・・ページページページページ