![]() ![]() ![]() ![]() ![]() ![]() |
この章では、ソース・プラットフォーム(z/OS)から移行されるDB2オブジェクトと、生成される移行ツールについて説明します。変換の実行は、他のTuxedo ART Workbenchツールによって変換または生成される他のコンポーネントと関連しています。
この項の目的は、次のようなTuxedo ART Workbench DB2-to-Oracleコンバータ・ツールのすべての機能を正確に説明することです。
データの変換は、COBOLプログラムの変換と密接に関連しており、「COBOLコンバータ」を参照してください。
Tuxedo ART Workbenchでは、スキーマは一貫性のあるオブジェクトのセットで構成されます(たとえば、スキーマに存在しない表のCREATE INDEXを含めることはできません)。
デフォルトでは、DB2 DDLのSQLコマンドに接頭辞として修飾子または認可IDが付いている場合、その接頭辞はTuxedo ART Workbenchによってスキーマ名として使用されます。たとえば、CREATE TABLE <
修飾子または認可ID>
.表名のように使用します。
スキーマ名は、システム記述ファイルのglobal-options句を使用してTuxedo ART 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
表4-1に、Oracleに移行されるDB2オブジェクトを示します。
このファイルには、表<
target_table_name >に関連付けられているすべての制約が含まれます。表<target_table_name >に定義されている制約がない場合には、このファイルは生成されません。
|
||||
表4-2に、すべてのDB2データ型とOracleデータベース・ターゲットでの変換を示します。
注: | ROWID データ型は変換されません。ほとんどの場合、ROWID 列はLOB データ型準拠のためにのみ作成されます。ユーザーのアプリケーションでROWID 列が暗黙的に使用される場合、生成されたTABLE-<table_name>.sql ファイルを手動で調整する必要があります。 |
表4-3に、すべての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>
# optional parameter
target_cobol:<target_cobol>
hexa-map-file:<hexa-map-file>
#
# specific parameters for RDBMS conversion
rdbms:date_format:<date_format>
rdbms:timestamp_format:<timestamp_format>
rdbms:time_format:<time_format>
rdbms:indexsort:<index_sort>
rdbms:indexlang:<index_lang>
rdbms:lobs_fname_length:<lobs_fname_length>
rdbms:jcl_unload_lob_file_system:<jcl_unload_lob_file_system>
rdbms:jcl_unload_utility_name:<jcl_unload_utility_name>
rdbms:jcl_unload_format_file:<jcl_unload_format_file>
rdbms:null_indicator_suffix:<null_indicator_suffix>
rdbms:maximum_record_size:<maximum_record_size>
# rename object files
# the file param/rdbms/rename-objects-<schema>.txt is automatically loaded by the tool if it exists.
<hexa-map-file> |
||||
|
これら3つのパラメータは、z/OS DB2で使用されDSNZPARM
に格納される日付、タイムスタンプおよび時刻の書式を指定します。これらのパラメータは、再ロード操作やCOBOLでの日付と時刻の処理に影響します。
これらのパラメータはオプションで、DB2データベースにDATE、TIMEまたはTIMESTAMP
フィールドが含まれる場合のみ必要です。これらのパラメータは、Oracleの形式を考慮して指定する必要があります。
これらのパラメータが指定される場合、UNIX/Linuxの次の変数を指定する必要があります。
これらの変数をORACLEドキュメントの指示に従って指定します。
警告: | これらのパラメータを正しく設定することが重要です。 |
これらのパラメータはオプションで、特定の列のソート順序を保つ必要があり、ソート順序が索引を使用してアプリケーションで維持される場合のみ必要です。したがって、これらのパラメータは、ソース・プラットフォームとターゲット・プラットフォーム間でアプリケーションのISO機能を維持するためだけに実装されます。これらのパラメータの値は次のように指定できます。
<index_sort> EBCDIC, FRENCH, …
<index_lang> 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
を想定します。
警告: | これらのパラメータを正しく設定することが重要です。 |
これらのパラメータはオプションで、DB2スキーマにCLOBまたはBLOBデータ型が含まれる場合、またはDB2ユーティリティの変更が必要な場合のみ必要です。
<jcl_unload_utility_name> dsntiaul (default), dsnutilb, dsnuproc
<jcl_unload_format_file> binary (default), csv
csv
値はdsnuproc
DB2ユーティリティでのみ使用できます。ファイル形式はCSVファイルのようなもので、";"文字区切りを使用します。DB2ユーティリティで作成されたファイルは、転送プロトコルがファイルをASCIIコードセットでトランスコードする、テキスト・モードで転送する必要があります。 <jcl_unload_format_file>
のbinary
値(またはこのオプションのパラメータを指定しない場合)の場合、ファイルをイメージまたはバイナリ・モードで転送する必要があります。
警告: | 転送プロトコルですべてのCOBOL文字およびすべての文字がEBCDICからASCIIに正しく変換されない場合、csv 値は使用できません。 |
これらのパラメータはオプションで、DB2スキーマにCLOBまたはBLOBデータ型が含まれる場合にのみ必要です。
注: | DB2アンロード・ユーティリティは、CLOB列またはBLOB列の各行を別個のファイルにダウンロードします(PDSまたはHFSデータセット・タイプ)。 |
注: | DB2アンロード・ユーティリティは、すべての列のデータ(個別のCLOBまたはBLOBファイルのファイル名で置き換えられるCLOBまたはBLOB列は除く)およびNULL技術フラグを一意のMVSメンバー・ファイルにダウンロードします。 |
注: | <jcl_unload_utility_name> の値は、dsnutilb を指定する必要があります。 |
<lobs_fname_length> 40, 120
<jcl_unload_lob_file_system> pds, hfs
<lobs_fname_length>
<jcl_unload_lob_file_system>
注: | このオプションは、CLOBおよびBLOB列でのみ使用されます。ログ・ファイル、SysPunchファイルおよび表データ・ファイルは、PDSデータセット・タイプで書き込まれます。 |
生成されるコンポーネントは、プロジェクトの独自のスクリプトを使用して変更できます。これらのスクリプト(sed、awk、perl、…)は次のファイルに含める必要があります。
$PARAM/rdbms/rdbms-modif-source.sh
このファイルが存在している場合、生成プロセスの最後に自動的に実行されます。これは、引数として<schema name
>を使用して呼び出されます。
Tuxedo ART Workbenchでは、DDLソース・ファイル内の様々な名前(表名や列名)を変更できます。
注: | Tuxedo ART Workbenchを実行するときにOracleの予約語がDDLソースで検出されると、エラーが報告されますが、Tuxedo ART 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
このファイルは、Tuxedo ART Workbenchのインストール時に配置され、様々な移行ツールの生成を実行するテンプレートが含まれます。このファイルの場所は次のとおりです。
$REFINEDIR/convert-data/default/rdbms/rdbms-templates.txt
% Unloading all TABLE *******************
#VAR:TEMPLATES#/unloading/jcl-unload-DB2-choice.pgm
%
% Loading TABLE *************************
#VAR:TEMPLATES#/loading/cobol-reload-ORACLE-choice.pgm
#VAR:TEMPLATES#/loading/ksh-reload-ORACLE-choice.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
% MANDATORY: used when checking warning
#VAR:TEMPLATES#/check-warning.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
##########################################################################
このファイルはTuxedo ART 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.4
*
* 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
* If the 1st character is "!", target directory contains both directory
* and target file name*
[…]
Tuxedo ART Workbench DB2-to-Oracleコンバータによって生成される一時オブジェクトは、次の場所に格納されます。
$TMPPROJECT
$TMPPROJECT/Template/<schema name>
$TMPPROJECT/outputs/<schema name>
$TMPPROJECT
変数は$HOME/tmp
で設定されます。
サポートされない機能が検出されたときにRehosting Workbench DB2-to-Oracleコンバータによって生成された警告ファイルは、次の場所に格納されます。
-c
または-C
によって生成される警告: $TMPPROJECT/outputs/<schema name> /unsupported-<schema name>.log
警告: このツールによって、サポートされていないdb2オブジェクトが破棄されました。
これらのオブジェクトの詳細を参照するには、ファイル<file_name>を確認してください。
DB2-to-Oracleコンバータは、このオブジェクトおよび関連するすべてのオブジェクトを破棄しました。たとえば、DB2表にVARBINARY
列がある場合、TABLE-<table_name>.sql, INDEX-<able_name>.sql, VIEW-<view_name>.sql
などは生成されません。
-g
によって生成される警告: $TMPPROJECT/Template/<schema name>/check-warning-<schema name>.log
警告: サポートされていない機能が使用されるため、生成されたコンポーネントのいくつかを破棄する必要があります。
これらのオブジェクトの詳細を参照するには、ファイル<file_name>を確認してください。
DB2-to-Oracleコンバータは、すべてのコンポーネントを生成しました。警告ファイルに表示されているすべての生成済コンポーネントを、無視するか変更する必要があります。たとえば、DB2表にFLOAT
列があり、db-param.cfg
でdsnuproc
DB2ユーティリティを設定する場合、このDB2オブジェクトに関連付けられている一部のコンポーネントを破棄する必要があることが示されます。一部のオブジェクトを適切に生成できない場合でも、この動作によりすべてのコンポーネントの生成が可能になります。
Rdbms-converter. Rev: 9.10.1. 2011/xx/xx xx:xx:xx. 2011/03/31 10:40:47.
========================== UNSUPPORTED RDBMS Objects =================
TABLE BADTAB1;COLUMN L_INVOER_VARBINARY;unsupported datatype VARBINARY
========================== DISCARDED RDBMS Objects =====================
TABLE BADTAB1 is discarded
INDEX UCVXLIN01IGN is discarded
%%@ (C) Metaware:check-warning.pgm. $Revision: 1.x $
%%12/05/2011 14:48
========================== CHECK UNLOADING UTILITY AND PARAMETERS ====
TABLE UCVT_L_INVOER;COLUMN L_INVOER_LOT;CLOB is not supported by 'dsnuproc' utility. Used JCL_UNLOAD_FORMAT_FILE='dsnutilb' in db-param.cfg
========================== DISCARDED GENERATED COMPONENTS ==============
UCVTXLXI.jclunload has to be discarded
loadrdbms-UCVT-L-INVOER has to be discarded
警告ファイルに格納される書込み行は、次のルールに基づいています。
一部のデータ型がサポートされていません(「DB2からOracleデータ型への変換」を参照)
|
|
一部のオブジェクトがサポートされていません(「変換されるDB2オブジェクト」を参照)
|
|
警告ファイルに表示されているコンポーネントは、MVSまたはターゲット・プラットフォーム(あるいはその両方)では正しく実行されません。これらのコンポーネントは、それらでは使用できません。これらのファイルを無視するか、変更することができます。
|
|
-i $HOME/trf
オプションで生成されるアンロード・コンポーネントおよびロード・コンポーネントは、次の場所に配置されます。
これらのスクリプトの名前は表4-1で説明しています。
|
|||
|
|||
注: | <table name_8> 表名が8文字より短いか長い場合、Tuxedo ART Workbench DB2-to-Oracleコンバータは、できるだけ元の名前に近い8文字の名前をz/OS JCLに付けます。この名前の変更プロセスにより、各表名の一意性が保たれます。 |
注: | <target table name >はOracleデータベースの表名です。 |
注意: | db-param.cfg でtarget_rdbms_name をudb に設定する場合、生成されたCOBOLプログラムtrf/DSNUTILS/<schema name> の接尾辞はsqb になります。 |
次の項では、DB2からOracleデータベースに移行する際に生成されるオブジェクトと、それらのオブジェクトが配置されるディレクトリを示します。
これらのファイルは、Tuxedo ART Workbench DB2-to-Oracleコンバータの最初の手順で自動的に生成され、2番目の手順で使用されます。
これは、Tuxedo ART Workbenchで生成および使用される構成ファイルで、移行する表のリストが含まれます。データマップ・ファイルに表名がないと、マッパー・ファイルに存在していても、Tuxedo ART 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番目の手順でTuxedo ART 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_DECIMAL | DATATYPE_SMALLINT | DATATYPE_INTEGER
DATATYPE_DOUBLE | DATATYPE_FLOAT | DATATYPE_REAL |
DATATYPE_DATE|DATATYPE_TIME|DATATYPE_TIMESTAMP
DATATYPE_CLOB | DATATYPE_BLOB | DATATYPE_ROWID
]
## 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 ]
[,field <target_column_name>-CLOB attributes TECHNICAL_FIELD_CLOB ]
[,field <target_column_name>-BLOB attributes TECHNICAL_FIELD_BLOB ]
各ファイル・ディレクティブは表を記述するために使用され、各フィールド・ディレクティブは表の列を記述するために使用されます(フィールド・ディレクティブ<target_column_name>-IND
およびfield <target_column_name>-LEN
は、アンロードされたファイルに付加されるテクニカル・フィールドの特定のオプションを変更するためにもDB2アンロード・ユーティリティによってオプションで使用されます(「MVSユーティリティ・パラメータ」を参照)。
表4-10は、フィールド・ディレクティブを示しています。
例のfile句のように、マッパー・ファイルはCOBOLコピー・ファイルにリンクされます。このCOBOLコピーではアンロードされるデータ・ファイルが記述されます。それには、列の記述に加えてテクニカル・フィールドが含まれます。このアンロードされるファイルはDB2アンロード・ユーティリティによって作成されます。それは、列データとNULLインジケータ値を含みます。
列ごとに、1つのフィールド名と、次の属性の2つの値が生成されます。
テクニカル・フィールドごとに、DB2-to-Oracleコンバータにより次のフィールドが生成されます。
Tuxedo ART Workbench DB2-to-Oracleコンバータには、各表に関連付けられている記述が必要です。このため、最初の手順でCOBOLコピーの記述を生成します。
VARCHAR
列では、長さのフィールドが追加されます。NOT NULL
属性のないフィールドの場合、インジケータ・フィールド。CLOB
またはBLOB
列では、FNAME
フィールドが追加されます。COBOLフィールド長は<lobs_fname_length>
パラメータ・オプションによって指定されます(「LOBSパラメータ」を参照)。<-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
) […]
CREATE TABLE MYCLOB (
CREATE TIMESTAMP NOT NULL,
R_ROWID ROWID GENERATED ALWAYS NOT NULL,
LOBCOL CLOB(16777280) FOR SBCS DATA NOT NULL
) […]
DB2 DDLのこの例では、パラメータrdbms:lobs_fname_length:50
を使用するときにRehosting Workbenchによって次のコピー・ファイルが生成されます(「LOBSパラメータ」を参照)。
[table ART1]
* 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).
[table MYCLOB]
* Rdbms-converter. Rev: x.x. 2011/03/29 16:36:50. 2011/03/29 16:43:46.
01 TAB-UCVT-L-INVOER.
03 H-CREATE PIC X(26).
03 R-ROWID PIC X(40).
03 L-INVOER-LOT PIC X(16777280).
03 L-INVOER-LOT-FNAME PIC X(50).
* 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.
## Is the is CLOB or BLOB
03 <target_column_name>-FNAME PIC X(<lobs_fname_length>).
LOBSファイル名の長さ(「LOBSパラメータ」を参照)
|
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文字よりも長い場合、Tuxedo ART Workbenchはできるだけ元の名前に近い8文字の名前をz/OS JCLの名前とみなします。この名前変更プロセスでは、各表名のスキーマ内での一意性は維持されます。
注: | .jclunload 拡張子は、z/OSで実行する場合には削除する必要があります。 |
デフォルトのDB2アンロード・ユーティリティはDSNTIAUL
です。db-param.cfg
ファイルにパラメータを追加することで、別のアンロード・ユーティリティを選択できます。
rdbms:jcl_unload_utility_name:<name>
(「MVSユーティリティ・パラメータ」を参照)
CLOBまたはBLOB列の場合、dsnutilb
値を選択する必要があります。
MBCSエンコード・データの場合、dsnuproc
値とcsv
形式を選択する必要があります。
dsnuproc
を使用している場合、作成されたファイルの形式を変更できます。
rdbms:jcl_unload_format_file:csv
生成されるJCLは、特定のサイトの制約に合せるために次のような調整が必要になることがあります。
<cardjob_parameter_<digit>>
<db2_runlib_load_librairy>
<ds_db2>
<plan_dsntiaul>
<data>
//<crdjob> <cardjob_parameter_1>,'DB2 ODCSF0',
// <cardjob_parameter_2>
// <cardjob_parameter_3>
// <cardjob_parameter_4>
//*@ (C) Metaware:jcl-dsntiaul-DB2-table-SQL.pgm. $Revision: 1.1.2.1 $
//********************************************************
//* UNLOAD THE RDBMS TABLE:
//* PJ01DB2.ODCSF0
//* INTO <data>.PJ01DB2.ODCSF0.DATA
//********************************************************
//*------------------------------------------*
//* DELETE LOG, DATA AND SYSPUNCH FILES
//*------------------------------------------*
//DEL EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DELETE <data>.PJ01DB2.ODCSF0.LOG
DELETE <data>.PJ01DB2.ODCSF0.DATA
DELETE <data>.PJ01DB2.ODCSF0.SYSPUNCH
IF MAXCC = 8 THEN SET MAXCC=0
//*------------------------------------------*
//* LAUNCH DSNTIAUL UTILITY
//*------------------------------------------*
//UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
DSN SYS(<ds_db2>)
RUN PROGRAM(DSNTIAUL) PLAN(<plan_dsntiaul>) PARMS('SQL') -
LIBRARY ('<db2_runlib_load_librairy>')
END
//SYSPRINT DD SPACE=(CYL,(150,50),RLSE),
// DISP=(,CATLG),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0.LOG
//SYSUDUMP DD SYSOUT=*
//*
//SYSREC00 DD SPACE=(CYL,(150,50),RLSE),
// DISP=(,CATLG),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0.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;
/*
生成されるJCLは、特定のサイトの制約にあわせるために次のような調整が必要になることがあります。
<cardjob_parameter_<digit>>
<db2_runlib_load_librairy>
<ds_db2>
<data>
//<crdjob> <cardjob_parameter_1>,'DB2 ODCSF0',
// <cardjob_parameter_2>
// <cardjob_parameter_3>
// <cardjob_parameter_4>
//*@ (C) Metaware:jcl-dsnuproc-DB2-table-SQL.pgm. $Revision: 1.1.2.1 $
//********************************************************
//* UNLOAD THE RDBMS TABLE:
//* PJ01DB2.ODCSF0
//* INTO <data>.PJ01DB2.ODCSF0.DATA
//********************************************************
//*------------------------------------------*
//* DELETE LOG, DATA AND SYSPUNCH FILES
//*------------------------------------------*
//DEL EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DELETE <data>.PJ01DB2.ODCSF0.LOG
DELETE <data>.PJ01DB2.ODCSF0.DATA
DELETE <data>.PJ01DB2.ODCSF0.SYSPUNCH
IF MAXCC = 8 THEN SET MAXCC=0
//*------------------------------------------*
//* LAUNCH UNLOAD UTILITY
//*------------------------------------------*
//UNLOAD EXEC DSNUPROC,UID='<db2_user>',UTPROC='',
// SYSTEM='<db2_dsn>'
//SYSPRINT DD SPACE=(CYL,(150,50),RLSE),
// DISP=(,CATLG),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0.LOG
//SYSREC DD SPACE=(CYL,(150,50),RLSE),
// DISP=(,CATLG),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0.DATA
//SYSPUNCH DD SPACE=(TRK,(15,15),RLSE),
// DISP=(NEW,CATLG),DCB=(LRECL=80,RECFM=FB),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0.SYSPUNCH
//SYSIN DD *
UNLOAD
EBCDIC
FROM TABLE PJ01DB2.ODCSF0;
/*
リスト4-18は、db-param.cfgで次のパラメータが設定されている場合のJCLの内容を示しています。
rdbms:jcl_unload_utility_name:dsnuproc
rdbms:jcl_unload_format_file:csv
//<crdjob> <cardjob_parameter_1>,'DB2 ODCSF0',
// <cardjob_parameter_2>
// <cardjob_parameter_3>
// <cardjob_parameter_4>
//*@ (C) Metaware:jcl-dsnuproc-DB2-table-SQL.pgm. $Revision: 1.1.2.1 $
//********************************************************
//* UNLOAD THE RDBMS TABLE:
//* FROM PJ01DB2.ODCSF0;
//* INTO <data>.PJ01DB2.ODCSF0.DATA
//********************************************************
//*------------------------------------------*
//* DELETE LOG, DATA AND SYSPUNCH FILES
//*------------------------------------------*
//DEL EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DELETE <data>.PJ01DB2.ODCSF0.LOG
DELETE <data>.PJ01DB2.ODCSF0.DATA
DELETE <data>.PJ01DB2.ODCSF0.SYSPUNCH
IF MAXCC = 8 THEN SET MAXCC=0
//*------------------------------------------*
//* LAUNCH UNLOAD UTILITY
//*------------------------------------------*
//UNLOAD EXEC DSNUPROC,UID='<db2_user>',UTPROC='',
// SYSTEM='<db2_dsn>'
//SYSPRINT DD SPACE=(CYL,(150,50),RLSE),
// DISP=(,CATLG),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0.LOG
//SYSREC DD SPACE=(CYL,(150,50),RLSE),
// DISP=(,CATLG),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0.DATA
//SYSPUNCH DD SPACE=(TRK,(15,15),RLSE),
// DISP=(NEW,CATLG),DCB=(LRECL=80,RECFM=FB),
// UNIT=SYSDA,
// DSN=<data>.PJ01DB2.ODCSF0.SYSPUNCH
//SYSIN DD *
UNLOAD
EBCDIC
DELIMITED
NOPAD
FROM TABLE PJ01DB2.ODCSF0;
/*
生成されるJCLは、特定のサイトの制約に合せるために次のような調整が必要になることがあります。
表にLOBS列が含まれていない場合でも、DSNUTILB
を使用できます。
リスト4-19は、db-param.cfgで次のパラメータが設定されている場合のJCLの内容を示しています。
rdbms:jcl_unload_utility_name:dsnutilb
rdbms:jcl_unload_lob_file_system:hfs
//<crdjob> <cardjob_parameter_1>,'DB2 TESTCLOB',
// <cardjob_parameter_2>
// <cardjob_parameter_3>
// <cardjob_parameter_4>
//*@ (C) Metaware:jcl-dsnutilb-DB2-table-SQL.pgm. $Revision: 1.1.2.2 $
//********************************************************
//* UNLOAD THE RDBMS TABLE:
//* TLOB.TESTCLOB
//* INTO <data>.TLOB.TESTCLOB.DATA
//* AND LOB DATA INTO HFS directory
//* <datahfs>/TLOB/TESTCLOB/<field>
//********************************************************
//*
//*------------------------------------------*
//* DELETE LOG, SYSPUNCH AND DATA(S) FILES
//*------------------------------------------*
//DEL EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DELETE <data>.TLOB.TESTCLOB.LOG
DELETE <data>.TLOB.TESTCLOB.SYSPUNCH
DELETE <data>.TLOB.TESTCLOB.DATA
DELETE <data>.TLOB.TESTCLOB.LONGTE0
IF MAXCC = 8 THEN SET MAXCC=0
//*
//*------------------------------------------*
//* CREATE FILES
//*------------------------------------------*
//CRFILES EXEC PGM=IEFBR14
//SYSREC DD DSN=<data>.TLOB.TESTCLOB.DATA,
// SPACE=(CYL,(150,50),RLSE),
// DISP=(MOD,DELETE,DELETE),
// UNIT=SYSDA
//SYSPUNCH DD DSN=<data>.TLOB.TESTCLOB.SYSPUNCH,
// SPACE=(CYL,(150,50),RLSE),
// DISP=(MOD,DELETE,DELETE),
// UNIT=SYSDA
//LONGTE0 DD DSN=<data>.TLOB.TESTCLOB.LONGTE0,
// SPACE=(CYL,(500,500),RLSE),
// DISP=(MOD,DELETE,DELETE),
// UNIT=SYSDA
//SYSPRINT DD SYSOUT=*
//*
//*
//*------------------------------------------*
//* INIT HFS DIRECTORIES
//*------------------------------------------*
//INITHFS EXEC PGM=BPXBATCH
//STDOUT DD PATH='<datahfs>/TLOB.TESTCLOB.log',
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),PATHDISP=(KEEP,KEEP),
// PATHMODE=(SIRWXU,SIRWXG,SIRWXO)
//STDERR DD PATH='<datahfs>/TLOB.TESTCLOB.err',
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),PATHDISP=(KEEP,KEEP),
// PATHMODE=(SIRWXU,SIRWXG,SIRWXO)
//STDPARM DD *
sh rm -rf <datahfs>/TLOB/TESTCLOB/LONGTE0
sh mkdir -p <datahfs>/TLOB/TESTCLOB/LONGTE0
//*
//*
//*------------------------------------------*
//* LAUNCH UNLOAD UTILITY
//*------------------------------------------*
//UNLOAD EXEC PGM=DSNUTILB,
// PARM=(<db2_dsn>,<db2_user>),REGION=4M
//SYSPRINT DD DSN=<data>.TLOB.TESTCLOB.LOG,
// SPACE=(CYL,(150,50),RLSE),
// DISP=(,CATLG),
// UNIT=SYSDA
//SYSUDUMP DD SYSOUT=*
//SYSIN DD *
TEMPLATE TSYSPUN
DSN('<data>.TLOB.TESTCLOB.SYSPUNCH')
TEMPLATE TSYSREC
DSN('<data>.TLOB.TESTCLOB.DATA')
TEMPLATE TLONGTE0
DSN '<datahfs>/TLOB/TESTCLOB/LONGTE0/'
DSNTYPE HFS
UNLOAD DATA FROM TABLE TLOB.TESTCLOB
(
KEY
,TMSINPUT
,LONGTEXT CHAR(40) CLOBF TLONGTE0
)
UNLDDN(TSYSREC) PUNCHDDN(TSYSPUN)
/*
COBOLトランスコード・プログラムはrdbms.sh
コマンドの-g
オプションを使用して生成され、-i
オプションを使用して$HOME/trf/reload/rdbms/<schema name>/src
にインストールされます。
<jcl_unload_format_file>
オプションが使用されていないか、"binary
"に設定されている場合に生成されます(「MVSユーティリティ・パラメータ」を参照)。
DB2表ごとにCOBOLプログラムが生成され、MOD_<table name>.cbl
という名前が付けられます。
CLOBまたはBLOB列の場合、プログラムにはDB2アンロード・ユーティリティによって書き込まれたLOBSファイルのリストを管理する固有のコードが含まれます。
CLOB列を持つDB2表ごとに、 rdbms.sh
コマンドによりセカンダリCOBOLプログラムが生成されます。
セカンダリ・プログラムの名前はCLOB_<table name>_<column_name>.cbl
です。
これらのプログラムはすべて、「コンパイラ・オプション」で説明するターゲットのCOBOLコンパイル・オプションを使用してコンパイルする必要があります。
これらのプログラムのコンパイルには、プロジェクトのために調整されたCONVERTMW.cpy
コピー・ファイルの存在が必要です。
これらのプログラムは、入力からファイルを読み取り、固定長レコードのシーケンシャル・ファイルを出力に書き込みます。出力ファイルはSQL*LOADER
ユーティリティによって読み取られます。これらのプログラムは、CLOBおよびBLOB列ごとに、ライン・シーケンシャル・ファイルを出力に書き込みます。このファイルには、DB2アンロード・ユーティリティによって書き込まれたLOBSファイルのリストが含まれます(行当たりの列ごとに1つのファイル)。再ロード用Kornシェル・スクリプトが、このライン・シーケンシャル・ファイルを処理します。
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.
* * file(s) declaration for LOBs datatype
SELECT MW-LOB-<lobs_column_name>-FNAME
ASSIGN TO "<lobs_column_name>_FNAME"
ORGANIZATION IS LINE SEQUENTIAL
FILE STATUS IS IO-STATUS.
レコード・カウントがログ・ファイルに書き込まれ、処理の終了時に次のように表示されます。
DISPLAY "CONVERTING TERMINATED OK".
DISPLAY "Nb rows reloaded: " D-NB-RECS.
DISPLAY " ".
文字列列(CHAR, VARCHAR
)はCONVERTMW.cpy
コピー・ファイルを使用してEBCDICからASCIIに変換されます。この変換は、SBCSデータにのみ適用されます。データにMBCS文字が含まれる場合、FTPなどの転送ツールを使用して変換を行う必要があります。バイナリ列(SMALLINT, INTEGER
)は、ターゲット・プラットフォームに応じて変換されます。
z/OSで生成されたファイルの書式の問題(DB2 DDLとアンロードされた表の間の矛盾)を防ぐために数値フィールドの有効性がテストされます。数値フィールドであると予期されたフィールドがそうではない場合、ABORTがトリガーされます。
テクニカル・フィールド(NULLインジケータ・フィールド)に対しても同じチェックが行われます。
これらのプログラムは、MOD_<table_name>
プログラムによって書き込まれたCLOBファイルのリストを読み取ります。入力からCLOBファイルを読み取って(DB2アンロード・ユーティリティによって、行当たりのCLOB列ごとに1つのファイルが書き込まれた)、同じサイズのシーケンシャル・ファイルを出力に書き込みます。出力ファイルは、ロード・プロセス中にSQL*LOADER
ユーティリティによって読み取られます。
SELECT MW-LOB-LONGTEXT-FNAME
ASSIGN TO "LONGTEXT_FNAME"
ORGANIZATION IS LINE SEQUENTIAL
FILE STATUS IS IO-STATUS.
GET-OPEN-LOB-FNAME.
MOVE SPACES TO MW-FILE-NAME OF MW-ENTREE.
STRING
ENTREE-DIR-NAME DELIMITED BY SPACE
"/" DELIMITED BY SIZE
LOB-<clob_column_name>-FNAME DELIMITED BY SPACE
INTO MW-FILE-NAME OF MW-ENTREE
END-STRING.
CALL "CBL_OPEN_FILE"
USING [...]
* *
MOVE SPACES TO MW-FILE-NAME OF MW-SORTIE.
STRING
SORTIE-DIR-NAME DELIMITED BY SPACE
"/" DELIMITED BY SIZE
LOB-<clob_column_name>-FNAME DELIMITED BY SPACE
".ascii" DELIMITED BY SIZE
INTO MW-FILE-NAME OF MW-SORTIE
END-STRING.
CALL "CBL_CREATE_FILE"
USING [...].
E-GET-OPEN-LOB-FNAME.
EXIT.
レコード・カウントがログ・ファイルに書き込まれ、処理の終了時に次のように表示されます。
DISPLAY "CONVERTING TERMINATED OK".
DISPLAY "Nb clob files reloaded: " D-NB-RECS.
CLOB列はCONVERTMW.cpy
コピー・ファイルを使用してEBCDICからASCIIに変換されます。
再ロード用Kornシェル・スクリプトは、rdbms.sh
コマンドの-g
オプションを使用して生成されます。その後、(-i
オプションを使用して)次の場所にインストールされます。
$HOME/trf/reload/rdbms/<schema name>/ksh
スクリプトの名前はloadrdbms-<table name>.ksh
です。
スクリプトを実行すると、実行ログが$MT_LOG/<table name>.log
に生成されます。
リスト4-24は、各スクリプトの先頭に設定された変数を示します。
注: | <jcl_unload_format_file> オプションが"csv "に設定されている場合、トランスコード・フェーズは存在しません。 |
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
[…]
f="@ (c) Metaware:reload-tables-csv-ksh.pgm. $Revision: 1.16.4.6 $"
export DD_ENTREE=${DD_ENTREE:-${DATA_SOURCE}/PJ01DB2.ODCSF0X1.DATA}
export DD_MVSLOG=${DD_MVSLOG:-${DATA_SOURCE}/PJ01DB2.ODCSF0X1.LOG}
table_name="ODCSF0"
logtab=$MT_LOG/ODCSF0.log
reportfile=${DATA_TRANSCODE}/${table_name}.rpt
export DD_ENTREE=${DD_ENTREE:-${DATA_SOURCE}/TLOB.TESTCLOB.DATA}
export DD_SORTIE=${DD_SORTIE:-${DATA_TRANSCODE}/TESTCLOB.ascii}
export DD_MVSLOG=${DD_MVSLOG:-${DATA_SOURCE}/TLOB.TESTCLOB.LOG}
# special LOBs datatypes
export LOBDIR=${LOBDIR:-"TLOB.TESTCLOB"}
export DD_ENTREE_DIR=${DD_ENTREE_DIR:-${DATA_SOURCE}}
export DD_SORTIE_DIR=${DD_SORTIE_DIR:-${DATA_TRANSCODE}}
export DD_LONGTEXT_FNAME=${DD_LONGTEXT_FNAME:-${DATA_TRANSCODE}/TLOB.TESTCLOB/LONGTEXT_FNAME.loblst}
#
DD_ENTREE_DIR="${DD_ENTREE_DIR%%/}"
DD_SORTIE_DIR="${DD_SORTIE_DIR%%/}"
export JCL_UNLOAD_UTILITY_NAME=${JCL_UNLOAD_UTILITY_NAME:-"dsnutilb"}
table_name="TLOB.TESTCLOB"
logtab=$MT_LOG/TESTCLOB.log
reportfile=${DATA_TRANSCODE}/${table_name}.rpt
sysinfile=${TMPPROJECT}/TESTCLOB.sysin.tmp
[…]
ファイル名を変更するには、スクリプトを呼び出す前にDD_ENTREE
およびDD_SORTIE
変数を設定します。
LOBSデフォルト・パラメータを変更するには、スクリプトを呼び出す前にLOBDIR
、DD_ENTREE_DIR
、DD_SORTIE_DIR
の各変数を設定します。アンロード・ユーティリティで作成されたすべてのLOBSファイルを、バイナリ・モードでディレクトリ${DD_ENTREE_DIR}/${LOBDIR}
に転送する必要があります。
スクリプトの3つの実行フェーズでは、様々なメッセージが生成されます。これらのメッセージのリストは、「Oracle Tuxedo Application Rehosting Workbenchのメッセージ」にあります。
<jcl_unload_format_file>
オプションが"csv
"に設定されている場合、トランスコード・フェーズは適用されません。
この手順では、処理されるOracle表に関連付けられたCOBOLトランスコード・プログラムの実行を開始します。
runb MOD_ODCSF0 >>$logtab 2>&1
runb
はOracle Tuxedo Application Runtime Batchの一部です(詳細は、Oracle Tuxedo Application Runtime Batchリファレンス・ガイドを参照)。
注: | 表にCLOBまたはBLOB列が含まれ、この手順を一度だけ起動する場合は(次のCLOBまたはBLOB手順を起動しない場合)、rdbms.sh コマンドの-T オプションを使用します。このプログラムは、アンロード手順でLOBSファイルに使用されるデータセット・タイプも表示します(パラメータ<jcl_unload_lob_file_system> に依存します)。 |
LOB FILENAME IS IN PDS/MVS FORMAT
or
LOB FILENAME IS IN HFS/UNIX FORMAT
表にBLOB列が含まれる場合、この手順ではすべてのBLOBファイルに対して次のUNIXコマンドを起動します。
ln -sf $DD_ENTREE_DIR/$LOBDIR/<filename> $DD_SORTIE_DIR/$LOBDIR/<filename>
BLOBファイルのリストが、前述のMOD_<table_name> COBOL
プログラムにより作成されます(DD_<column_name>_FNAME
変数を参照)。
列<name>のすべてのBLOBファイルが${DD_SORTIE_DIR}/${LOBDIR}にリンクされています
注: | この手順を一度だけ起動する場合は、rdbms.sh コマンドの-T オプションを使用します(COBOLプログラムMOD_<table_name> を少なくとも一度起動する必要があります)。 |
表にCLOB列が含まれる場合、この手順ではCOBOLプログラムの後に次のコマンドを起動します。
runb CLOB_TESTCLOB_LONGTEXT >>$logtab 2>&1
このCOBOLプログラムはすべてのCLOBファイルをトランスコードします。CLOBファイルのリストが、前述のMOD_<table_name> COBOL
プログラムにより作成されます(DD_<column_name>_FNAME
変数を参照)。
runb
はOracle Tuxedo Application Runtime Batchの一部です(詳細は、Oracle Tuxedo Application Runtime Batchリファレンス・ガイドを参照)。
列<name>のすべてのCLOBファイルが${DD_SORTIE_DIR}/${LOBDIR}でトランスコードされました
注: | この手順を一度だけ起動する場合は、rdbms.sh コマンドの-T オプションを使用します(COBOLプログラムMOD_<table_name> を少なくとも一度起動する必要があります)。 |
この手順では、SQL*LOADER
ユーティリティを使用してデータをOracle表にロードします。
${BIN}/RunSqlLoader.sh $CTL/ODCSF0.ctl $opt >>$logtab 2>&1
echo "Table ${table_name} successfully loaded."
この手順では、DB2アンロード・ユーティリティにより、再ロードされた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"
注: | この手順を実行するには、DB2アンロード・ログ・ファイルをターゲット環境に転送する必要があります。 |
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
ファイルに設定されている場合、Tuxedo ART 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>
;
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関数のオプションを変更するために、Tuxedo ART 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データ型とファイル構造を示しています。これらは別々のパラメータを使用して生成されました(db-param.cfgを参照)。
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),
MOUV_REF_IND FILLER POSITION(20:20),
C01 POSITION(21:30) CHAR(10) NULLIF (31:31) = "N",
C01 IND FILLER POSITION(31:31),
DATE_FAB POSITION(32:41) DATE "DD.MM.YYYY",
DATE_FAB_IND FILLER POSITION(42:42),
M_COEFF_TR POSITION(43:60) DECIMAL EXTERNAL,
M_COEFF_TR_IND FILLER POSITION(61:61),
PHDESC POSITION(62:483) VARCHAR(420)
PHDESC_IND FILLER POSITION(484:484),
DATMOD POSITION(485:510) TIMESTAMP "YYYY.MM.DD.HH24.MI.SS.FF6" ,
DATMOD_IND FILLER POSITION(511:511)
)
注: | DATE とTIMESTAMP の書式は、db-param.cfg ファイルに指定された値で置換されます。 |
リスト4-39は、db-param.cfgで次のパラメータが設定されている場合のCTLの内容を示しています。
rdbms:jcl_unload_utility_name:dsnuproc
rdbms:jcl_unload_format_file:csv
-- MVS file name: PHAM
-- table name: PH0.PHAM
LOAD DATA
INFILE 'PHAM.DATA'
BADFILE 'PHAM.bad'
APPEND
CONTINUEIF NEXT PRESERVE(1:1) != '"'
INTO TABLE PH0.PHAM
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
MOUV_REF,
C01,
DATE_FAB,
M_COEFF_TR,
PHDESC,
DATMOD
)
リスト4-40は、db-param.cfgで次のパラメータが設定されている場合のCTLの内容を示しています。
rdbms:jcl_unload_utility_name:dsnutilb
INFILE 'TESTCLOB.ascii' "fix 81"
KEY_IND FILLER POSITION(11:11),
TMSINPUT POSITION(12:37) TIMESTAMP "YYYY-MM-DD:HH24:MI:SS:FF6" NULLIF (38:38) = "N",
TMSINPUT_IND FILLER POSITION(38:38),
LONGTEXT_FNAME FILLER TERMINATED BY WHITESPACE,
LONGTEXT_SPACE FILLER POSITION(79:79),
LONGTEXT_IND FILLER POSITION(80:80),
LONGTEXT LOBFILE(LONGTEXT_FNAME) TERMINATED BY EOF NULLIF (80:80) = "N"
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: TESTOTHER
Schemas to skip:
Schemas to not translate: OTHER
----------------------------------------
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
translating dml objects .. 0 issues
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-0092: **File-Converter*: We are in BATCH mode
FILE-0087: * Comand line arguments: begining of analyze
FILE-0088: * recognized argument -s value: /home2/wkb9/param/system.desc
FILE-0088: * recognized argument -mf value: /home2/wkb9/tmp/mapper-PJ01DB2.re.tmp
FILE-0088: * recognized argument -dmf value: /home2/wkb9/tmp/outputs/PJ01DB2/Datamap-PJ01DB2.re
FILE-0088: * recognized argument -td value: /home2/wkb9/tmp
FILE-0088: * recognized argument -tmps value: /home2/wkb9/tmp/rdbms-templates-PJ01DB2.tmp
FILE-0088: * recognized argument -of value: /home2/wkb9/tmp/options-file4rdbms-PJ01DB2.tmp
FILE-0088: * recognized argument -target-sgbd value: oracle11
FILE-0088: * recognized argument -target-os value: unix
FILE-0088: * recognized argument -varchar2 value: 29
FILE-0089: * recognized argument -used-for-rdbms
FILE-0089: * recognized argument -abort
FILE-0091: * End of Analyze
FILE-0094: * Parsing mapper file /home2/wkb9/tmp/mapper-PJ01DB2.re.tmp ...
FILE-0095: * Parsing data-map file /home2/wkb9/tmp/outputs/PJ01DB2/Datamap-PJ01DB2.re ...
FILE-0096: * 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...
FILE-0001: * Point 1 !!
FILE-0002: * Point 2 !!
FILE-0010: * Parsing file /home2/wkb9/tmp/outputs/PJ01DB2/ODCSF0.cpy ...
*Parsed 12 lines*
FILE-0003: * Point 3 !!
FILE-0004: * Point 4 !!
FILE-0005: * Point 5 !!
FILE-0052: * loading pob file /Qarefine/release/M2_L3_4/convert-data/templates/rdbms/unloading/jcl-unload-DB2-table-SQL.pgm.pob
FILE-0085: * Expanding /Qarefine/release/M2_L3_4/convert-data/templates/rdbms/unloading/jcl-unload-DB2-table-SQL.pgm ...
FILE-0054: * Writing ODCSF0X1.jclunload
[..}
FILE-0053: * Parsing template file /Qarefine/release/M2_L3_4/convert-data/default/rdbms/rdbms-move-assignation.pgm
FILE-0085: * Expanding /Qarefine/release/M2_L3_4/convert-data/default/rdbms/rdbms-move-assignation.pgm ...
FILE-0054: * Writing rdbms-move-assignation.lst
Rest in peace, Refine...
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Generated components are in /home2/wkb9/tmp/Template/PJ01DB2
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
##########################################################################
FORMATTING COBOL LINES
Modified: MOD_PHAM.cbl
##########################################################################
CHANGE ATTRIBUTE TO KSH or SH scripts
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
Components are modified into /home2/wkb9/tmp directory
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
#########################################################################
REMOVE SCHEMA INFORMATION IN SPECIFIC SCRIPTS
RDBMS Table_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
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
DBのロード/アンロード用COBOLプログラムは、rdbms.shコマンドの-gオプションを使用して生成され、-iオプションを使用して$HOME/trf/DSNUTILS/<schema name>/にインストールされます。
DB2表ごとにCOBOLプログラムが生成され、次のような名前が付けられます。
udbをターゲットDBとして構成する場合、生成されたCOBOLプログラムの接尾辞はsqbになります。
これらのプログラムはすべて、「コンパイラ・オプション」で説明するターゲットのCOBOLコンパイル・オプションを使用してコンパイルする必要があります。
COBOLプログラムをコンパイルする前に、これを前処理しておく必要があります:
この項では、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データベースに移行するために使用されるTuxedo ART 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 Databaseグローバリゼーション・サポート・ガイド』の指示に従って設定します。
|
|||
「日付と時刻のパラメータ」の項および『Oracle Databaseグローバリゼーション・サポート・ガイド』の指示に従って設定します。
|
また、次の変数は、Tuxedo ART Workbenchインストレーション・ガイドの情報に従って設定する必要があります。
Tuxedo ART Workbenchは、DB2/zOSプラットフォームで検出された動作と同じ動作をOracleデータベース上で再現する必要があります。特定のDB2/zOS固有のケースを処理するために、DB2-to-Oracleコンバータには、それぞれOracle機能とプロジェクト定数を含むMWDB2ORA
およびMWDB2ORA_CONST
という名前のOracleパッケージが含まれます。
これらの機能は、すべてのDATE、TIMEおよびTIMESTAMPS機能の管理に使用されます。これらは、COBOLコンバータSQLルールによって、COBOLプログラムに追加されます。
DB2の動作を可能にするパッケージは、次のディレクトリに配置されます。
REFINEDIR/convert-data/fixed-components/
MWDB2ORA.plb
MWDB2ORA_CONST.sql
パッケージをアクティブ化するために、パッケージをターゲットOracleデータベースにインストールします。
MWDB2ORA.plb
およびMWDB2ORA_CONST.sql
をターゲットUNIX/Linuxプラットフォームにコピーします。MWDB2ORA_CONST.sql
パッケージを定数値の形式にあわせて変更します。SQLPLUS
の下にパッケージをインストールします。sqlplus $MT_DB_LOGIN <<EOF
start REFINEDIR/convert-data/fixed-components/MWDB2ORA_CONST.sql
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.
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 DB2ユーティリティを使用するJCLが実行されます。DB2表にCLOBおよびBLOBデータ型が含まれない場合、ユーティリティで次の3つのファイルが作成されます。
DB2表にCLOBまたはBLOBデータ型が含まれる場合、dsnutilb
ユーティリティでDB2表のLOBS列および行ごとに1つのファイルが作成されます。
このようなアンロード用JCLの名前は<table name>.jclunload
です。
表名が8文字より短いか長い場合、Tuxedo ART Workbenchは、できるだけ元の名前に近い8文字の名前をz/OS JCLに付けます。この名前の変更プロセスにより、各表名の一意性が保たれます。
アンロードされたデータ・ファイルは、サイトで使用可能なファイル転送ツール(CFT、FTP、…)を使用して、ソースのz/OSプラットフォームからターゲットのUNIX/Linuxプラットフォームに転送する必要があります。
データ・ファイルがシングルバイト文字セット(SBCS)エンコードの場合、ファイル・タイプおよびdb-param.cfg
パラメータに応じて、ファイル転送ツールで表4-14に示されている転送モードを使用できます。
ターゲットのUNIX/Linuxプラットフォームに転送されたファイルは、$DATA_SOURCE
ディレクトリに格納する必要があります。
データ・ファイルがマルチバイト文字セット(MBCS)エンコードの場合、トランスコードにFTPを使用する必要があります。
一般に、メインフレームからオープン・システムにMBCSデータ・ファイル(簡体字中国語を例にとります)を転送する手順は、次のとおりです。
tso ftp
"コマンドを実行してターゲット・プラットフォームに接続します。locsite encoding=MBCS
locsite mbdataconn=(file_system_codepage, network_transfer_codepage)
locsite mbsendeol=CRLF
file_system_codepage
およびnetwork_transfer_codepage
は、ターゲットMBCSに対応するメインフレームのコードのペアです。たとえば、簡体字中国語文字セットの場合、file_system_codepage
としてIBM-5488
を選択し、network_transfer_codepage
としてIMB-1388
またはUTF-8
を選択します。
ftp put
"コマンドを実行してデータ・ファイルをターゲット・プラットフォームに転送します。NLS_LANG
環境パラメータを設定して、トランスコードなしでデータ・ファイルを再ロードします。 データのトランスコード(<jcl_unload_format_file>
が"csv
"に設定されている場合のトランスコードを除く)および再ロードを可能にするスクリプトが、次のディレクトリで生成されます。
$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 | [-O|-T]] [-l] [-c: <method>]
このチェックでは、loadrdbms-<table name>.ksh
の次のオプションを使用します。
-c rows
このオプションでは、再ロードの後でDB2アンロード・ユーティリティにより、再ロードされたOracle表にz/OSからアンロードされた対応する表と同数のレコードが含まれることを確認します。レコード数が異なる場合は、エラー・メッセージが生成されます。
![]() ![]() ![]() |