リファレンス・ガイド

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

DB2-to-Oracleコンバータ

この章では、ソース・プラットフォーム(z/OS)から移行されるDB2オブジェクトと、生成される移行ツールについて説明します。変換の実行は、他のOracle Tuxedo Application Rehosting Workbenchツールによって変換または生成される他のコンポーネントと関連しています。

Oracle Tuxedo Application Rehosting Workbench DB2-to-Oracleコンバータは、スキーマと呼ばれるDB2オブジェクトの一貫性があるセットに対して処理を開始します(「Oracle Tuxedo Application Rehosting Workbenchスキーマ」を参照)。変換プロセスを起動する前には、いくつかの構成ファイルを設定する必要があります(「構成ファイルの説明」を参照)。

生成される様々なオブジェクトの説明は、「出力ファイルの説明」を参照してください。

 


DB2-to-Oracleコンバータの概要

目的

この項の目的は、次のようなRehosting Workbench DB2-to-Oracleコンバータ・ツールのすべての機能を正確に説明することです。

構造

関連項目

データの変換は、COBOLプログラムの変換と密接に関連しています。次の項目を参照してください。

Oracle Tuxedo Application Rehosting Workbenchスキーマ

Rehosting Workbenchでは、スキーマは一貫性のあるオブジェクトのセットで構成されます(たとえば、スキーマに存在しない表のCREATE INDEXを含めることはできません)。

デフォルトでは、DB2 DDLのSQLコマンドに接頭辞として修飾子または認証IDが付いている場合、その接頭辞はRehosting Workbenchによってスキーマ名として使用されます。たとえば、CREATE TABLE <修飾子または認証ID>.表名のように使用します。

スキーマ名は、システム記述ファイルのglobal-options句を使用してRehosting Workbenchによって決めることもできます。

例:

リスト4-1 スキーマ名の例
system STDB2ORA root ".."
global-options 
catalog="..", 
sql-schema=<schema name>.

または、必要な場合にはディレクトリごとにこのオプションを実装することもできます。これは複数のスキーマを使用するときに役立つオプションです。

例:

directory "BATCH" type Cobol-Batch files "*.cbl" libraries "COPY". %, "INCLUDE" options sql-schema=<"schema name">.

環境変数

データを移行するプロセスを開始する前に、次の2つの環境変数を設定する必要があります。

 


入力コンポーネントの説明

ファイルの場所

rdbms.shの場所

rdbms.shツールは次のディレクトリにあります。

$REFINEDIR/convert-data/

db-param.cfgファイルの場所

db-param.cfg構成ファイルは、次の変数に指定されたディレクトリに配置されます。

$PARAM

変換されるDB2 DDL

次のDB2オブジェクトがOracleに移行されます。

表4-1 変換されるDB2オブジェクト
オブジェクトの種類
ファイル名
備考
TABLE
TABLE- <ターゲット表名>.sql
表ごとに1つのファイルがあります。このファイルには表の構造(列名、データ型、属性)が含まれます。
NULL/NOT NULL属性以外の制約はこのファイルには書き込まれません。
INDEX
INDEX- <ターゲット表名>.sql
このファイルには、表<target_table_name>に関連付けられているすべての索引が含まれます。表<target_table_name>に定義されている索引がない場合には、このファイルは生成されません。
索引は、unique制約またはnot unique制約です。
CONSTRAINT
CONSTRAINT-
<ターゲット表名>.sql
このファイルには、表<target_table_name>に関連付けられているすべての制約が含まれます。表<target_table_name>に定義されている制約がない場合には、このファイルは生成されません。
制約は、Primary Key、Unique、CheckおよびForeign keyです。
COMMENT
COMMENT- <ターゲット表名>.sql
表と列のすべてのコメントが含まれます。1つの表に対して1つのファイルがあります。
VIEW
VIEW-<shema_name>.sql
このファイルには、ソース・データベースおよびスキーマで作成されたすべてのビューが含まれます。このリリースでは、Select文はターゲット・データベースの言語に自動的には変換されません。
SEQUENCE
SEQUENCE-<shema_name>.sql
ソース・データベースですでに作成されたシーケンスに対応します。
SYNONYM
SYNONYMS-<shema_name>.sql
 
IDENTITY
IDENTITY- <ターゲット表名>.sql
IDENTITYは、DB2からORACLEに移行すると、Rehosting WorkbenchによってSequenceオブジェクトとTriggerオブジェクトが作成されます。

DB2データ型の変換

次の表に、すべてのDB2データ型とOracleデータベース・ターゲットでの変換を示します。

表4-2 DB2からOracleデータ型への変換
DB2 z/OSデータ型
Oracleのフォーマット
ノート
CHAR
CHAR(長さ)
CHAR
長さなしのCHARはCHAR(1)となります。
VARCHAR(長さ)
VARCHAR2 (長さ)
DECIMAL(…)
NUMBER(…)
精度がない場合、DECIMALはNUMBER(5)となります。
NUMERIC(…)
NUMBER(…)
精度がない場合、NUMERICはNUMBER(5)となります。
DEC(…)
NUMBER(…)
精度がない場合、DECはNUMBER(5)となります。
SMALLINT
NUMBER(6)
 
INTEGER
NUMBER(11)
 
TIMESTAMP
TIMESTAMP
 
TIMESTMP
TIMESTAMP
 
DATE
DATE
 
TIME
DATE
 
DOUBLE
FLOAT(53)
 
FLOAT(prec)
FLOAT(53)
 
REAL
FLOAT(24)
 

DB2の列プロパティの変換

次の表に、すべてのDB2列プロパティとOracleデータベース・ターゲットでの変換を示します。

表4-3 DB2の列プロパティの変換
DB2の列プロパティ
Oracleのフォーマット
ノート
WITH DEFAULT
DEFAULT <値>
<value>はDB2 z/OSデータ型によって異なります。
WITH DEFAULT’’
(引用符には何も指定しません)
CHAR:… DEFAULT ' '
VARCHAR2 … DEFAULT ' '
DB2の0バイト長はOracleではNULLフラグになります。
WITH DEFAULT '<value>’
DEFAULT '<value>'
 
NOT NULL
NOT NULL
 
IDENTITY
シーケンスを作成
トリガーを作成
IDENTITY属性はOracleに存在しないため、この属性はRehosting WorkbenchによってSequenceオブジェクトとTriggerオブジェクトで置換されます。
FOR SBCS …
属性は無視されます
 

構成ファイルの説明

ここでは、DB2データベースのOracleデータベースへの移行を制御するために使用できるファイルとパラメータを示します。

POBファイル

これらのファイルはカタログ化の際に使用されます。詳細は、「ASTのPOBファイル」を参照してください。

DB2 DDL POBファイル

POBファイルは、DB2 DDLソース・ファイルごとに作成されます。

たとえば、SQODCSF0.ddlファイルには様々なDB2オブジェクトのソースが含まれます。SQODCSF0.ddl.pobファイルは$SOURCE/DDL/pobestディレクトリに作成されます。

Symtabファイル
symtab-<schema name>.pob

このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。

sql-systemファイル
sql-system-<project name>.pob

このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。

sql-system-<project name>-Statements.pob

このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。

system.desc

スキーマに関するパラメータに加えて、システム記述ファイルで、もう1つ別のパラメータを設定する必要があります。

DBMS-VERSION="8"

移行するRDBMSのバージョンを指定します。

db-param.cfg

このファイルは、次の$PARAM変数で指定されるディレクトリに作成されます。

$PARAM/db-param.cfg
リスト4-2 db-param.cfgテンプレート
#
# This configuration file is used by FILE & RDBMS converter
# Lines beginning by "#" are ignored
# write information in lower case
#
# common parameters for FILE and RDBMS
#
# source information is written into system descriptor file (DBMS=, DBMS-VERSION=)
target_rdbms_name:<target_rdbms_name>
target_rdbms_version:<target_rdbms_version>
target_os:<target_os>
#
# specific parameters for RDBMS conversion
rdbms:date_format:<date_format>
rdbms:timestamp_format:<timestamp_format>
rdbms:time_format:<time_format>
rdbms:indexsort:<index_sort_option>
rdbms:indexlang:<index_lang_option>
# rename object files
# the file param/rdbms/rename-objects-<schema>.txt is automatically loaded by the tool if it exists.
パラメータと構文

表4-4 db-param-cfgのパラメータ
パラメータ
説明
一般的なパラメータ
<target_rdbms_name>
ターゲットRDBMSの名前
oracle
<target_rdbms_version>
ターゲットRDBMSのバージョン
11
<target_os>
ターゲット・オペレーティング・システムの名前
unixまたはlinux
移行の日付、タイムスタンプおよび時刻に関するパラメータ
<date_format>
日付(Oracleで想定される書式)
 
<time_stamp_format>
タイムスタンプ(Oracleで想定される書式)
 
<time_format>
時刻(Oracleで想定される書式)
 
索引およびソートのパラメータ
rdbms:indexsort:<index_sort_option>
   
rdbms:indexlang:<index_lang_option>
   
     

日付と時刻のパラメータ

これら3つのパラメータは、z/OS DB2で使用されDSNZPARMに格納される日付、タイムスタンプおよび時刻の書式を指定します。これらのパラメータは、再ロード操作やCOBOLでの日付と時刻の処理に影響します。

これらのパラメータはオプションです。DB2データベースにDATE、TIMEまたはTIMESTAMPフィールドが含まれている場合のみ必要です。これらのパラメータは、Oracleの書式を考慮して指定する必要があります。

これらのパラメータが指定される場合、UNIX/Linuxの次の変数を指定する必要があります。

これらの変数をORACLEドキュメントの指示に従って指定します。

警告: これらのパラメータを正しく設定することが重要です。
索引およびソートのパラメータ

これらのパラメータはオプションです。特定の列のソート順序を保つ必要があり、ソート順序が索引を使用してアプリケーションで維持される場合のみ必要です。したがって、これらのパラメータは、ソース・プラットフォームとターゲット・プラットフォーム間でアプリケーションのISO機能を維持するためだけに実装されます。これらの値は次のように指定できます。

<index_sort_option> EBCDIC, FRENCH, …
<index_lang_option> FR, UK, …

これらのパラメータが使用されるとき、SQL CREATE INDEXスクリプトが次の例のように作成されます。ここでは、索引パラメータの値はFrenchです。

リスト4-3 索引パラメータを使用するSQL CREATE INDEXスクリプト
WHENEVER SQLERROR CONTINUE;
DROP INDEX MYDB.TAB1_IDX;
WHENEVER SQLERROR EXIT 3;
CREATE INDEX MYDB.TAB1_IDX ON MYDB.TAB1
(
  nlssort(MYCOL11, 'nls_sort=FRENCH') ASC
);

次の3つの変数があります。

これらの変数は、2つのパラメータに実装されている値に合せて調整する必要があります。Oracleのドキュメント(『Oracle Databaseグローバリゼーション・サポート・ガイド』)を参照してください。

DB2からOracleへの移行で生成されるツールは、デフォルトではバイナリのNLS_SORTを想定します。

警告: これらのパラメータを正しく設定することが重要です。

生成されるコンポーネントを変更するファイル

生成されるコンポーネントは、プロジェクトの独自のスクリプトを使用して変更できます。これらのスクリプト(sed、awk、perl、…)は次のファイルに含める必要があります。

$PARAM/rdbms/rdbms-modif-source.sh

このファイルが存在している場合、生成プロセスの最後に自動的に実行されます。このファイルは、引数として<schema name>を使用して呼び出されます。

ファイル名の変更

Oracle Tuxedo Application Rehosting Workbenchでは、DDLソース・ファイル内の様々な名前(表名や列名)の変更が認められています。

次のケースについて名前変更ルールを実装できます。

注: Rehosting Workbenchを実行するときにOracleの予約語がDDLソースで検出されると、エラーが報告されますが、Rehosting WorkbenchはDDLの分析を続行します。

名前変更ルールは、rename-objects-<schema name>.txtという名前のファイルに設定する必要があります。

このファイルは、$PARAM/rdbms変数に指定するディレクトリに配置してください。

名前変更ルールのフォーマットを次に示します。

table;<schema name>;<DB2 table name>;<Oracle table name>

column;<schema name>;<DB2 table name>;<DB2 column name>;<Oracle column name>
注: すべてのスキーマ名またはすべての表名(あるいは両方)に変更を適用するには、*を<schema name>または<DB2 table name>(あるいは両方)の位置に指定します。次の2番目の例を参照してください。

% Textという形式でコメントを付けることができます。

リスト4-4 ファイル名変更の例
% Modification applied to the AUALPH0T table
column;AUANPR0U;AUALPH0T;NUM_ALPHA;MW_NUM_ALPHA
column;AUANPR0U;*;ASC;ASC-1

rdbms-template.txt

このファイルは、Rehosting Workbenchのインストール時に配置されます。様々な移行ツールの生成を実行するテンプレートが含まれます。このファイルは次の場所にあります。

$REFINEDIR/convert-data/default/rdbms/rdbms-templates.txt
リスト4-5 rdbms-template.txt
% Unloading all TABLE *******************
#VAR:TEMPLATES#/unloading/jcl-unload-DB2-table-SQL.pgm
%
% Loading TABLE *************************
%
#VAR:TEMPLATES#/loading/convert-ebcdic-for-oracle.pgm
#VAR:TEMPLATES#/loading/reload-tables-ksh.pgm
#VAR:TEMPLATES#/loading/rdbms-reload-tables-txt.pgm
%
% included file to include into modified-components
#VAR:TEMPLATES#/include-modified-components.pgm
%
% ***************************************
% MANDATORY: used when using -r argument
#VAR:TEMPLATES#/remove-schema-name-ksh.pgm
% MANDATORY: used when using -i argument
#VAR:DEFAULT#/rdbms-move-assignation.pgm
%

必要な場合には、別のバージョンのrdbms-template.txtファイルを$PARAM/rdbmsディレクトリに配置できます。代替ファイルの使用は、rdbms.shの実行中にメッセージによって示されます。

リスト4-6 代替テンプレート・ファイルによる実行ログ
##########################################################################
Control of templates
   OK: Use Templates list file from current project:
       File name is /home2/wkb9/param/rdbms/rdbms-templates.txt
##########################################################################

rdbms_move_assignation.txt

このファイルはRehosting Workbenchのインストール時に配置されます。様々なインストール・ディレクトリに生成されたコンポーネントの転送を制御します。このファイルは、rdbms.sh -iを使用してrdbms.shが起動されたときに、インストール・フェーズでコピーする各コンポーネントの場所を指定します。

このファイルの場所は次のとおりです。

$REFINEDIR/convert-data/default/rdbms/rdbms-move-assignation.pgm

このファイルは、ファイル先頭にある指示に従って変更できます。

リスト4-7 rdbms_move_assignation.txtの変更指示
[…]
*@ (c) Metaware:file-move-assignation.pgm. $Revision: 1.2 $
*release_format=2.3
*
* format is:
*   <typ>:<source_directory>:<file_name>:<target_directory>
*
*  typ:
*    O: optional copy: if the <file_name> is missing, it is ignored
*    M: Mandatory copy: abort if <file_name> is missing.
*    E: Execution: execute the mandatory script <file_name>.
*       Parameters for script to be executed are:
*           basedir:         directory of REFINEDIR/convert-data
*           targetoutputdir: value of "-i <targetdir>"
*           schema:          schema name
*           target_dir:      value written as 4th parameter in this file.
*    d: use this tag to display the word which follows
*
*  source_directory:
*    T: generated components written in <targetdir>/Templates/<schema>
*    O: components written in <targetdir>/outputs/<schema>
*    S: SQL requests (DDL) generated into <targetdir>/SQL/<schema> directory
*    F: fixed components present in REFINEDIR
*    s: used with -s arguments: indicates the target directory for DML utilities
*       (in REFINEDIR/modified-components/) which manipulate all schemas.
*
*  file_name: (except for typ:d)
*    name of the file in <source_directory>
*
*  target_directory: (except for typ:d, given at 4th argument for typ:E)
*    name of the target directory
*    if the 1st character is "/", component is copied using static directory and not in <td> directory
*
[…]

 


出力ファイルの説明

ファイルの場所

一時ファイルの場所

Rehosting Workbench DB2-to-Oracleコンバータによって生成される一時オブジェクトは、次の場所に格納されます。

$TMPPROJECT
$TMPPROJECT/Template/<schema name>
$TMPPROJECT/outputs/<schema name>

ログ・ファイルの場所

実行ログ・ファイルは次の場所に格納されます。

$TMPPROJECT変数は$HOME/tmpで設定されます。

生成されるファイルの場所

-i $HOME/trfオプションで生成されるアンロード・コンポーネントおよびロード・コンポーネントは、次の場所に配置されます。

表4-5 コンポーネントの場所
「場所」
フィールド値
$HOME/trf/unload/rdbms/<schema name>
アンロードする各表で使用されるJCLは、各<schema name>で生成されます。
これらのJCLの名前は次のとおりです。
<table name_8>.jclunload
$HOME/trf/SQL/rdbms/<schema name>
各<schema name>の、Oracleオブジェクトの作成に使用されるSQLスクリプトの場所。
これらのスクリプトの名前は表4-1で説明しています。
$HOME/trf/reload/rdbms/<schema name>/src
各<schema name>のCOBOLトランスコード・プログラムの場所。
これらのプログラムの名前は次のとおりです。
MOD_<target table name>.cbl
$HOME/trf/reload/rdbms/<schema name>/ctl
各<schema name>のSQL*LOADERで使用されるCTLファイルの場所。
これらのファイルの名前は次のとおりです。
<target table name>.ctl
$HOME/trf/reload/rdbms/<schema name>/ksh
各<schema name>の再ロード用Kornシェル・スクリプトの場所。
これらのスクリプトの名前は次のとおりです。
loadrdbms-<target table name>.ksh

注意 <table name_8> 表名が8文字より短いか長い場合、Rehosting Workbench DB2-to-Oracleコンバータは、できるだけ元の名前に近い8文字の名前をz/OS JCLに付けます。この名前変更プロセスでは、各表名の一意性は維持されます。
注: <target table name>はOracleデータベースの表名です。

生成されるオブジェクト

次の項では、DB2からOracleデータベースに移行する際に生成されるオブジェクトと、それらのオブジェクトが配置されるディレクトリを示します。

一時ファイル

これらのファイルは、Rehosting Workbench DB2-to-Oracleコンバータの最初の手順で自動的に生成され、2番目の手順で使用されます。

データマップ・ファイル

これは、Rehosting Workbenchで生成および使用される構成ファイルです。移行する表のリストが含まれます。データマップ・ファイルに表名がないと、マッパー・ファイルに存在していても、Rehosting Workbenchの実行時に無視されます。

このファイルが生成されるのは、rdbms.shコマンドで-cまたは-Cオプションを使用するときです。

ファイル名

作成されるデータマップ・ファイルの完全な名前は次のとおりです。

<-target-directory parameter>/outputs/<schema name>/Datamap-<schema name>.re

次のパラメータと構文が使用されます。

表4-6 データマップ・ファイル名のパラメータ
パラメータ
<-target-directory parameter>
パラメータ-target-directoryの値: $HOME/tmp
<schema name>
現在のスキーマの名前。

構文およびパラメータ
リスト4-8 データマップ・ファイル
%% Rdbms-converter. Rev: <revision>. <compilationDate>. <BeginGeneratedDate>
%% tables generation only
data map <schema name>-map system cat::<PROJECT_NAME>
file <schema name>.<source_table_name>
organization sequential

パラメータ
%%
コメント。Rehosting Workbenchでは無視されます。
<revision>
Oracle Tuxedo Application Rehosting Workbenchリビジョン番号。
<compilation_date>
Oracle Tuxedo Application Rehosting Workbenchのコンパイル日付。
<BeginGeneratedDate>
実行日時。
<schema name>
現在のスキーマの名前
<PROJECT_NAME>
システム記述ファイルに指定されるプロジェクト名。
<source_table_name>
ソース・データベースの表名。

マッパー・ファイル

これは、2番目の手順でRehosting Workbench DB2-to-Oracleコンバータによって使用される構成ファイルです。

オブジェクト名変更などの再設計プロセスや表に関するすべての情報が含まれます。

このファイルは、-cまたは-Cオプションを使用するrdbms.shによって生成されます。

ファイル名

作成されるマッパー・ファイルの完全な名前は次のとおりです。

$TMPPROJECT/outputs/<schema>/mapper-<schema name>.re

表4-7 マッパー・ファイル名のパラメータ
パラメータ
<schema name>
現在のスキーマの名前。

生成のサンプル

次のDB2 DDLがあるとします。

CREATE TABLE ART1 (
  REF_ART CHAR(19) NOT NULL,
  REF_ART_REMPL VARCHAR(400),
  REGR_PEREMT CHAR(1),
  DUREE_VALID DATE NOT NULL,
  LONG_ART INTEGER
) […]

DB2-to-Oracleコンバータによって次のマッパー・ファイルが生成されます。

リスト4-9 マッパー・ファイルの例
%% Rdbms-converter. Rev: 1.4. 20090101 13:25. 20091010 11:25
%% tables generation only
ufas mapper GM
file GM.ART1 transferred converted 
  table name GM-ART1
  map record TAB-ART1 defined in "#VAR:RECS_SOURCE#/GM/ART1.cpy"
  source record TAB-ART1 in "#VAR:RECS_SOURCE#/GM/ART1.cpy"
  logical name ART1
  include "#VAR:RECS_SOURCE#/GM/ART1.cpy"
  strategies
   field REF-ART      		 		attributes NULL_DISALLOWED  DATATYPE_CHAR
  ,field REF-ART-REMP  				attributes NULL_ALLOWED     DATATYPE_VARCHAR
  ,field REF-ART-REMP-LEN 			 	attributes TECHNICAL_FIELD_VARCHAR
  ,field REF-ART-REMP-IND			 	attributes TECHNICAL_FIELD_NULL
  ,field REGR-PEREMT  		 		attributes NULL_ALLOWED     DATATYPE_CHAR
  ,field REGR-PEREMT-IND 				attributes TECHNICAL_FIELD_NULL
  ,field DUREE-VALID  		 		attributes NULL_DISALLOWED  DATATYPE_DATE
  ,field LONG-ART    		 		attributes NULL_DISALLOWED  DATATYPE_NUMERIC

この例では、#VAR:RECS:SOURCE#$TMPPROJECT/outputs/schemaを示します。

構文およびパラメータ
リスト4-10 マッパー・ファイル
%% Rdbms-converter. Rev: <revision>. <compilationDate>. <BeginGeneratedDate>
%% tables generation only
ufas mapper <schema name>
## For each table …
file <schema name>.<source_table_name> transferred converted 
  table name <target_table_name>
  include "#VAR:RECS_SOURCE#/<schema>/<source_table_name>.cpy"
  map record TAB-<source_table_name>  
	defined in "#VAR:RECS_SOURCE#/<schema>/<source_table_name>.cpy"
  source record TAB-<source_table_name>. 
	in "#VAR:RECS_SOURCE#/<schema>/<source_table_name>..cpy"
  logical name <table_name_8>
## For each column of the table
 [ |,]field <target_column_name> 
attributes 	[NULL_ALLOWED|NULL_DISALLOWED] 
	[DATATYPE_VARCHAR|DATATYPE_CHAR|
	 DATATYPE_NUMERIC|
	 DATATYPE_DATE|DATATYPE_TIME|DATATYPE_TIMESTAMP
	]
  ## optional: for each technical field written in the copy file
  [,field <target_column_name>-IND  attributes TECHNICAL_FIELD_NULL    ]
  [,field <target_column_name>-LEN  attributes TECHNICAL_FIELD_VARCHAR ]

各ファイル・ディレクティブは表を記述するために使用され、各フィールド・ディレクティブは表の列を記述するために使用されます(フィールド・ディレクティブ<target_column_name>-INDおよびfield <target_column_name>-LENは、アンロードされたファイルに付加される技術フィールドの特定のオプションを変更するためにもDSNTIAULによってオプションで使用されます)

表4-8は、フィールド・ディレクティブを示しています。

表4-8 フィールド・ディレクティブのパラメータ
パラメータ
%%
コメント。Rehosting Workbenchでは無視されます。
<revision>
Oracle Tuxedo Application Rehosting Workbenchリビジョン番号。
<compilation_date>
Oracle Tuxedo Application Rehosting Workbenchのコンパイル日付。
<BeginGeneratedDate>
実行日時。
<schema name>
現在のスキーマの名前
<source_table_name>
ソース・データベースの表名
<table_name_8>
8文字に制限される表の論理名。Oracle Tuxedo Application Rehosting Workbenchによって、スキーマ内のみで一意の名前が作成されます。
<target_table_name>
ターゲット・プラットフォームの表名。
<source_column_name>
ソース・データベースの列名。
<target_column_name>
ターゲット・データベースの列名。

COBOLコピーへのリンク

例のfile句のように、マッパー・ファイルはCOBOLコピー・ファイルにリンクされます。このCOBOLコピーではアンロードされるデータ・ファイルが記述されます。つまり、列の記述と技術フィールドが含まれます。このアンロードされるファイルはDSNTIAULユーティリティによって作成され、列データとNULLインジケータ値を含みます。

列ごとに、1つのフィールド名と、次の属性の2つの値が生成されます。

技術フィールドごとに、DB2-to-Oracleコンバータにより次のフィールドが生成されます。

COBOLの記述

Oracle Tuxedo Application Rehosting Workbench DB2-to-Oracleコンバータは、各表に関連付けられている記述が必要です。このため、最初の手順でCOBOLコピーの記述を生成します。

このコピーの内容は次のとおりです。

この記述はダウンロードされるファイルと同じです。

コピー・ファイル名

作成されるコピー・ファイルの完全な名前は次のとおりです。

<-target-directory parameter>/outputs/<schema name>/<source_table_name>.cpy

表4-9 コピー・ファイル名のパラメータ
パラメータ
<-target-directory parameter>
パラメータ-target-directoryの値
<schema name>
現在のスキーマの名前。
<source_table_name>
ソース表の名前

リスト4-11 コピー・ファイル: SQLコード
CREATE TABLE ART1 (
  REF_ART CHAR(19) NOT NULL,
  REF_ART_REMPL VARCHAR(400),
  REGR_PEREMT CHAR(1),
  DUREE_VALID DATE NOT NULL,
  LONG_ART INTEGER
) […]

DB2 DDLのこの例では、次のコピー・ファイルがRehosting Workbenchによって生成されます。

リスト4-12 コピー・ファイル: 生成のサンプル
* Rdbms-converter. Revision: Rev: 1.4. 20090101 13:25. 20091010 11:25
01 TAB-ART1.
    03 REF-ART                 PIC X(19).
    03 REF-ART-REMPL-LEN       PIC S9(4) COMP-5.
    03 REF-ART-REMPL           PIC X(400).
    03 REF-ART-REMPL-IND       PIC X.
    03 REGR-PEREMT             PIC X(1).
    03 REGR-PEREMT-IND         PIC X(1).
    03 DUREE-VALID             PIC X(10).
    03 LONG-ART                PIC S9(9) COMP-5.
    03 LONG-ART-IND            PIC X(1).

コピー・ファイルの構文とパラメータ

生成されるコピー・ファイルの形式は次のとおりです。

リスト4-13 コピー・ファイル
* Rdbms-converter. Revision: <revision> <compilationDate> <BeginGeneratedDate>
01 TAB-<source_table_name>.
    03 <target_column_name>-LEN PIC S9(4) COMP-5.
    03 <target_column_name> PIC <field_Cobol_format>.
    ## Is the column has NULL attribute
    03 <target_column_name>-IND PIC X.

表4-10 コピー・ファイルのパラメータ
パラメータ
説明
<revision>
Oracle Tuxedo Application Rehosting Workbenchリビジョン番号。
<compilationDate>
Oracle Tuxedo Application Rehosting Workbenchのコンパイル日時。
<BeginGeneratedDate>
プロセスの開始日時。
<source_table_name>
ソース・データベースの表名
<target_column_name>
ターゲット・データベースの列名
<target_column_name>-LEN
列にVARCHARデータ型が含まれる場合
<target_column_name>-IND
列にNULL属性がある場合
<field_Cobol_format>
COBOLでのフィールドのpicture指定。

アンロード用JCL

DB2表のアンロードに使用されるJCLは、rdbms.shコマンドの-gオプションを使用して生成されます。その後、(-iオプションを使用して)次の場所にインストールされます。

$HOME/trf/unload/rdbms/<schema name>

各JCLには、2つの手順が含まれ、z/OS DSNTIAULユーティリティを使用して1つのDB2表をアンロードします。JCLのリターン・コードは正常終了では0または4です。

ステップ1
DEL
IDCAMSでのファイルのDELETE(ログ、データ、syspunchファイルの削除)
ステップ2
UNLOAD
指定された表のDSNTIAUL

JCLの名前は<table name>.jclunloadです。

表名が8文字より短いか長い場合、Rehosting Workbenchは、できるだけ元の名前に近い8文字の名前をz/OS JCLに付けます。この名前変更プロセスでは、各表名のスキーマ内での一意性は維持されます。

注: .jclunload拡張子は、z/OSで実行する場合には削除する必要があります。

生成されるJCLは、特定のサイトの制約に合せるために次のような調整が必要になることがあります。

COBOLトランスコード・プログラム

COBOLトランスコード・プログラムは、rdbms.shコマンドの-gオプションを使用して生成されます。その後、(-iオプションを使用して)次の場所にインストールされます。

$HOME/trf/reload/rdbms/<schema name>/src 

プログラムの名前はMOD_<table name>.cblです。

プログラムは、「コンパイラ・オプション」で説明するMicrofocus COBOLまたはCOBOL-ITコンパイル・オプションを使用してコンパイルする必要があります。

これらのプログラムのコンパイルには、プロジェクトのために調整されたCONVERTMW.cpyコピー・ファイルの存在が必要です。

これらのファイルは、入力からファイルを読み取り、固定長レコードのシーケンシャル・ファイルを出力に書き込みます。出力ファイルはSQL*LOADERユーティリティによって読み取られます。

リスト4-15 FILE CONTROLセクション - トランスコード・プログラム用
       SELECT MW-ENTREE
              ASSIGN TO "ENTREE"
              ORGANIZATION IS SEQUENTIAL
              ACCESS IS SEQUENTIAL
              FILE STATUS IS IO-STATUS.
       SELECT MW-SORTIE
              ASSIGN TO "SORTIE"
              ORGANIZATION IS RECORD SEQUENTIAL
              ACCESS IS SEQUENTIAL
              FILE STATUS IS IO-STATUS.

レコード・カウントが出力ファイルに書き込まれ、処理の終了時に次のように表示されます。

DISPLAY "CONVERTING TERMINATED OK".
           	DISPLAY "Nb rows reloaded: " D-NB-RECS.
           	DISPLAY " ".

z/OSで生成されたファイルの書式の問題(DB2 DDLとアンロードされた表の間の矛盾)を防ぐために数値フィールドの有効性がテストされます。数値フィールドであると予期されたフィールドがそうではない場合、ABORTがトリガーされます。

技術フィールド(NULLインジケータ・フィールド)に対しても同じチェックが行われます。

再ロード用Kornシェル・スクリプト

再ロード用Kornシェル・スクリプトは、rdbms.shコマンドの-gオプションを使用して生成されます。その後、(-iオプションを使用して)次の場所にインストールされます。

$HOME/trf/reload/rdbms/<schema name>/ksh

スクリプトの名前はloadrdbms-<table name>.kshです。

3つのフェーズが含まれます。

スクリプトを実行すると、実行ログが$MT_LOG/<nom de table>.logに生成されます。

次の変数が各スクリプトで最初に設定されます。

リスト4-16 再ロード用スクリプトの変数
f="@ (c) Metaware:reload-tables-ksh.pgm. $Revision: 1.14 $"
export DD_ENTREE=${DD_ENTREE:-${DATA_SOURCE}/PJ01DB2.ODCSF0X1.DATA}
export DD_SORTIE=${DD_SORTIE:-${DATA_TRANSCODE}/ODCSF0.ascii}
export DD_MVSLOG=${DD_MVSLOG:-${DATA_SOURCE}/PJ01DB2.ODCSF0X1.LOG}
table_name="ODCSF0"
logtab=$MT_LOG/ODCSF0.log
reportfile=${DATA_TRANSCODE}/${table_name}.rpt
[…]

ファイル名を変更するには、スクリプトを呼び出す前にDD_*変数を設定します。

スクリプトの3つの実行フェーズでは様々なメッセージが生成されます。これらのメッセージのリストは、 「Oracle Tuxedo Application Rehosting Workbenchのメッセージ」 にあります。

正常終了では、リターン・コード0が返されます。

トランスコード・フェーズ

この手順では、処理されるOracle表に関連付けられたCOBOLトランスコード・プログラムの実行を開始します。

cobrun MOD_ODCSF0 >>$logtab 2>&1

正常終了では次のメッセージが表示されます。

echo "file ${DD_SORTIE} transcoded"
ロード・フェーズ

この手順では、SQL*LOADERユーティリティを使用してデータをOracle表にロードします。

${BIN}/RunSqlLoader.sh $CTL/ODCSF0.ctl  $opt >>$logtab 2>&1

正常終了では次のメッセージが表示されます。

echo "Table ${table_name} successfully loaded."
チェック・フェーズ

この手順では、再ロードの後でDSNTIAULユーティリティにより、再ロードされたOracle表にz/OSからアンロードされた対応する表と同数のレコードが含まれることを確認します。レコード数が異なる場合は、エラー・メッセージが生成されます。

if [ "$qteFile" -ne "$qteTranscode" ]

レコード数が等しい場合は、次のメッセージが生成されます。

echo "Number of rows written in output file is equal to number written in the report file: OK"
注: この手順を実行するには、DSNTIAULログ・ファイルをターゲット環境に転送する必要があります。

ターゲットDDL

ORACLE DDLは、rdbms.shコマンドの-cまたは-Cオプションを使用して生成されます。その後、(-iオプションを使用して)次の場所にインストールされます。

$HOME/trf/SQL/rdbms/<schema name> 

スクリプトのネーミング・ルールは表4-1で説明しています。

表および列
リスト4-17 Oracleの表と列の生成
WHENEVER SQLERROR CONTINUE;
DROP TABLE <schema>.<target_table_name> CASCADE CONSTRAINTS;
WHENEVER SQLERROR EXIT 3;
CREATE TABLE <schema>.<target_table_name> 
(
  <target_column_name> <column_data_type> <attribute(s)…>[,]
);
索引
リスト4-18 Oracleの索引の生成
WHENEVER SQLERROR CONTINUE;
DROP INDEX <schema>.<target_index_name>;
WHENEVER SQLERROR EXIT 3;
CREATE [UNIQUE] INDEX <schema>.<target_index_name> ON <schema>.<target_table_name>
(
  [<nls_function>(]<target_column_name> [, '<nls_attributes>')] [ASC|DESC][,]
);

パラメータ<nls_function>および<nls_attributes>はオプションです。db-paramのパラメータrdbms:indexsortrdbms:indexlangdb-param .cfgファイルに設定されます。その後、Rehosting WorkbenchがCREATE INDEXコマンドにこれらのオプションを生成します。

リスト4-19 Oracle索引の生成(rdbms:indexsortおよびrdbms:indexlangパラメータの指定なし)
WHENEVER SQLERROR CONTINUE;	
DROP INDEX MYDB.TAB2_IDX;
WHENEVER SQLERROR EXIT 3;
CREATE INDEX MYDB.TAB2_IDX ON MYDB.TAB2
(
  MYCOL1 ASC,
  MYCOL2 DESC
);

次のサンプルは、rdbms:indexsort=frenchパラメータが指定された索引の作成を示します。

リスト4-20 Oracle索引の生成(rdbms:indexsort=frenchパラメータの指定)
WHENEVER SQLERROR CONTINUE;
DROP INDEX MYDB.TAB1_IDX;
WHENEVER SQLERROR EXIT 3;
CREATE INDEX MYDB.TAB1_IDX ON MYDB.TAB1
(
  nlssort(MYCOL11, 'nls_sort=FRENCH') ASC
);
制約
リスト4-21 Oracleの制約の生成
WHENEVER SQLERROR CONTINUE;
ALTER TABLE <schema name>.<target_table_name> DROP CONSTRAINT <target_constraint_name>; 
WHENEVER SQLERROR EXIT 3;
ALTER TABLE <schema name>.<target_table_name> ADD CONSTRAINT <target_constraint_name> 
  < the syntax according to the constraint creation is inserted here>
;
コメント
リスト4-22 Oracleのコメントの生成
CREATE COMMENT ON TABLE <schema name>.<target_table_name> 
IS '<comment_table>'
;
CREATE COMMENT ON COLUMN<schema name> .<target_table_name>.<target_column_name> 
IS '<comment_column>'
;
注: このツールではCOMMENTを指定できるのはTABLEとCOLUMNのみです。
ビュー
リスト4-23 Oracleのビューの生成
WHENEVER SQLERROR CONTINUE;
DROP VIEW <target_view_name>; 
WHENEVER SQLERROR EXIT 3;
CREATE VIEW <target_view_name> 
AS <the syntax according to the existing view is inserted here>
;

このバージョンのDB2では、Oracle SQL構文に合せてSELECT文を調整する必要があります。

シーケンス

DB2データベースにすでに存在しているシーケンス用です。

リスト4-24 Oracleのシーケンスの生成
WHENEVER SQLERROR CONTINUE;
DROP SEQUENCE <schema name>.<target_sequence_name>; 
WHENEVER SQLERROR EXIT 3;
CREATE SEQUENCE <schema name> .<target_sequence_name> 
  <the syntax according to the existent sequence is inserted here>
;
シノニム

表のシノニムまたはビューのシノニム用です。

リスト4-25 Oracleのシノニムの生成
WHENEVER SQLERROR CONTINUE;
DROP SYNONYM <schema name>.<target_synonym_name>; 
WHENEVER SQLERROR EXIT 3;
CREATE SYNONYM <schema name>.<target_synonym_name> 
  FOR <schema name>.[<target_table_name> | <target_synonym_name>| <target_view_name>]
;
アイデンティティの再設計

DB2列のアイデンティティは、次の2つのOracleオブジェクトで置き換えられます。

ORACLE表を再ロードした後で、スクリプトを変更し、関連する列のMAX値を指定してCREATE SEQUENCEを調整する必要があります。

表の順序リスト・ファイル

このファイルは、rdbms.shコマンドの-cまたは-Cオプションを使用して生成されます。その後、(-iオプションを使用して)次の場所にインストールされます。

$Home/trf/SQL/rdbms/<schema name> 

名前は<schema name>.lstです。

このファイルには、すべての表の名前が階層順に含まれます(親表の次に子表)。

COBOL変換ガイド・ファイル

このファイルが生成されるのは、rdbms.shコマンドで-sオプションを使用するときです。

このファイルは、オブジェクト名やSQL関数のオプションを変更するために、Rehosting Workbench DB2-to-Oracleコンバータで使用されます。これらのオブジェクトや関数は、EXEC SQLおよびEND-EXEC動詞の間のSQL適用可能リクエストに格納されます。

ファイル名

作成される言語変換ファイルの完全な名前は次のとおりです。

$PARAM/dynamic-config/rdbms-conv-<schema name>.xml
$PARAM/dynamic-config/rdbms-conv.txt

説明:

<schema name>

現在のスキーマの名前。
生成されるサンプル
リスト4-27 COBOL変換ガイドのサンプル
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- DOCTYPE RDBMS CONVERSION "metaware_rdbms.dtd" -->
<rdbms revision="1.4" compilationdate="20090101 10:00"
       Generateddate="20090608 08:01">
  <comment>
  </comment>
  <sourceformat>
    <date>YYYYMMDD</date>
  </sourceformat>
  <tablelist>
    <table source_name="DESC">
      <target_name>DESC1</target_name>
    </table>
    <table source_name="USER">
      <target_name>USER1</target_name>
    </table>
    <table source_name="MYTB">
      <column source_name="USER">
        <target_name>USER1</target_name>
      </column>
    </table>
  </tablelist>

SQL*LOADER制御ファイル

このファイルが生成されるのは、rdbms.shコマンドで-iオプションを使用するときです。

$HOME/trf/reload/rdbms/<schema name>/ctl/<target_table_name>.ctl

これらのファイルはSql*Loader Oracleユーティリティのために生成されます。トランスコード・プログラムで作成されたデータ・ファイルの説明が含まれます。データ・ファイルはSql*Loaderによって読み取られ、Oracle表に完全にロードされます。

ファイル名
$HOME/trf/reload/rdbms/<schema name>/ctl/<target_table_name>.ctl

説明:

<schema name>

現在のスキーマの名前。

<target_table_name>

ターゲット表の名前。
生成されるサンプル

次のサンプルは、Sql*Loaderによって使用されるCTLファイル(制御ファイル)の内容です。

これは、このOracle Loaderユーティリティで管理されるすべてのSql*Loaderデータ型とファイル構造を示します。

リスト4-28 CTLファイルの例
LOAD DATA
 INFILE  'PHAM.ascii' "fix 512"
 BADFILE 'PHAM.bad'
 APPEND
 PRESERVE BLANKS
 INTO TABLE PH0.PHAM
 REENABLE
 (
  MOUV_REF      POSITION(1:19)    CHAR(19),
  C01           POSITION(21:30)   CHAR(10) NULLIF (31:31) = "N",
  DATE_FAB      POSITION(32:41)   DATE(10) "DD.MM.YYYY",
  M_COEFF_TR    POSITION(43:60)   DECIMAL EXTERNAL,
  PHDESC        POSITION(62:483)  VARCHAR(420)
  DATMOD        POSITION(485:510) TIMESTAMP "YYYY.MM.DD.HH24.MI.SS.FF6" ,
)

DATETIMESTAMPの書式は、db-param.cfgファイルに指定された値で置換されます。

DDLトランスレータ・ログ・ファイル

DDLトランスレータは、変換するスキーマごとにログ・ファイルを出力します。このファイルには変換プロセスに関する情報や、実行した主な変換アクションの説明が含まれます。また、エラー・メッセージや変換の問題に関するメッセージも含まれます。

次に示すログ・ファイルの例は注釈付きです。

ヘッダーには、トランスレータのバージョン情報と開始時刻が示されます。

リスト4-29 DDLトランスレータ・ログ・ファイル - ヘッダー
Rdbms-converter. Rev: 0.0.0.beta. <revision date/time> <build date/time> .
BeginTime: <starting date/time>

RDBMS Parametersセクションには、実行されたトランザクションの入力パラメータが示されます。

リスト4-30 DDLトランスレータ・ログ・ファイル - パラメータ
========================== 
RDBMS Parameters
==========================
System description file (-system-description): .../samples/param/system.desc
Schemas (-ddl): TEST,OTHER
Schema names file (-ddls-file): None
Target OS (-target-os): UNIX
Target RDBMS (-target-rdbms): ORACLE
Target RDBMS version (-target-rdbms-version): 11g
Target directory (-target-directory): .../samples/latest/
Rename objects file (-rename-objects): .../samples/param/rename-objects.conf
REBMS parameters file (-rdbms-parameters): .../samples/param/rdbms-parameters.conf
Recatalog allowed? (-with-ddl-changes): true

Database Parametersセクションには、ソース・データベースの重要なプロパティが示されます。

リスト4-31 DDLトランスレータ・ログ・ファイル - データベースのパラメータ
========================= 
Database Parameters 
=========================
DATE_FORMAT: DD.MM.YYYY
TIME_FORMAT: HH24.MI.SSXFF
TIMESTAMP_FORMAT: YYYY.MM.DD.HH24.MI.SS.FF6
INDEXSORT: FRENCH

Schema Translationセクションには、変換プロセスの記録が示されます。

リスト4-32 DDLトランスレータ・ログ・ファイル - スキーマの変換
========================= 
Schema Translation
=========================
----------------------------------------------------------------------
Beginning translation
Mode: MVS DB2 8 to UNIX ORACLE 11g
Schemas to translate: TEST, OTHER
Schemas to skip: 
Schemas to not translate: 
----------------------------------------
Translating schema TEST (1/2) ..
  setting up pre-translation ..                           	3 issues
  inspecting the original schema ..                      	0 issues
  preparing the schema for translation ..                	0 issues
  canonicalizing the original schema ..                  	0 issues
  analyzing the original schema ..                       	0 issues
    Alter-Table-Stmt:    	1
    Base-Table-Def:      	2
    Comment-On-Def:      	3
    Index-Def:           	1
    Sequence-Def:        	1
    Synonym-Def:         	1
    View-Def:            	2
  translating the schema ..                              	1 issue
  outputting the translated schema files ..              	0 issues
  outputting the language conversion file ..             	0 issues
  outputting the data mapper file ..                     	0 issues
  outputting the mapper file ..                          	0 issues
  outputting the COBOL copy book files ..                	0 issues
  outputting the data loader files ..                    	0 issues
  inspecting the final translation ..                    	0 issues

DDL Analysisセクションには、入力スキーマを出力スキーマに変更するために実行された主要な変換アクションが示されます。

リスト4-33 DDLトランスレータ・ログ・ファイル - DDL分析
============================ 
DDL Analysis
============================
table TABLE2
  copy name is TABLE2.cpy
  logical name is TABLE2X2
table TABLE1
  copy name is TABLE1.cpy
  logical name is TABLE1X1
  table TABLE1 has a new target name NEW_TABLE1
  column COL_CHAR, child of table TABLE1, has a new target name NEW_COL_CHAR

Output Filesセクションには、スキーマの変換中に作成されたすべてのファイルが示されます。

リスト4-34 DDLトランスレータ・ログ・ファイル - 出力ファイル
============================ 
Output Files
============================
Target directory: ".../samples/latest/"
Output files:
  LOG file:
    outputs/TEST/rdbms-converter-TEST.log
  DDL files:
    SQL/TEST/COMMENT-NEW_TABLE1.sql
    SQL/TEST/CONSTRAINT-NEW_TABLE1.sql
    SQL/TEST/IDENTITY-NEW_TABLE1.sql
    SQL/TEST/INDEX-NEW_TABLE1.sql
    SQL/TEST/SEQUENCE-SEQUENCE1.sql
    SQL/TEST/SYNONYM-TAB1.sql
    SQL/TEST/TABLE-NEW_TABLE1.sql
    SQL/TEST/TABLE-TABLE2.sql
    SQL/TEST/TEST.lst
    SQL/TEST/VIEW-VIEW1.sql
    SQL/TEST/VIEW-VIEW2.sql
  COPYBOOK files:
    outputs/TEST/TABLE1.cpy
    outputs/TEST/TABLE2.cpy
  LANGUAGE-CONVERSION file:
    outputs/TEST/rdbms-conv-TEST.xml
  DATA-MAP file:
    outputs/TEST/Datamap-TEST.re
  MAPPER file:
    outputs/TEST/mapper-TEST.re
  SQL*LOADER files:
    outputs/TEST/NEW_TABLE1.ctl
    outputs/TEST/TABLE2.ctl

Translation Issuesセクションには、変換中に検出された変換の問題がまとめて示されます。

リスト4-35 DDLトランスレータ・ログ・ファイル - 変換の問題
========================= 
Translation Issues
=========================
Showing 3 translation issues.
Setup                            	2 issues
Next-Schema                      	0 issues
Inspect-Original                 	0 issues
Setup-Schema-Root               		0 issues
Canonicalize-Original           		0 issues
Analyze-Original                 	0 issues
Translate-Ddl                    	0 issues
Inspect-Translated               	0 issues
Output-Ddl                       	0 issues
Output-Lang-Conv                 	0 issues
Output-Data-Map                  	0 issues
Output-Mapper                    	0 issues
Output-Copy-Books                	0 issues
Output-Data-Loaders              	0 issues
Inspect-Final                    	0 issues
Shutdown                         	0 issues
Total                            	2 issues
==================================================
Translation Phase: :SETUP (2 issues).
--------------------------------------------------
  Original File: unknown
  Original Line: unknown
  Phase: Setup
  RDBMS-0024: Incomplete source information for the system (OS: MVS, DB: None, Version: "None").  Defaulting to (OS: MVS, DB: DB2, Version: "8").
--------------------------------------------------
  Original File: unknown
  Original Line: unknown
  Phase: Setup
  RDBMS-0083: Rename pattern "COLUMN;  X; TABLE1; COL_CHAR;  NEW_COL_CHAR" is pre-empted by an earlier pattern and will never be applied.
--------------------------------------------------

トレーラには終了日時が示されます。成功したか失敗したかも示されます。

リスト4-36 DDLトランスレータ・ログ・ファイル - トレーラ
=============================================================
EndTime: <ending date/time>
Status: Failure

実行レポート

rdbms.shでは、選択したオプションに応じて様々な実行レポートが作成されます。次の例では次のコマンドが使用されます。

rdbms.sh -Cgrmi $HOME/trf PJ01DB2
リスト4-37 rdbms.shでオプション-cまたは-Cを使用したときに生成されるメッセージ
############################################################################
 CONVERSION OF DDLs and CTL files and GENERATION of directive files
CMD : /Qarefine/release/M2_L3_4/scripts/launch rdbms-converter  -s /home2/wkb9/param/system.desc -td /home2/wkb9/tmp -rdbms-parameters /home2/wkb9/tmp/config-rdbms-PJ01DB2-param.tmp -ddl PJ01DB2 -target-rdbms oracle -target-rdbms-version 11 -target-os unix
MetaWorld starter
Loading lib: /Qarefine/release/M2_L3_4/Linux64/lib64/localext.so
(funcall BATCH-TRANSLATE-SQL-DDL)
Starting translation at 2010/01/15 11:45:16
----------------------------------------------------------------------
Preparing for translation
Loading system description: /home2/wkb9/param/system.desc
Warning! OS clause is absent, assuming OS is IBM
Current OS is IBM-MF
Loading the SQL System:
... Building or Loading SQL-System...
... Loading SQL-System...
Loading /home2/wkb9/source/sql-system-STDB2ORA.pob at 11:45:16... done at 11:45:17
... Loading SQL-System-Statements...
Loading /home2/wkb9/source/sql-system-STDB2ORA-Statements.pob at 11:45:17... done at 11:45:17
... Loading SQL-System-Statements...done: #1<a SOURCE-FILE>
... Building or Loading SQL-System...done: #2<a SQL-SYSTEM>
... 6 elements in 1 schema.
Warning! OS clause is absent, assuming OS is IBM
----------------------------------------------------------------------
Beginning translation
Mode: MVS DB2 8 to UNIX ORACLE 11g
Schemas to translate: PJ01DB2
Schemas to skip:
Schemas to not translate:
---------------------------------------- 
{…]
Ending translation at 2010/01/15 11:45:17
  WARNING: errors still exist but are ignored (Total=5>S+I=5).
  Check /home2/wkb9/tmp/outputs/PJ01DB2/rdbms-converter-PJ01DB2.log log file
  Process can continue
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
Converted DDLS are in /home2/wkb9/tmp/SQL/PJ01DB2 directory
Generated directives files are in /home2/wkb9/tmp/outputs/PJ01DB2 directory
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
リスト4-38 rdbms.shでオプション-gを使用したときに生成されるメッセージ
#########################################################################
Control of schema PJ01DB2
#########################################################################
Control of templates
   Project Templates list file is missing /home2/wkb9/param/rdbms/rdbms-templates.txt
   OK: Use Default Templates list file
       File name is /Qarefine/release/M2_L3_4/convert-data/default/rdbms/rdbms-templates.txt
##########################################################################
Control of Mapper
##########################################################################
 GENERATION OF PROGRAMS
CMD : /Qarefine/release/M2_L3_4/scripts/launch file-converter  -s /home2/wkb9/param/system.desc -mf /home2/wkb9/tmp/mapper-PJ01DB2.re.tmp -dmf /home2/wkb9/tmp/outputs/PJ01DB2/Datamap-PJ01DB2.re -td /home2/wkb9/tmp -tmps /home2/wkb9/tmp/rdbms-templates-PJ01DB2.tmp -target-sgbd oracle11 -target-os unix -varchar2 29 -abort
MetaWorld starter
Loading lib: /Qarefine/release/M2_L3_4/Linux64/lib64/localext.so
(funcall LOAD-THE-SYS-AND-APPLY-DMAP-AND-MAPPER)
*File-Converter*: We are in BATCH mode
Comand line arguments: begining of analyze
recognized argument -s value: /home2/wkb9/param/system.desc
recognized argument -mf value: /home2/wkb9/tmp/mapper-PJ01DB2.re.tmp
recognized argument -dmf value: /home2/wkb9/tmp/outputs/PJ01DB2/Datamap-PJ01DB2.re
recognized argument -td value: /home2/wkb9/tmp
recognized argument -tmps value: /home2/wkb9/tmp/rdbms-templates-PJ01DB2.tmp
recognized argument -target-sgbd value: oracle11
recognized argument -target-os value: unix
recognized argument -varchar2 value: 29
recognized argument -abort
End of Analyze
Parsing mapper file /home2/wkb9/tmp/mapper-PJ01DB2.re.tmp ...
Parsing data-map file /home2/wkb9/tmp/outputs/PJ01DB2/Datamap-PJ01DB2.re ...
Parsing system description file /home2/wkb9/param/system.desc ...
Warning! OS clause is absent, assuming OS is IBM
Current OS is IBM-MF
Loading /home2/wkb9/source/symtab-STDB2ORA.pob at 11:45:18... done at 11:45:18
... Loading SQL System from POB...
Loading /home2/wkb9/source/sql-system-STDB2ORA.pob at 11:45:18... done at 11:45:18
Build-Symtab-DL1 #1<a SYMTAB-DL1>
   ... Postanalyze-System-RPL...
sym=#2<a SYMTAB>
PostAnalyze-Common #2<a SYMTAB>
    0 classes
    0 classes
    0 classes
    0 classes
    0 classes
    13 classes
Loading /home2/wkb9/source/BATCH/pob/RSSBBB01.cbl.shrec...
Loading /home2/wkb9/source/COPY/pob/ODCSF0.cpy.cdm...
Loading /home2/wkb9/source/COPY/pob/ODCSFU.cpy.cdm...
 Point 1 !!
 Point 2 !!
Parsing file /home2/wkb9/tmp/outputs/PJ01DB2/ODCSF0.cpy ...
*Parsed 12 lines*
 Point 3 !!
 Point 4 !!
 Point 5 !!
loading pob file /Qarefine/release/M2_L3_4/convert-data/templates/rdbms/unloading/jcl-unload-DB2-table-SQL.pgm.pob
Expanding /Qarefine/release/M2_L3_4/convert-data/templates/rdbms/unloading/jcl-unload-DB2-table-SQL.pgm ...
Writing ODCSF0X1.jclunload
[..}
Parsing template file /Qarefine/release/M2_L3_4/convert-data/default/rdbms/rdbms-move-assignation.pgm
Expanding /Qarefine/release/M2_L3_4/convert-data/default/rdbms/rdbms-move-assignation.pgm ...
Writing rdbms-move-assignation.lst
Rest in peace, Refine...
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Generated components are in /home2/wkb9/tmp/Template/PJ01DB2
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
リスト4-39 rdbms.shでオプション-mを使用したときに生成されるメッセージ
##########################################################################
 FORMATTING COBOL LINES
##########################################################################
 CHANGE ATTRIBUTE TO KSH or SH scripts
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
Components are modified into /home2/wkb9/tmp directory
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
リスト4-40 rdbms.shでオプション-rを使用したときに生成されるメッセージ
#########################################################################
 REMOVE SCHEMA INFORMATION IN SPECIFIC SCRIPTS
 Physical_File_is_PJ01DB2.ODCSF0=====
 Modified  <Templates>:loadrdbms-ODCSF0.ksh
 Modified  <outputs>:ODCSF0.ctl
 Modified  <SQL>:TABLE-ODCSF0.sql
 Modified  <SQL>:INDEX-ODCSF0.sql
 Modified  <SQL>:CONSTRAINT-ODCSF0.sql
 IGNORED <SQL>:COMMENT-ODCSF0.sql is missing but is optional
 ==_all_schema_==
 IGNORED <SQL>:VIEW-*.sql is missing but is optional
IGNORED <SQL>:SEQUENCE-*.sql is missing but is optional
 IGNORED <SQL>:SYNONYM-*.sql is missing but is optional
 IGNORED <SQL>:IDENTITY-*.sql is missing but is optional
 =====
 Number of modified files: 5
 Number of ignored files:  5
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
Components are modified: remove schema_name string
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
リスト4-41 rdbms.shでオプション-iを使用したときに生成されるメッセージ
##########################################################################
 INSTALL COMPONENTS INTO  SOURCES USING modif-source-rdbms.sh.sh
===================================================
==_PJ01DB2.ODCSF0_==
 Copied   <Templates>:ODCSF0X1.jclunload to <td>/unload/rdbms/PJ01DB2/ODCSF0X1.jclunload
 Copied   <Templates>:loadrdbms-ODCSF0.ksh to <td>/reload/rdbms/PJ01DB2/ksh/loadrdbms-ODCSF0.ksh
[…}
Copied   <SQL>:CONSTRAINT-ODCSF0.sql to <td>/SQL/rdbms/PJ01DB2/CONSTRAINT-ODCSF0.sql
 IGNORED  <SQL>:COMMENT-ODCSF0.sql is missing but is optional
===================================================
 IGNORED  <SQL>:VIEW-*.sql is missing but is optional
(…)
 Copied   <fixed-components>:CreateReportFromMVS.sh to <td>/reload/bin/CreateReportFromMVS.sh
===================================================
Dynamic_configuration
 Copied   <outputs>:rdbms-conv-PJ01DB2.xml to /home2/wkb9/param/dynamic-config/rdbms-conv-PJ01DB2.xml
 =====
 Number of copied files:     12
 Number of executed scripts: 0
 Number of ignored files:    5
##########################################################################
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
Components are copied into /home2/wkb9/trf directory
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-

 


詳細処理

この項では、DB2-to-Oracleコンバータで使用されるコマンドライン構文プロセス・ステップのサマリー、およびDB2データ型の変換について説明します。

ソース・プラットフォームとターゲット・プラットフォームで次の処理のためのプロセスが必要です。

コマンドライン構文

rdbms.sh

名前

rdbms.sh - DB2移行コンポーネントを生成します。

概要

rdbms.sh [ [-c|-C] [-g] [-m] [-r] [-i <installation directory>] <schema name> ] -s <installation directory> (<schema name>,...) ] 

説明

rdbms.shは、z/OS DB2データベースをUNIX/Linux Oracleデータベースに移行するために使用されるRehosting Workbenchのコンポーネントを生成します。

オプション

生成のオプション

-C <schema name>

指定されたスキーマに関して、$TMPPROJECTでのコンポーネント(ORACLE DDL、SQL*LOADERのCTLファイル、COBOLコンバータで使用されるXMLファイル、構成ファイル(マッパー・ファイルおよびデータマップ・ファイル))の生成をトリガーします。
エラーが発生するとプロセスが異常終了します。

-c <schema name>

このオプションの結果は-Cオプションと同じですが、エラーまたは警告が発生するとプロセスは異常終了します。

-g <schema name>

指定されたスキーマに関して$TMPPROJECTでのアンロード用およびロード用コンポーネントの生成をトリガーします。生成内容は、構成ファイルで検出される情報によって異なります。
変更のオプション

-m <schema name>

生成されたSHELLスクリプトを実行可能にします。COBOLプログラムは、Micro Focus COBOL固定フォーマットに合うように調整されます。生成されるソースを変更するシェル・スクリプトが存在し、プロジェクトに属している場合は、そのスクリプトが実行されます(「生成されたコンポーネントを変更するファイル」を参照)。

-r <schema name>

生成されたオブジェクト(ORACLE DDL、CTLファイル、KSH)からスキーマ名を削除します。このオプションを使用して、スキーマの名前をCOBOLコンポーネントから削除することもできます。これには、COBOLコンポーネントの変換に使用されるCOBOL変換構成ファイルでremove-sql-qualifier句を使用します。
インストールのオプション

-i <インストール・ディレクトリ> <スキーマ名>

インストール・ディレクトリにコンポーネントを配置します。この処理では、rdbms-move-assignation.pgmファイルに含まれる情報が使用されます。
最後のオプション

-s <installation directory> (<schema name 1>, <schema name 2>, …)

COBOLコンバータ構成ファイルを生成できます。このファイルは、プロジェクトのすべての単一XMLファイルを扱います。
これらすべてのファイルは$PARAM/dynamic-configに作成されます。

rdbms.sh -Cgrmi $HOME/trf PJ01DB2
rdbms.sh -s $HOME/trf PJ01DB2

単一使用順序

rdbms.shのオプションを一度に1つ使用する場合は、次の順序で使用する必要があります。

  1. => -cまたは-C
  2. => -g
  3. => -m
  4. => -r
  5. => -i
  6. => -s(ステップ1 - 5をすべてのスキーマについて実行した後で1回実行する必要があります)

プロセス・ステップ

環境の構成およびコンポーネントのインストール

この項では、ソース・プラットフォームとターゲット・プラットフォームでの準備作業について説明します。

z/OSでのアンロード用コンポーネントのインストール

アンロードに使用されるコンポーネント($HOME/trf/unload/rdbmsに生成される)は、ソースのz/OSプラットフォームにインストールする必要があります(生成されたJCLは、特定のサイトの制約に合せた調整が必要な場合があります)。

ターゲット・プラットフォームでの再ロード用コンポーネントのインストール

再ロードに使用されるコンポーネント($HOME/trf/reload/rdbmsに生成される)は、ターゲット・プラットフォームにインストールする必要があります。

次の環境変数をターゲット・プラットフォームで設定する必要があります。

表4-11 ターゲット・プラットフォームの環境変数
変数
DATA_SOURCE
z/OSから転送されてOracle表に再ロードされる、アンロード済DB2表を含むディレクトリの名前。
BIN
一般的な再ロードと制御のスクリプトの場所($HOME/trf/reload/bin)。
TMPPROJECT
一時ディレクトリ。
MT_LOG
実行ログを含むディレクトリ。
CTL
SQL*LOADERで使用される<table name>.ctlファイルを含むディレクトリ($HOME/trf/reload/rdbms/<schema name>/ctl)
DATA_TRANSCODE
DB2バイナリ・データ・トランスコード・スクリプトで使用される一時ディレクトリ(ASCII形式の一時ファイルを含みます)。
NLS_LANG
Oracleドキュメント、Oracle Databaseのグローバリゼーション・サポート・ガイドの指示に従って設定します。
NLS_SORT
Oracleドキュメント、Oracle Databaseのグローバリゼーション・サポート・ガイドの指示に従って設定します。
NLS_COMP
Oracleドキュメント、Oracle Databaseのグローバリゼーション・サポート・ガイドの指示に従って設定します。

また、次の変数は、『Oracle Tuxedo Application Rehosting Workbenchインストレーション・ガイド』の情報に従って設定する必要があります。

ターゲット・プラットフォームへのMWDB2ORAパッケージ・コンポーネントのインストール

Oracle Tuxedo Application Rehosting Workbenchは、DB2/zOSプラットフォームで検出された動作と同じ動作をOracleデータベース上で再現する必要があります。特定のDB2/zOS固有のケースを処理するために、DB2-to-Oracleコンバータには、Oracle機能を含むMWDB2ORAという名前のOracleパッケージが含まれます。

これらの機能は、すべてのDATE、TIMEおよびTIMESTAMPS機能の管理に使用されます。これらは、COBOLコンバータSQLルールによって、COBOLプログラムに追加されます。

DB2の動作を可能にするパッケージは、次のディレクトリに配置されます。

REFINEDIR/convert-data/fixed-components/

パッケージ名は次のとおりです。

MWDB2ORA.plb

パッケージをアクティブ化するために、パッケージをターゲットOracleデータベースにインストールします。

  1. MWDB2ORA.plbをターゲットUNIX/Linuxプラットフォームにコピーします。
  2. SQLPLUSの下にパッケージをインストールします。
  3. sqlplus $MT_DB_LOGIN <<EOF
    start REFINEDIR/convert-data/fixed-components/MWDB2ORA.plb
    quit
    EOF
    リスト4-42 SQLPLUSの下にMWDB2ORAパッケージをインストールしたときに生成されるメッセージ
    SQL*Plus: Release 11.1.0.6.0 - Production on ...
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL>
    Package created.
    Package body created.
    SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

データのアンロード

各DB2表をアンロードするために、IBM DSNTIAULユーティリティを使用するJCLが実行されます。DSNTIAULユーティリティによって次の3つのファイルが作成されます。

このようなアンロード用JCLの名前は<table name>.jclunloadです。

ジョブが正常に終了するとリターン・コード0が送られます。

表名が8文字より短いか長い場合、Rehosting Workbenchは、できるだけ元の名前に近い8文字の名前をz/OS JCLに付けます。この名前変更プロセスでは、各表名の一意性は維持されます。

データの転送

アンロードされたデータ・ファイルは、サイトで使用可能なファイル転送ツール(CFT、FTP、…)を使用して、ソースのz/OSプラットフォームからターゲットのUNIX/Linuxプラットフォームにバイナリ形式で転送する必要があります。

LOGファイルとSYSPUNCHファイルはテキスト・モードで転送する必要があります。

ターゲットのUNIX/Linuxプラットフォームに転送されたファイルは、$DATA_SOURCEディレクトリに格納する必要があります。

データの再ロード

データのトランスコードと再ロードのためのスクリプトが、次のディレクトリに生成されます。

$HOME/trf/reload/rdbms/<schema name>/ksh.

スクリプト名の形式は次のとおりです。

loadrdbms-<table name>.ksh

各スクリプトは、トランスコードを実行するCOBOLプログラムを開始し、次にSQL*LOADERユーティリティを開始します。SQL*LOADERで使用されるCTLファイルの名前は次のとおりです。

<table name>.ctl

再ロード用スクリプトはSQL*LDR Oracleユーティリティを使用します。このユーティリティはORACLEサーバーにしかアクセスできないため、特にこの再ロードのステップではこの変数に@<oracle_sid>文字列を含めないでください。

トランスコードと再ロードのコマンド
名前

loadrdbms – データをトランスコードして再ロードします。

概要

loadrdbms-<table name>.ksh [-t] [-l] [-c: <method>]

オプション

-t

ファイルをトランスコードします。

-l

データをOracle表に再ロードします。

-c dsntiaul

転送のチェックを実装します(「転送のチェック」を参照)。

転送のチェック

このチェックでは、loadrdbms-<table name>.kshの次のオプションを使用します。

-c dsntiaul

このオプションでは、再ロードの後でDSNTIAULユーティリティにより、再ロードされたOracle表にz/OSからアンロードされた対応する表と同数のレコードが含まれることを確認します。レコード数が異なる場合は、エラー・メッセージが生成されます。


  先頭に戻る       前  次