![]() ![]() ![]() ![]() ![]() ![]() |
この章では、ソース・プラットフォーム(z/OS)から移行されるDB2オブジェクトと、生成される移行ツールについて説明します。変換の実行は、他のOracle Tuxedo Application Rehosting Workbenchツールによって変換または生成される他のコンポーネントと関連しています。
Oracle Tuxedo Application Rehosting Workbench DB2-to-Oracleコンバータは、スキーマと呼ばれるDB2オブジェクトの一貫性があるセットに対して処理を開始します(「Oracle Tuxedo Application Rehosting Workbenchスキーマ」を参照)。変換プロセスを起動する前には、いくつかの構成ファイルを設定する必要があります(「構成ファイルの説明」を参照)。
生成される様々なオブジェクトの説明は、「出力ファイルの説明」を参照してください。
この項の目的は、次のようなRehosting Workbench DB2-to-Oracleコンバータ・ツールのすべての機能を正確に説明することです。
データの変換は、COBOLプログラムの変換と密接に関連しています。次の項目を参照してください。
Rehosting Workbenchでは、スキーマは一貫性のあるオブジェクトのセットで構成されます(たとえば、スキーマに存在しない表のCREATE INDEXを含めることはできません)。
デフォルトでは、DB2 DDLのSQLコマンドに接頭辞として修飾子または認証IDが付いている場合、その接頭辞はRehosting Workbenchによってスキーマ名として使用されます。たとえば、CREATE TABLE <
修飾子または認証ID
>.表名
のように使用します。
スキーマ名は、システム記述ファイルのglobal-options句を使用してRehosting Workbenchによって決めることもできます。
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つの環境変数を設定する必要があります。
$REFINEDIR/convert-data/
db-param.cfg構成ファイルは、次の変数に指定されたディレクトリに配置されます。
$PARAM
次の表に、すべてのDB2データ型とOracleデータベース・ターゲットでの変換を示します。
次の表に、すべてのDB2列プロパティとOracleデータベース・ターゲットでの変換を示します。
ここでは、DB2データベースのOracleデータベースへの移行を制御するために使用できるファイルとパラメータを示します。
これらのファイルはカタログ化の際に使用されます。詳細は、「ASTのPOBファイル」を参照してください。
POBファイルは、DB2 DDLソース・ファイルごとに作成されます。
たとえば、SQODCSF0.ddl
ファイルには様々なDB2オブジェクトのソースが含まれます。SQODCSF0.ddl.pob
ファイルは$SOURCE/DDL/pobest
ディレクトリに作成されます。
symtab-<schema name>.pob
このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。
sql-system-<project name>.pob
このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。
sql-system-<project name>-Statements.pob
このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。
スキーマに関するパラメータに加えて、システム記述ファイルで、もう1つ別のパラメータを設定する必要があります。
このファイルは、次の$PARAM変数で指定されるディレクトリに作成されます。
$PARAM/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.
これら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
です。
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
);
これらの変数は、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
変数に指定するディレクトリに配置してください。
column;<schema name>;<DB2 table name>;<DB2 column name>;<Oracle column name>
注: | すべてのスキーマ名またはすべての表名(あるいは両方)に変更を適用するには、*を<schema name> または<DB2 table name> (あるいは両方)の位置に指定します。次の2番目の例を参照してください。 |
% Modification applied to the AUALPH0T table
column;AUANPR0U;AUALPH0T;NUM_ALPHA;MW_NUM_ALPHA
column;AUANPR0U;*;ASC;ASC-1
このファイルは、Rehosting Workbenchのインストール時に配置されます。様々な移行ツールの生成を実行するテンプレートが含まれます。このファイルは次の場所にあります。
$REFINEDIR/convert-data/default/rdbms/rdbms-templates.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
の実行中にメッセージによって示されます。
##########################################################################
Control of templates
OK: Use Templates list file from current project:
File name is /home2/wkb9/param/rdbms/rdbms-templates.txt
##########################################################################
このファイルはRehosting Workbenchのインストール時に配置されます。様々なインストール・ディレクトリに生成されたコンポーネントの転送を制御します。このファイルは、rdbms.sh -i
を使用してrdbms.sh
が起動されたときに、インストール・フェーズでコピーする各コンポーネントの場所を指定します。
$REFINEDIR/convert-data/default/rdbms/rdbms-move-assignation.pgm
このファイルは、ファイル先頭にある指示に従って変更できます。
[…]
*@ (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-1で説明しています。
|
|
注意 | <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
%% 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
システム記述ファイルに指定されるプロジェクト名。
|
|
これは、2番目の手順でRehosting Workbench DB2-to-Oracleコンバータによって使用される構成ファイルです。
オブジェクト名変更などの再設計プロセスや表に関するすべての情報が含まれます。
このファイルは、-c
または-C
オプションを使用するrdbms.shによって生成されます。
$TMPPROJECT/outputs/<schema>/mapper-<schema name>.re
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コンバータによって次のマッパー・ファイルが生成されます。
%% 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
を示します。
%% 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は、フィールド・ディレクティブを示しています。
例のfile句のように、マッパー・ファイルはCOBOLコピー・ファイルにリンクされます。このCOBOLコピーではアンロードされるデータ・ファイルが記述されます。つまり、列の記述と技術フィールドが含まれます。このアンロードされるファイルはDSNTIAULユーティリティによって作成され、列データとNULLインジケータ値を含みます。
列ごとに、1つのフィールド名と、次の属性の2つの値が生成されます。
技術フィールドごとに、DB2-to-Oracleコンバータにより次のフィールドが生成されます。
Oracle Tuxedo Application Rehosting Workbench DB2-to-Oracleコンバータは、各表に関連付けられている記述が必要です。このため、最初の手順でCOBOLコピーの記述を生成します。
<-target-directory parameter>/outputs/<schema name>/<source_table_name>.cpy
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によって生成されます。
* 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).
* 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.
DB2表のアンロードに使用されるJCLは、rdbms.sh
コマンドの-g
オプションを使用して生成されます。その後、(-i
オプションを使用して)次の場所にインストールされます。
$HOME/trf/unload/rdbms/<schema name>
各JCLには、2つの手順が含まれ、z/OS DSNTIAULユーティリティを使用して1つのDB2表をアンロードします。JCLのリターン・コードは正常終了では0または4です。
JCLの名前は<table name>.jclunload
です。
表名が8文字より短いか長い場合、Rehosting Workbenchは、できるだけ元の名前に近い8文字の名前をz/OS JCLに付けます。この名前変更プロセスでは、各表名のスキーマ内での一意性は維持されます。
注: | .jclunload 拡張子は、z/OSで実行する場合には削除する必要があります。 |
生成されるJCLは、特定のサイトの制約に合せるために次のような調整が必要になることがあります。
<crdjob>
<db2_runlib_load_librairy>
<data>
//<crdjob> <cardjob_parameter_1>,'DB2 ODCSF0X1',
// <cardjob_parameter_2>
// <cardjob_parameter_3>
// <cardjob_parameter_4>
//*@ (C) Metaware:jcl-unload-DB2-table-SQL.pgm. $Revision: 1.7.2.1 $
//********************************************************
//* UNLOAD THE RDBMS TABLE:
//* PJ01DB2.ODCSF0
//* INTO <data>.PJ01DB2.ODCSF0X1.DATA
//********************************************************
//*------------------------------------------*
//* DELETE LOG, DATA AND SYSPUNCH FILES
//*------------------------------------------*
//DEL EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DELETE <data>.PJ01DB2.ODCSF0X1.LOG
DELETE <data>.PJ01DB2.ODCSF0X1.DATA
DELETE <data>.PJ01DB2.ODCSF0X1.SYSPUNCH
SET MAXCC=0
//*------------------------------------------*
//* LAUNCH DSNTIAUL UTILITY
//*------------------------------------------*
//UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
DSN SYS(DSNM)
RUN PROGRAM(DSNTIAUL) PLAN(DSNTIAUL) PARMS('SQL') -
LIBRARY ('<db2_runlib_load_librairy>')
END
//SYSPRINT DD SPACE=(CYL,(150,50),RLSE),
// DISP=(,CATLG),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0X1.LOG
//SYSUDUMP DD SYSOUT=*
//*
//SYSREC00 DD SPACE=(CYL,(150,50),RLSE),
// DISP=(,CATLG),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0X1.DATA
//SYSPUNCH DD SPACE=(TRK,(15,15),RLSE),
// DISP=(NEW,CATLG),DCB=(LRECL=80,RECFM=FB),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0X1.SYSPUNCH
//SYSIN DD *
SELECT
CUSTIDENT
,CUSTLNAME
,CUSTFNAME
,CUSTADDRS
,CUSTCITY
,CUSTSTATE
,CUSTBDATE
,CUSTEMAIL
,CUSTPHONE
FROM PJ01DB2.ODCSF0;
/*
COBOLトランスコード・プログラムは、rdbms.sh
コマンドの-g
オプションを使用して生成されます。その後、(-i
オプションを使用して)次の場所にインストールされます。
$HOME/trf/reload/rdbms/<schema name>/src
プログラムの名前はMOD_<table name>.cbl
です。
プログラムは、「コンパイラ・オプション」で説明するMicrofocus COBOLまたはCOBOL-ITコンパイル・オプションを使用してコンパイルする必要があります。
これらのプログラムのコンパイルには、プロジェクトのために調整されたCONVERTMW
.cpyコピー・ファイルの存在が必要です。
これらのファイルは、入力からファイルを読み取り、固定長レコードのシーケンシャル・ファイルを出力に書き込みます。出力ファイルはSQL*LOADER
ユーティリティによって読み取られます。
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シェル・スクリプトは、rdbms.sh
コマンドの-g
オプションを使用して生成されます。その後、(-i
オプションを使用して)次の場所にインストールされます。
$HOME/trf/reload/rdbms/<schema name>/ksh
スクリプトの名前はloadrdbms-<table name>.ksh
です。
スクリプトを実行すると、実行ログが$MT_LOG/<nom de table>.log
に生成されます。
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のメッセージ」 にあります。
この手順では、処理される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 ログ・ファイルをターゲット環境に転送する必要があります。 |
ORACLE DDLは、rdbms.sh
コマンドの-c
または-C
オプションを使用して生成されます。その後、(-i
オプションを使用して)次の場所にインストールされます。
$HOME/trf/SQL/rdbms/<schema name>
スクリプトのネーミング・ルールは表4-1で説明しています。
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)…>[,]
);
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:indexsort
とrdbms:indexlang
はdb-param
.cfg
ファイルに設定されます。その後、Rehosting WorkbenchがCREATE INDEX
コマンドにこれらのオプションを生成します。
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
パラメータが指定された索引の作成を示します。
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
);
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>
;
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のみです。 |
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文を調整する必要があります。
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>
;
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オブジェクトで置き換えられます。
<target_table_name>
に関連付けられたトリガー。-- Sequence associated with table <target_table_name>
-- for identity column <target_column_name>
WHENEVER SQLERROR CONTINUE;
DROP SEQUENCE <schema name>.<table_name_26>_SEQ;
WHENEVER SQLERROR EXIT 3;
CREATE SEQUENCE <schema name>.<table_name_26>_SEQ
START WITH 1 INCREMENT BY 1
;
-- Trigger associated with table <target_table_name> for
-- identity column <target_column_name>
CREATE OR REPLACE TRIGGER <schema name>.<table_name_26>_IDY
BEFORE INSERT ON <schema name>.<table_name>
REFERENCING NEW AS NEW FOR EACH ROW
BEGIN
SELECT <schema name>.<target_table_name>_SEQ.nextval INTO :NEW.<target_column_name>
FROM dual;
END;
/
ORACLE表を再ロードした後で、スクリプトを変更し、関連する列のMAX値を指定してCREATE SEQUENCEを調整する必要があります。
このファイルは、rdbms.sh
コマンドの-c
または-C
オプションを使用して生成されます。その後、(-i
オプションを使用して)次の場所にインストールされます。
$Home/trf/SQL/rdbms/<schema name>
このファイルには、すべての表の名前が階層順に含まれます(親表の次に子表)。
このファイルが生成されるのは、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
<?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>
このファイルが生成されるのは、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
次のサンプルは、Sql*Loaderによって使用されるCTLファイル(制御ファイル)の内容です。
これは、このOracle Loaderユーティリティで管理されるすべてのSql*Loaderデータ型とファイル構造を示します。
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" ,
)
DATE
とTIMESTAMP
の書式は、db-param.cfg
ファイルに指定された値で置換されます。
DDLトランスレータは、変換するスキーマごとにログ・ファイルを出力します。このファイルには変換プロセスに関する情報や、実行した主な変換アクションの説明が含まれます。また、エラー・メッセージや変換の問題に関するメッセージも含まれます。
ヘッダーには、トランスレータのバージョン情報と開始時刻が示されます。
Rdbms-converter. Rev: 0.0.0.beta. <revision date/time> <build date/time> .
BeginTime: <starting date/time>
RDBMS Parametersセクションには、実行されたトランザクションの入力パラメータが示されます。
==========================
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セクションには、ソース・データベースの重要なプロパティが示されます。
=========================
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セクションには、変換プロセスの記録が示されます。
=========================
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セクションには、入力スキーマを出力スキーマに変更するために実行された主要な変換アクションが示されます。
============================
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セクションには、スキーマの変換中に作成されたすべてのファイルが示されます。
============================
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セクションには、変換中に検出された変換の問題がまとめて示されます。
=========================
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.
--------------------------------------------------
トレーラには終了日時が示されます。成功したか失敗したかも示されます。
=============================================================
EndTime: <ending date/time>
Status: Failure
rdbms.sh
では、選択したオプションに応じて様々な実行レポートが作成されます。次の例では次のコマンドが使用されます。
rdbms.sh -Cgrmi $HOME/trf PJ01DB2
############################################################################
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
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
#########################################################################
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
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
##########################################################################
FORMATTING COBOL LINES
##########################################################################
CHANGE ATTRIBUTE TO KSH or SH scripts
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
Components are modified into /home2/wkb9/tmp directory
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
#########################################################################
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
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
##########################################################################
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
- 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のコンポーネントを生成します。
$TMPPROJECT
でのコンポーネント(ORACLE DDL、SQL*LOADERのCTLファイル、COBOLコンバータで使用されるXMLファイル、構成ファイル(マッパー・ファイルおよびデータマップ・ファイル))の生成をトリガーします。
rdbms.sh -Cgrmi $HOME/trf PJ01DB2
rdbms.sh -s $HOME/trf PJ01DB2
rdbms.sh
のオプションを一度に1つ使用する場合は、次の順序で使用する必要があります。
この項では、ソース・プラットフォームとターゲット・プラットフォームでの準備作業について説明します。
アンロードに使用されるコンポーネント($HOME/trf/unload/rdbmsに生成される)は、ソースのz/OSプラットフォームにインストールする必要があります(生成されたJCLは、特定のサイトの制約に合せた調整が必要な場合があります)。
再ロードに使用されるコンポーネント($HOME/trf/reload/rdbms
に生成される)は、ターゲット・プラットフォームにインストールする必要があります。
次の環境変数をターゲット・プラットフォームで設定する必要があります。
また、次の変数は、『Oracle Tuxedo Application Rehosting Workbenchインストレーション・ガイド』の情報に従って設定する必要があります。
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データベースにインストールします。
MWDB2ORA.plb
をターゲットUNIX/Linuxプラットフォームにコピーします。SQLPLUS
の下にパッケージをインストールします。sqlplus $MT_DB_LOGIN <<EOF
start REFINEDIR/convert-data/fixed-components/MWDB2ORA.plb
quit
EOF
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
です。
表名が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>]
このチェックでは、loadrdbms-<table name>.ksh
の次のオプションを使用します。
-c dsntiaul
このオプションでは、再ロードの後でDSNTIAUL
ユーティリティにより、再ロードされたOracle表にz/OSからアンロードされた対応する表と同数のレコードが含まれることを確認します。レコード数が異なる場合は、エラー・メッセージが生成されます。
![]() ![]() ![]() |