• 検索結果がありません。

第3章 DB2への移行計画とサポートツール

N/A
N/A
Protected

Academic year: 2021

シェア "第3章 DB2への移行計画とサポートツール"

Copied!
56
0
0

読み込み中.... (全文を見る)

全文

(1)
(2)

内容

Oracleから移行する際の主なタスク

移行をサポートするツール

IBM Data Movement ToolによるDDL/データの移行

(3)

Oracleから移行する際の主なタスク

(4)

OracleからDB2へ移行する際の主なタスク

• プロジェクトのアセスと計画

DB関連リソースの移行

オブジェクトの移行

データの移行

アプリケーションの移行

• テスト

• 本番システムの移行

(5)

オブジェクト移行のタスク

• 各種オブジェクトDDLの抽出

IBM Data Movement Tool, IBM Optim Development Studioが使用可能

• 移行先データベースの作成

事前にDB2_COMPATIBILITY_VECTORをセットする

DB2にあわせたスキーマの更新

データ・タイプのマッピング

DDLフォーマットの変更

論理設計を変更する場合はその対応

(6)

• データタイプ・マッピングの例(1)

IBM Optim Development Studioでのデフォルトのマッピング

ソース 桁数 ターゲット 備考 NUMBER 1-4,0 SMALLINT NUMBER 5-9,0 INTEGER NUMBER 10-18,0 BIGINT NUMBER 19-31,0 NUMBER(p,s) NUMBER 32-38,0 DECFLOAT 34桁以上では桁落ちが発生。文字列としての保持を検討 NUMBER 1-31,1-31 NUMBER(p,s) NUMBER 32-38,1-38 DECFLOAT 34桁以上では桁落ちが発生。文字列としての保持を検討 NUMBER NUMBER DECIMAL p,s DECIMAL(p,s) BINARY_FLOAT FLOAT BINARY_DOUBLE DOUBLE TIMESTAMP p TIMESTAMP(p) タイムゾーン付きは未サポー

Note:

(7)

• データタイプ・マッピングの例(2)

ソース 桁数 ターゲット 備考 NCHAR 1-127 GRAPHIC NCHAR 128-2000 VARGRAPHIC NVARCHAR2 VARGRAPHIC CHAR 1-254 CHAR CHAR 255-2000 VARCHAR VARCHAR2 VARCHAR2 ROWID CHAR UROWID CHAR

DATE TIMESTAMP DATEも選択可 BFILE BLOB

LONG RAW BLOB BLOB BLOB

(8)
(9)

データ移行のタスク

• データの抽出

Oracleは、デフォルトではCSV等への出力機能を持たない

IBM Data Movement Toolを使用してCSVへの抽出が可能

論理設計を変更する場合、データフォーマットの変換を実施

• データをテスト環境へ投入

移行先の表へのデータ投入が可能かどうかをチェック

特に論理設計の変更が行われている場合

アプリケーションのテスト環境を提供

• 本番データ移行の計画、準備

データの抽出、転送、投入のプロセスを検証し、本番データ移行での所要

(10)

アプリケーション移行のタスク

• 移行先のアプリケーション・インターフェースの構成

JDBC, 組み込みSQL, .NET, ODBC, CLI等適切なドライバを選定、構成

する

• アプリケーション・コードの変更

DBへの接続ストリング

互換性のないSQLやエラーハンドリングを検出

分離レベルやロッキングの要件を確認

基本的にはDB2 9.7で提供されるCurrently Committedを使用可能

未サポートのAPI、Build-in-package使用、ディクショナリー参照等があれ

ば修正

UDFやPROCEDUREの定義で回避可能か検討

• 検証テストの実施

(11)

DB2 V9.7 FP4レベルでの主要な非互換/未サポート機能

一階層のパッケージ等に移行。名前

の衝突に注意する。

Function / procedure定義のネスト

は不可(複数階層の定義)

パッケージ内部で宣言し、タイプの参

照にパッケージの接頭辞を追加

独立したType宣言は未サポート

カラムのNOT NULL化や非UNIQUE

INDEXへの定義変更を検討

DB2では、UNIQUE INDEXは複数

のNULL値を許容しない

(12)
(13)

移行をサポートするツール

移行をサポートするツール

(14)

移行をサポートするツール

• データオブジェクトを移行する

IBM Data Movement Tool

IBM Optim Development Studio

• データを移行する

IBM Data Movement Tool

• アプリケーションを移行する

IBM Optim Development Studio

• スクリプトの移行を容易にする

(15)

• 他社DBMSからのDDL/データ抽出をサポートするツール

Oracle, SQL Server, Sybase, MySQL, PostgreSQL等多数のデータソースをサポート

OracleはCSVでのデータ抽出機能を持たないため、当ツールの活用が重要

• 主な機能

GUI及び、コマンドラインによるDDL/データの抽出

GUIによるターゲット・データベースでのオブジェクト作成

抽出、投入をコマンドラインから実施するための各種スクリプトの生成

Oracleソースの場合にサポートされているオブジェクト

表、ビュー、シーケンス、制約、索引、シノニム(ALIAS)

Procedure, Function, Trigger

権限情報(Role, Privilege)

(16)

• マルチ・スレッド動作による高速なデータの抽出が可能

DB2へのLOAD用スクリプトも生成

• 前提

JDK 1.5以降

Oracleと接続する場合、Oracle JDBCドライバ要

必要なドライバは、ojdbc14.jar, xmlparserv2.jar, xdb.jar の3つ

• 入手方法

DeveloperWorksにて配布

http://www.ibm.com/developerworks/db2/library/techarticle/dm-0906datamovement/

ツールの詳細な使用方法の解説もあり

(17)

IBM Data Movement Tool

(18)
(19)

Data Studio Developerの後継

2009年6月にOptimを統合したV2.2が登場

Oracle移行関連の機能強化

Data Source ExplorerがOracleへの接続をサポート

Copy & Pasteによるデータオブジェクトの移行をサポート

SELECT/INSERTによるデータ移動も可能

互換性のないデータタイプは自動的にマッピング

PL/SQLの移行及び、デバッグ機能を提供

(20)
(21)

CLPPlus

OracleのSQL*Plusに似たインターフェースを持ち、SQLを実行

するためのユーティリティ

SQL、PL/SQL、SQL PLの実行

対話式でのSQLの実行

ファイルに保存したSQLの実行

主要なSQL*Plusコマンドをサポート

OracleのSQL*Plusと同じような動作をする

サポートされているコマンドは、HELP INDEXコマンドで確認

CLPの一部のコマンドもサポート

(22)

CLPPlusの起動方法 1

clpplus 起動コマンド

>>-clpplus--+---+---> '-user-id--+---+-' '-/password-' >--+---+---+----+---+--+---+-+->< | +-@host-name-+ '-:port-number-' '-/database-name-' | | '-@localhost-' | | | '-script-filename---起動例: C:¥work>clpplus db2admin/db2admin@localhost:50000/testdb データベース接続情報 ホスト名 = localhost データベース・サーバー = DB2/NT SQL09070 SQL 許可 ID = db2admin ローカル・データベース別名 = TESTDB ポート = 50000 CLPPlus: バージョン 1.0

(23)

CLPPlusの起動方法 2

SQL*Plusでの「sqlplus userid/password@ネットサービス名」と似た形式で接続可能

login.sqlファイルに接続で使用する変数を定義し、接続時にその変数を使用可能

clpplus userid/passwod@変数

• 例

C:¥work>type login.sql define test21=localhost:50000/test21 define testdb=localhost:50000/testdb C:¥work>clpplus db2admin/db2admin@testdb データベース接続情報 ホスト名 = localhost データベース・サーバー = DB2/NT SQL09070 SQL 許可 ID = db2admin ローカル・データベース別名 = TESTDB login.sqlにconnect_idintifierを記述 login.sqlでdefineし た変数を指定

(24)

CLPPlusコマンド

• ファイルに記述されたSQLを読み込み実行

• 置換変数の使用

SQL> host dir | findstr sql10

2009/05/12 01:48 306 sql10.sql SQL> get sql10.sql

1 BEGIN

2 for cur1 in (SELECT * FROM dept WHERE deptno = &depno) 3 LOOP

4 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 on SQL> /

変数 depno の値を入力してください: 10

元のステートメント:: for cur1 in (SELECT * FROM dept WHERE deptno = &depno) 置換された新規ステートメント:: for cur1 in (SELECT * FROM dept WHERE deptno = 10) ======================== DEPTNO:10 DNAME :ACCOUNTING 置換変数 実行前に置き 換えができる

(25)

CLPPlusコマンドで出力形式を整形

CLPPlusコマンドで出力形式を整えることも可能

SQL> select table_schema,table_name,num_rows,blocks from user_tables; TABLE_SCHEMA ---TABLE_NAME NUM_ROWS --- ---BLOCKS ---DB2ADMIN DEPT 5033 1004 DB2ADMIN SALGRADE 5 1 TABLE_SCHEMA ---TABLE_NAME NUM_ROWS --- ---BLOCKS ---DB2ADMIN BONUS 0 0 DB2ADMIN EMP 6790032 100234 SQL> set linesize 150

SQL> col table_schema format a30 SQL> col table_name format a30

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 デフォルトでは80バイトで 行が折り返される

(26)

CLPPlusでDB2 CLPコマンドが使用可能!

CLPコマンドのExportとImportをCLPPlusから実行

SQL> export to c:¥work¥emp.del of del select * from emp; エクスポートされる行数の合計: 12

DB250000I: コマンドは正常に完了しました。 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:¥work¥emp.del of del replace into emp2; 読み取り行数の合計: 12 スキップされた行数の合計: 0 挿入された行数の合計: 12 更新行数の合計: 0 拒否された行数の合計: 0 コミットされた行数の合計: 12 DB250000I: コマンドは正常に完了しました。 SQL> select * from emp2;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

デリミタ形式でファイルにExportされて いる

(27)

IBM Data Movement Tool

を利用したDDL/データの移行

IBM Data Movement Tool

を利用したDDL/データの移行

(28)

• 2つのレジストリー変数

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)

• データベース作成時の一般的な推奨

自動ストレージを活用しストレージ管理をシンプルに

表スペース単位の初期サイズ、上限設定が不要

ストレージ・パス単位での容量管理のみ実施

32KBページサイズの使用

Oracleと異なり、DB2は各レコードが1ページに収まる必要がある。移行をシンプルにする場

合、なるべく大きなページサイズを使用する

高トランザクションのOLTP環境では、4KB等のより小さなページサイズも考慮

複数ページサイズを使用する場合、ページサイズごとにバッファープールが必要

STMMを活用し、各バッファープールのサイズを最適化(デフォルト)

LOBを格納する表スペースは分割する

インライン格納されていないLOBはバッファープールに載らないため、データ部と表スペース

を分割し、ファイル・キャッシュの使用を有効化することとを推奨

データベースを作成

(30)

CREATE DATABASEコマンドの例

/db2data1, /db2data2, /db2data3を自動ストレージパスとして設定

各ストレージ・パスは、独立したファイルシステム、物理ディスク上に配置

データベースディレクトリーは/db2systemに配置

デフォルトページサイズとして32KBページを指定

データベースを作成

CREATE DB TESTDB AUTOMATIC STORAGE YES

ON /db2data1,

/db2data2,

/db2data3

DBPATH ON /db2system

PAGESIZE 32 K

(31)

IBM Data Movement Toolを起動

Linux/UnixではIBMDataMovementTool.shを起動(Windowsでは~.cmdを使用)

Connection Informationの入力

GUI画面の起動後にソース、ターゲットDBへの接続情報を入力

IBM Data Movement Toolの起動

$ ls -l total 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

(32)

IBM Data Movement Toolの起動

データベースへの接続

ボタン1,2を押下し、ソース/ターゲットDBへ接続する

1

2

(33)

DDL/データの抽出

出力先ディレクトリーを設定

抽出の対象を選択

抽出対象のデータが少量の場合、リモートでの抽出も可能

大量データの抽出は、DDLの抽出とは独立してソースDBサーバ上で行うこ

とを推奨

「Extract DDL/Data」ボタンを押し、抽出を実行

(34)

• 必要に応じてDDLを修正

データ/索引/LOBの格納先表スペースの分割

ページサイズの指定

データタイプの再マッピング等々

DDL/データの投入

IBM Data Movement ToolのGUI画面から実施

「Deploy DDL/Data」ボタンから一括作成

「Interactive Deploy」機能を使用して個別に作成

ツールが生成するdb2ddl.sh / db2gen.shを手動で実行

生成対象のオブジェクト

バッファープール、表スペース、表、制約、シーケンス、シノニム(ALIAS)

IBM Data Movement Toolの起動

(35)

Note:

IBM Data Movement Toolが生成する設定ファイル、スクリプト

ファイル名 内容

IBMExtract.properties IBM Data Movement Toolのプロパティファイル。データベースへ

の接続情報や、前回実行時のオプションを保持する。 geninput ソースDBに接続し、<SID>.tableファイルを生成する <SID>.table 移行対象のテーブル一覧。ソースDB上のテーブルを元に生成され る。このファイルの内容を編集することで、ツールによる移行対象の 表を制御可能。<SID>はオラクルのシステム識別子を表す unload ソースDBに接続し、DDL/データの抽出を実行するスクリプト。抽出 の対象(DDLのみ、データのみ、DDL及びデータ)は、プロパティファ イル(IBMExtract.properties)の設定内容で決定される。 db2ddl.sh ターゲットDBに接続し、DDL中に含まれたオブジェクトを作成するス クリプト(PL/SQLを含むオブジェクトは対象外)。DDLのみを抽出対 象としたときに生成される。 db2gen.sh ターゲットDBに接続し、DDLの実行とデータの投入を行う(PL/SQL

(36)

Note:

• 前述した設定ファイル、スクリプト以外のファイル

オブジェクトのDDL db2tsbp.sql db2udf.sql db2tables.sql db2default.sql db2sequences.sql db2synonyms.db2 db2check.sql db2cons.sql db2uniq.sql db2fkeys.sql PL/SQLを含むDDL db2plsql_function.db2 db2plsql_package.db2 db2plsql_package_body.db2 db2plsql_procedure.db2 db2plsql_trigger.db2 db2plsql_type.db2 db2plsql_type_body.db2 db2plsql_views.db2 データロード用スクリプト db2load.sql db2loadterminate.db2 db2checkRemoval.sh その他 db2tabcount.sql db2tabstatus.sql db2checkpending.sql db2droptables.db2 db2fkdrop.sql db2objprivs.db2 db2roleprivs.db2 db2runstats.sql 権限情報 db2objprivs.db2 db2roleprivs.db2

(37)

• 「Interactive deploy mode」によるオブジェクトの作成

GUI画面からのオブジェクト作成も可能

"Interactive Deploy" タブから“Refresh Objects to be deploy“を選択

抽出したDDLを読み込み、オブジェクトのツリーが表示される。

個別に対象オブジェクトを選択して作成可能

一括作成も可能

(38)

• コマンドラインからのツール実行

IBM Data Movement Toolはコマンドライン環境からも実行可能

テキストによる対話式のメニューから実行する

(39)

• コンソール・モードでの起動

TELNET/SSH等のコマンドライン環境から起動した場合、自動的にコ

ンソール・モードで起動

“-console” オプションを付加することで、強制的にコンソール・モードを選択

することも可能

• コンソール・モードでの抽出のステップ

コンソール・モードでの起動

動作設定、接続情報の入力

テーブル一覧の生成

テーブル一覧の編集(オプション)

(40)

コンソールモードでの起動後、抽出対象の選択や接続情報の入力を実施。

入力する情報はGUIモードと同様

下記メッセージが出力されたタイミングで、テーブル一覧の生成が完了

テーブル一覧を編集する場合は、ツールの実行を一旦保留して、別セッションから

ファイルの編集を行う

コンソール・モードの場合、全スキーマのテーブルを含んだテーブル一覧が生成され

るため、必要な表のみに絞ることを推奨

コンソールモードによる

IBM Data Movement Tool の実行

$ ./IBMDataMovementTool.sh -console

Switching to Console Mode of operation

[2009-06-07 10.11.04.838] INPUT Directory = . ...

Extract DDL (Yes) : 1 Extract DDL (No) : 2

Enter a number (Default=1) : 1

Extract Data (Yes) : 1 Extract Data (No) : 2

Enter a number (Default=1) : 2

You can remove tables that you do not want to migrate by editing .tables file

(41)

テーブル一覧の編集

行単位で必要な表のみ残すよう編集

DDL抽出の再開

テーブル一覧の編集完了後に、保留していたツールの実行を再開する

このタイミングでDDL、データファイルの抽出が実行される

IBMExtract.propertiesも同時に出力される

DDL/データの投入

抽出完了後に、DDL/データの投入を実行するかを選択する

コンソールモードによる

IBM Data Movement Tool の実行

$ cat orcl.tables

"TUKI11G"."ACCOUNTS":SELECT * FROM "TUKI11G"."ACCOUNTS"

"TUKI11G"."CUSTOMERS":SELECT * FROM "TUKI11G"."CUSTOMERS"

(42)
(43)

IBM Optim Development Studio

を利用したオブジェクトの移行

IBM Optim Development Studio

を利用したオブジェクトの移行

(44)

• 下記のオブジェクト作成は事前に実施する

レジストリー変数の設定

データベースの作成

バッファープール、表スペースの作成

(45)

IBM Optim Development Studio によるオブジェクトの移動

Oracle/DB2それぞれに接続する

接続状態では、それぞれのデータソースでオブジェクトツリーが参照可能

DB2側はLABDB、Oracle側はorclに接続している

(46)

IBM Optim Development Studio によるオブジェクトの移動

ACCOUNTS表を移動する場合

(47)

DB2データソース上で移行先のスキーマを作成する

(48)

DB2データソース上で、作成対象のスキーマにテーブルを

“Paste”する

(49)

移動時のオプションを設定する

DDLのみを移行する場合“Copy database objects only”を選択

少量データの場合、データを同時にコピーすることも可能(SELECT/INSERTに

よるコピーが行われる)

オブジェクトの依存関係がある場合、“Copy dependent database objects” を選択

IBM Optim Development Studio によるオブジェクトの移動

(50)

データ・タイプのマッピング

ODSにはデータ・タイプのマッピングルールがデフォルトで設定されている。

元となるデータタイプごとにマッピング先のデータタイプを設定できる。

(51)

生成されたDDLを確認後、Finishボタンを押してオブジェクトを

作成する

以下の例では、ACCOUNTSテーブルと依存関係にある

DEPARTMENTS テーブルも作成されている

(52)

実行結果を確認する (1/2)

画面右下に「SQL Result」が表示される

IBM Optim Development Studio によるオブジェクトの移動

Failed/Warningがある場合、

Statusパネルから理由を確認

(53)

実行結果を確認する (2/2)

DB2データソース上に、2つのテーブルが追加されている

(54)
(55)

LAB3のハンズオンシナリオでは下記の移行タスクを実施します

データベース、表、索引等のデータベース・オブジェクトを作成

テーブルにデータをロード

• ハンズオン環境にOracleデータベースが導入されていないため、Data

Movement ToolによるOracleからの抽出は実施済みとなっています

ハンズオンシナリオのご紹介

Virtual Machine (Suse Linux)

抽出済みのDDL

DB2 9.7

LABDB

IBM Data Movement Tool

オブジェクトを作成

データをロード

(56)

参照

関連したドキュメント

Corollary 5 There exist infinitely many possibilities to extend the derivative x 0 , constructed in Section 9 on Q to all real numbers preserving the Leibnitz

The matrices of the received classes can be further classified according to the number of black columns before the deciding column: the possible values of this number are 0, 1,.. ,

For positive integers l with 1 ≤ l ≤ 33, by the method indicated in the proof of the main theorem, we compute and list all (k, l) such that equation (4) has infinitely many

The investigation of the question wether an algebraic number field is monogenic is a classical problem in algebraic number theory (cf. Kov´ acs [19] the existence of a power

Taking care of all above mentioned dates we want to create a discrete model of the evolution in time of the forest.. We denote by x 0 1 , x 0 2 and x 0 3 the initial number of

A nonempty binary tree can also be regarded as a rooted directed tree graph (arborescence) where the outgoing arcs of each node are labeled by distinct labels from the set { L, R

We begin our proof of Theorem 2 by considering the enumeration of those degree sequences satisfying the criteria 1, 2, and 3a of Theorem 1 above.. of view, this means that the

If K has positive characteristic, the answer is yes if G is virtually torsion-free elementary amenable, in which case the limit can be identified with the Ore dimension of H n (X ;