目次 前 次 PDF


DB2-to-Oracleコンバータ

DB2-To-Oracleコンバータ
この章では、ソース・プラットフォーム(z/OS)から移行されるDB2オブジェクトと、生成される移行ツールについて説明します。変換は、Tuxedo ART Workbenchの他のツールによって変換または生成される他のコンポーネントと関連して行われます。
この章には次のトピックが含まれます:
DB2-to-Oracleコンバータの概要
目的
この項の目的は、次のようなTuxedo ART Workbench DB2-to-Oracleコンバータ・ツールのすべての機能を正確に説明することです。
構造
関連項目
データの変換は、COBOLプログラムの変換と密接に関連しています。「COBOLコンバータ」を参照してください。
 
Tuxedo ART Workbenchのスキーマ
Tuxedo ART Workbenchでは、スキーマは一貫性のあるオブジェクトのセットで構成されます(たとえば、スキーマに存在しない表のCREATE INDEXを含めることはできません)。
デフォルトでは、DB2 DDLのSQLコマンドに接頭辞として修飾子または認可IDが付いている場合、その接頭辞はTuxedo ART Workbenchによってスキーマ名として使用されます。たとえば、CREATE TABLE <qualifier or authorization ID>.table name表名のように使用します。
スキーマ名は、システム記述ファイルのglobal-options句を使用してTuxedo ART Workbenchによって決めることもできます。
例:
リスト4-1 スキーマ名の例
system STDB2ORA root ".."
global-options
catalog="..",
sql-schema=<schema name>.
 
または、必要な場合にはディレクトリごとにこのオプションを実装することもできます。これは複数のスキーマを使用するときに役立つオプションです。
例:
directory "BATCH" type Cobol-Batch files "*.cbl" libraries "COPY". %, "INCLUDE" options sql-schema=<"schema name">.
環境変数
データを移行するプロセスを開始する前に、次の2つの環境変数を設定する必要があります。
プロセスによって生成される一時オブジェクトを格納する場所を指定します。
プロセスで必要な構成ファイルが格納される場所を指定します。
入力コンポーネントの説明
ファイルの場所
rdbms.shの場所
rdbms.shツールは次のディレクトリにあります。
$REFINEDIR/convert-data/
db-param.cfgファイルの場所
db-param.cfg構成ファイルは、次の変数に指定されたディレクトリに配置されます。
$PARAM
変換されるDB2 DDL
表4-1に、Oracleに移行されるDB2オブジェクトを示します。
 
このファイルには、表<target_table_name>に関連付けられているすべての索引が含まれます。表<target_table_name>に定義されている索引がない場合には、このファイルは生成されません。
このファイルには、表<target_table_name>に関連付けられているすべての制約が含まれます。表<target_table_name>に定義されている制約がない場合には、このファイルは生成されません。
DB2の別名はSYNONYMに変換されます。表の別名のみがサポートされます。
DB2データ型の変換
表4-2に、すべてのDB2データ型とOracleデータベース・ターゲットでの変換を示します。
 
注意:
ROWIDデータ型は変換されません。ほとんどの場合、ROWID列はLOBデータ型準拠のためにのみ作成されます。ユーザーのアプリケーションでROWID列が暗黙的に使用される場合、生成されたTABLE-<table_name>.sqlファイルを手動で調整する必要があります。
DB2の列プロパティの変換
表4-3に、すべてのDB2列プロパティとOracleデータベース・ターゲットでの変換を示します。
 
<value>はDB2 z/OSデータ型によって異なります。
構成ファイルの説明
ここでは、DB2データベースのOracleデータベースへの移行を制御するために使用できるファイルとパラメータを示します。
POBファイル
これらのファイルはカタログ化の際に作成されます。詳細は、「ASTのPOBファイル」を参照してください。
DB2 DDL POBファイル
POBファイルは、DB2 DDLソース・ファイルごとに作成されます。
たとえば、SQODCSF0.ddlファイルには様々なDB2オブジェクトのソースが含まれます。SQODCSF0.ddl.pobファイルは$SOURCE/DDL/pobestディレクトリに作成されます。
Symtabファイル
symtab-<schema name>.pob
このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。
sql-systemファイル
sql-system-<project name>.pob
このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。
sql-system-<project name>-Statements.pob
このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。
system.desc
スキーマに関するパラメータに加えて、システム記述ファイルで、もう1つ別のパラメータを設定する必要があります。
DBMS-VERSION="8"。
移行するRDBMSのバージョンを示します。
db-param.cfg
このファイルは、次の$PARAM変数で指定されるディレクトリに作成されます。
$PARAM/db-param.cfg
リスト4-2 db-param.cfgテンプレート
#
# This configuration file is used by FILE & RDBMS converter
# Lines beginning by "#" are ignored
# write information in lower case
#
# common parameters for FILE and RDBMS
#
# source information is written into system descriptor file (DBMS=, DBMS-VERSION=)
target_rdbms_name:<target_rdbms_name>
target_rdbms_version:<target_rdbms_version>
target_os:<target_os>
# 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.
 
パラメータと構文
 
<jcl_unload_utility_name>がdsnuprocに設定されている場合
すべてのデータ列が「;」で区切られている場合
csv制限:
csv値を使用する場合、16進数値x0Aまたはx0D0A (UNIX/Windows ASCIIの改行文字)を持つ列データは、Oracleデータベースでは正しくロードできません。
列にNULL属性が存在する場合、接尾辞がINDである技術フィールドが追加されます。ユーザー列との競合を避けるため、デフォルトの接尾辞INDを構成できます。
IND (デフォルト)、または3つの大文字のASCII文字です。
LONG VARCHARデータ型を移行する場合に使用する、オプションの最大レコード・サイズ・パラメータ
注意:
DB2データがマルチバイト文字セット(MBCS)でエンコードされている場合、アンロード・ファイル形式としてcsv、およびアンロード・ユーティリティとしてdsnuprocを選択する必要があります。
日付と時刻のパラメータ
これら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です。
リスト4-3 索引パラメータを使用するSQL CREATE INDEXスクリプト
WHENEVER SQLERROR CONTINUE;
DROP INDEX MYDB.TAB1_IDX;
WHENEVER SQLERROR EXIT 3;
CREATE INDEX MYDB.TAB1_IDX ON MYDB.TAB1
(
nlssort(MYCOL11, 'nls_sort=FRENCH') ASC
);
 
次の変数があります。
2つのパラメータに実装されている値に合せて調整する必要があります。Oracleのドキュメント(『Oracle Databaseグローバリゼーション・サポート・ガイド』)を参照してください。
DB2からOracleへの移行で生成されるツールは、デフォルトではバイナリのNLS_SORTを想定します。
警告:
MVSユーティリティ・パラメータ
これらのパラメータはオプションで、DB2スキーマにCLOBまたはBLOBデータ型が含まれる場合、またはDB2ユーティリティの変更が必要な場合のみ必要です。
これらのパラメータの値は次のように指定できます。
<jcl_unload_utility_name> dsntiaul (default), dsnutilb, dsnuproc
<jcl_unload_format_file> binary (default), csv
説明:
<jcl_unload_utility_name>
使用するDB2ユーティリティの名前を定義します。このパラメータには、次のような制約があります。
DB2表にCLOBまたはBLOBデータ型が含まれる場合、dsnutilbユーティリティのみ使用できます。
DB2表にMBCSデータ型が含まれる場合、dsnuprocユーティリティのみ使用できます。
<jcl_unload_format_file>binaryに設定されているか、存在しない場合、dsnuprocユーティリティはCLOBBLOBREALFLOATおよびDOUBLEデータ型を受け入れません。
<jcl_unload_format_file>csvに設定されている場合、dsnuprocユーティリティはCLOBおよびBLOBデータ型を受け入れません。
<jcl_unload_format_file>
DB2ユーティリティで作成されるファイルの形式を定義します。
csv値はdsnuproc DB2ユーティリティでのみ使用できます。ファイル形式はCSVファイルのようなもので、";"文字区切りを使用します。DB2ユーティリティで作成されたファイルは、転送プロトコルがファイルをASCIIコードセットでトランスコードする、テキスト・モードで転送する必要があります。
<jcl_unload_format_file>binary値の場合(またはこのオプションのパラメータを指定しない場合)、ファイルをイメージまたはバイナリ・モードで転送する必要があります。
警告:
LOBSパラメータ
これらのパラメータはオプションで、DB2スキーマにCLOBまたはBLOBデータ型が含まれる場合にのみ必要です。
注意:
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>
CLOBまたはBLOB列を持つ表をダウンロードする場合、この列の各行は、名前が現在アンロード中のファイルに書き込まれる別個のファイルに書き込まれます。このパラメータの値は、次のデータセット・タイプによって異なります(「アンロード用JCL: DSNUTILB」を参照)。
PDS: ファイル名形式:
<data>.<schema_name>.<table_name>.<column_name6digit>(<file_name>)
HFS: ファイル名形式:
/<datahfs>/<schema_name>/<table_name>/<column_name6digit>/<file_name>
説明:
<data>: 出力ファイルへのアクセス・パス。文字列 <data>はJCLでハードコードされます
<schema_name>: スキーマ名
<table_name>: 表名
<column_name6digit>: 6文字まで減らした列名に数値の接尾辞を加えたもの(表の最初のLOBS列には1、2番目には2など)
<file_name>: DB2ユーティリティで自動的に生成される、8文字のメンバー名またはファイル名。
カッコおよびスラッシュを含む、この文字列の最大長を計算する必要があります。
<jcl_unload_lob_file_system>
CLOBまたはBLOB列をダウンロードするデータセット・タイプを定義します。
デフォルト値はPDSです。MVSシステム構成によっては、一部のファイルがPDSデータセット・タイプで許可されないことがあります。その場合、他のデータセット・タイプを選択する必要があります。
注意:
生成されるコンポーネントを変更するファイル
生成されたコンポーネントはプロジェクト固有のスクリプトを使用して変更できます。これらのスクリプト(sed、awk、perlなど)は次の場所に配置する必要があります。
$PARAM/rdbms/rdbms-modif-source.sh
このファイルが存在している場合、生成プロセスの最後に自動的に実行されます。これは、引数として<schema name>を使用して呼び出されます。
ファイルの名前の変更
Tuxedo ART Workbenchでは、DDLソース・ファイル内の様々な名前(表名や列名)を変更できます。
名前の変更ルールは次の場合に実装できます。
注意:
名前の変更ルールは、rename-objects-<schema name>.txtという名前のファイルに設定する必要があります。
このファイルは、$PARAM/rdbms変数で示されるディレクトリに配置してください。
名前の変更ルールの形式は次のとおりです。
table;<schema name>;<DB2 table name>;<Oracle table name>
column;<schema name>;<DB2 table name>;<DB2 column name>;<Oracle column name>
注意:
すべてのスキーマ名またはすべての表名(あるいは両方)に変更を適用するには、*を<schema name>または<DB2 table name> (あるいは両方)の位置に指定します。次の2番目の例を参照してください。
% Textという形式でコメントを付けることができます。
リスト4-4 ファイル名変更の例
% Modification applied to the AUALPH0T table
column;AUANPR0U;AUALPH0T;NUM_ALPHA;MW_NUM_ALPHA
column;AUANPR0U;*;ASC;ASC-1
 
rdbms-template.txt
このファイルは、Tuxedo ART Workbenchのインストール時に配置され、様々な移行ツールの生成を実行するテンプレートが含まれます。このファイルの場所は次のとおりです。
$REFINEDIR/convert-data/default/rdbms/rdbms-templates.txt
リスト4-5 rdbms-template.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の実行中にメッセージによって示されます。
リスト4-6 代替テンプレート・ファイルによる実行ログ
##########################################################################
Control of templates
OK: Use Templates list file from current project:
File name is /home2/wkb9/param/rdbms/rdbms-templates.txt
##########################################################################
 
rdbms_move_assignation.txt
このファイルはTuxedo ART Workbenchのインストール時に配置され、様々なインストール・ディレクトリに生成されたコンポーネントの転送を制御します。このファイルは、rdbms.sh -iを使用してrdbms.shが起動されたときに、インストール・フェーズでコピーする各コンポーネントの場所を指定します。
このファイルの場所は次のとおりです。
$REFINEDIR/convert-data/default/rdbms/rdbms-move-assignation.pgm
このファイルは、ファイル先頭にある指示に従って変更できます。
リスト4-7 rdbms_move_assignation.txtの変更指示
[…]
*@ (c) Metaware:file-move-assignation.pgm. $Revision: 1.2 $
*release_format=2.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>
ログ・ファイルの場所
実行ログ・ファイルは次の場所に格納されます。
オプション-cまたは-Cによって生成されるログ:
$TMPPROJECT/outputs/<schema name> rdbms-converter-<schema name>.log
オプション-gによって生成されるログ:
$TMPPROJECT/outputs mapper-log-<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.cfgdsnuproc DB2ユーティリティを設定する場合、このDB2オブジェクトに関連付けられている一部のコンポーネントを破棄する必要があることがツールで表示されます。一部のオブジェクトを適切に生成できない場合でも、この動作によりすべてのコンポーネントの生成が可能になります。
警告ファイルは2つのセクションで構成されます。
リスト4-8 警告ファイルunsupported-<schema name>.log
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
 
リスト4-9 check-warning-<schema name>.log
%%@ (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
 
警告ファイルに格納される書込み行は、次のルールに基づいています。
 
生成されるファイルの場所
-i $HOME/trfオプションで生成されるアンロード・コンポーネントおよびロード・コンポーネントは、次の場所に配置されます。
 
アンロードする各表で使用されるJCLは、<schema name>ごとに生成されます。
<table name_8>.jclunload
MOD_<target table name>.cbl
注意:
<jcl_unload_format_file>の値によっては、これらのプログラムはなくてもかまいません。
<target table name>.ctl
loadrdbms-<target table name>.ksh
DBロード/アンロード用COBOLプログラムの<schema name>による場所。この章の例では、いくつかのプログラムがあります。
PJ01DB2-ODCSF0-u.pco (Oracle専用)
注意:
<table name_8>では、表名が8文字より短いか長い場合、Tuxedo ART Workbench DB2-to-Oracleコンバータは、可能なかぎり元の名前に近い8文字の名前をz/OS JCLに付けます。この名前の変更プロセスにより、各表名の一意性が保たれます。
<target table name>はOracleデータベースの表名です。
db-param.cfgtarget_rdbms_nameudbに設定する場合、生成された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
次のパラメータと構文が使用されます。
 
構文およびパラメータ
リスト4-10 データマップ・ファイル
%% 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
 
生成のサンプル
次のDB2 DDLがあるとします。
CREATE TABLE ART1 (
REF_ART CHAR(19) NOT NULL,
REF_ART_REMPL VARCHAR(400),
REGR_PEREMT CHAR(1),
DUREE_VALID DATE NOT NULL,
LONG_ART INTEGER
) […]
 
DB2-to-Oracleコンバータによって次のマッパー・ファイルが生成されます。
リスト4-11 マッパー・ファイルの例
%% Rdbms-converter. Rev: 1.4. 20090101 13:25. 20091010 11:25
%% tables generation only
ufas mapper GM
file GM.ART1 transferred converted
table name GM-ART1
map record TAB-ART1 defined in "#VAR:RECS_SOURCE#/GM/ART1.cpy"
source record TAB-ART1 in "#VAR:RECS_SOURCE#/GM/ART1.cpy"
logical name ART1
include "#VAR:RECS_SOURCE#/GM/ART1.cpy"
strategies
field REF-ART attributes NULL_DISALLOWED DATATYPE_CHAR
,field REF-ART-REMP attributes NULL_ALLOWED DATATYPE_VARCHAR
,field REF-ART-REMP-LEN attributes TECHNICAL_FIELD_VARCHAR
,field REF-ART-REMP-IND attributes TECHNICAL_FIELD_NULL
,field REGR-PEREMT attributes NULL_ALLOWED DATATYPE_CHAR
,field REGR-PEREMT-IND attributes TECHNICAL_FIELD_NULL
,field DUREE-VALID attributes NULL_DISALLOWED DATATYPE_DATE
,field LONG-ART attributes NULL_DISALLOWED DATATYPE_NUMERIC
 
この例では、#VAR:RECS:SOURCE#$TMPPROJECT/outputs/schemaを示します。
構文およびパラメータ
リスト4-12 マッパー・ファイル
%% 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は、フィールド・ディレクティブを示しています。
 
COBOLコピーへのリンク
例のfile句のように、マッパー・ファイルはCOBOLコピー・ファイルにリンクされます。このCOBOLコピーではアンロードされるデータ・ファイルが記述されます。それには、列の記述に加えて技術フィールドが含まれます。このアンロードされるファイルはDB2アンロード・ユーティリティによって作成されます。それには、列データとNULLインジケータ値が含まれます
列ごとに、1つのフィールド名と、次の属性の2つの値が生成されます。
列がNULLフラグを受け入れるとき、または列にNOT NULL属性が設定されているときにそれぞれ使用されます。
テクニカル・フィールドごとに、DB2-to-Oracleコンバータにより次のフィールドが生成されます。
NULLフィールド(つまり列がNULL属性を持つ)の場合、COBOLコピーにはもう1つのフィールドが含まれます。このフィールドの名前は、ターゲット列名に接尾辞-INDが付いたものです。
VARCHARフィールドの場合、COBOLコピーにはデータ・フィールドの前にもう1つのフィールドが含まれます。このフィールドの名前は、ターゲット列名に接尾辞-LENが付いたものです。
CLOBまたはBLOBフィールドの場合、COBOLコピーにはデータ・フィールドの後にもう1つのフィールドが含まれます。このフィールドの名前は、ターゲット列名に接尾辞-FNAMEが付いたものです。
COBOL記述
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
 
リスト4-13 コピー・ファイル: SQLコード
CREATE TABLE ART1 (
REF_ART CHAR(19) NOT NULL,
REF_ART_REMPL VARCHAR(400),
REGR_PEREMT CHAR(1),
DUREE_VALID DATE NOT NULL,
LONG_ART INTEGER
) […]
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パラメータ」を参照)。
リスト4-14 コピー・ファイル: 生成のサンプル
[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).
コピー・ファイルの構文とパラメータ
生成されるコピー・ファイルの形式は次のとおりです。
リスト4-15 コピー・ファイル
* 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>).
 
 
アンロード用JCL
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: DSNTIAUL
生成されるJCLは、特定のサイトの制約に合せるために次のような調整が必要になることがあります。
JOBカード: <cardjob_parameter_<digit>>
計画名: <plan_dsntiaul>
リスト4-16 アンロード用DSNTIAUL JCLの例
//<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: DSNUPROC
生成されるJCLは、特定のサイトの制約にあわせるために次のような調整が必要になることがあります。
JOBカード: <cardjob_parameter_<digit>>
リスト4-17 アンロード用DSNUPROC JCLの(jcl_unload_format_fileオプションがないかbinaryに設定されている場合)
//<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
リスト4-18 アンロード用DSNUPROC JCLの例(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: DSNUTILB
生成されるJCLは、特定のサイトの制約に合せるために次のような調整が必要になることがあります。
JOBカード: <cardjob_parameter_<digit>>
表にLOBS列が含まれていない場合でも、DSNUTILBを使用できます。
リスト4-19は、db-param.cfgで次のパラメータが設定されている場合のJCLの内容を示しています。
rdbms:jcl_unload_utility_name:dsnutilb
rdbms:jcl_unload_lob_file_system:hfs
rdbms:lobs_fname_length:40
ソースのDDLの次の説明があります。
CREATE TABLE TLOB.TESTCLOB (
KEY CHAR(10) NOT NULL,
TMSINPUT TIMESTAMP,
LONGTEXT CLOB(50000));
リスト4-19 アンロード用DSNUTILB JCLの例(CLOB列および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トランスコード・プログラム
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コピー・ファイルの存在が必要です。
COBOLプログラムMOD_<table_name>.cbl
これらのプログラムは、入力からファイルを読み取り、固定長レコードのシーケンシャル・ファイルを出力に書き込みます。出力ファイルはSQL*LOADERユーティリティによって読み取られます。これらのプログラムは、CLOBおよびBLOB列ごとに、ライン・シーケンシャル・ファイルを出力に書き込みます。このファイルには、DB2アンロード・ユーティリティによって書き込まれたLOBSファイルのリストが含まれます(行当たりの列ごとに1つのファイル)。再ロード用Kornシェル・スクリプトが、このライン・シーケンシャル・ファイルを処理します。
リスト4-20 FILE CONTROLセクション - トランスコード・プログラムMOD_<table_name>用
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.
 
リスト4-21 FILE CONTROLセクション - LOBS列の場合のトランスコード・プログラムMOD_<table_name>の追記
* * 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インジケータ・フィールド)に対しても同じチェックが行われます。
COBOLプログラムCLOB_<table_name>_<column_name>.cbl
これらのプログラムは、MOD_<table_name>プログラムによって書き込まれたCLOBファイルのリストを読み取ります。入力からCLOBファイルを読み取って(DB2アンロード・ユーティリティによって、行当たりのCLOB列ごとに1つのファイルが書き込まれた)、同じサイズのシーケンシャル・ファイルを出力に書き込みます。出力ファイルは、ロード・プロセス中にSQL*LOADERユーティリティによって読み取られます。
リスト4-22 FILE CONTROLセクション - トランスコード・プログラムCLOB_<table_name>_<column_name>
SELECT MW-LOB-LONGTEXT-FNAME
ASSIGN TO "LONGTEXT_FNAME"
ORGANIZATION IS LINE SEQUENTIAL
FILE STATUS IS IO-STATUS.
 
リスト4-23 DYNAMIC CALLパラグラフ - トランスコード・プログラムCLOB_<table_name>_<column_name>
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.
DISPLAY " ".
CLOB列はCONVERTMW.cpyコピー・ファイルを使用してEBCDICからASCIIに変換されます。
再ロード用Kornシェル・スクリプト
再ロード用Kornシェル・スクリプトは、rdbms.shコマンドの-gオプションを使用して生成されます。その後、(-iオプションを使用して)次の場所にインストールされます。
$HOME/trf/reload/rdbms/<schema name>/ksh
スクリプトの名前はloadrdbms-<table name>.kshです
3つのフェーズが含まれます。
スクリプトを実行すると、実行ログが$MT_LOG/<table name>.logに生成されます
リスト4-24は、各スクリプトの先頭に設定された変数を示します。
注意:
<jcl_unload_format_file>オプションがcsvに設定されている場合、トランスコード・フェーズは存在しません。
リスト4-24 再ロード・スクリプトの変数(jcl_unload_format_fileオプションが使用されていないかbinaryに設定されている場合)
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
[…]
 
リスト4-25 再ロード・スクリプトの変数(jcl_unload_format_fileオプションがcsvに設定されている場合)
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
 
リスト4-26 再ロード・スクリプトの変数(CLOBおよびBLOB列が存在する場合)
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デフォルト・パラメータを変更するには、スクリプトを呼び出す前にLOBDIRDD_ENTREE_DIRDD_SORTIE_DIRの各変数を設定します。アンロード・ユーティリティで作成されたすべてのLOBSファイルを、バイナリ・モードでディレクトリ${DD_ENTREE_DIR}/${LOBDIR}に転送する必要があります。
スクリプトの3つの実行フェーズでは様々なメッセージが生成されます。これらのメッセージのリストは、「Oracle Tuxedo Application Rehosting Workbenchのメッセージ」にあります。
正常終了すると、リターン・コード0が戻されます。
トランスコード・フェーズ: 最初の手順
<jcl_unload_format_file>オプションがcsvに設定されている場合、トランスコード・フェーズは適用されません。
この手順では、処理されるOracle表に関連付けられたCOBOLトランスコード・プログラムの実行を開始します。
runb MOD_ODCSF0 >>$logtab 2>&1
runbはOracle Tuxedo Application Runtime Batchの一部です(詳細は、『Oracle Tuxedo Application Runtime for Batchリファレンス・ガイド』を参照)。
正常終了では次のメッセージが表示されます。
ファイル${DD_SORTIE}がトランスコードされました
注意:
表にCLOBまたはBLOB列が含まれ、この手順を1回のみ起動する場合は(次のCLOBまたはBLOB手順を起動しない場合)、rdbms.shコマンドの-Tオプションを使用します。このプログラムは、アンロード手順でLOBSファイルに使用されるデータセット・タイプも表示します(パラメータ<jcl_unload_lob_file_system>に依存します)。
LOB FILENAME IS IN PDS/MVS FORMAT
または
LOB FILENAME IS IN HFS/UNIX FORMAT
トランスコード・フェーズ: BLOB列の次の手順
表に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}にリンクされています
注意:
この手順を1回のみ起動する場合は、rdbms.shコマンドの-Tオプションを使用します(COBOLプログラムMOD_<table_name>を少なくとも1回起動する必要があります)。
トランスコード・フェーズ: CLOB列の次の手順
表に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 for Batchリファレンス・ガイド』を参照)。
正常終了では次のメッセージが表示されます。
列<name>のすべてのCLOBファイルが${DD_SORTIE_DIR}/${LOBDIR}でトランスコードされました
注意:
この手順を1回のみ起動する場合は、rdbms.shコマンドの-Tオプションを使用します(COBOLプログラムMOD_<table_name>を少なくとも1回起動する必要があります)。
ロード・フェーズ
この手順では、SQL*LOADERユーティリティを使用してデータをOracle表にロードします。
${BIN}/RunSqlLoader.sh $CTL/ODCSF0.ctl $opt >>$logtab 2>&1
正常終了では次のメッセージが表示されます。
echo "表${table_name}が正常にロードされました。"
チェック・フェーズ
この手順では、DB2アンロード・ユーティリティにより、再ロードされたOracle表にz/OSからアンロードされた対応する表と同数のレコードが含まれることを確認します。レコード数が異なる場合は、エラー・メッセージが生成されます。
if [ "$qteFile" -ne "$qteTranscode" ]
レコード数が等しい場合は、次のメッセージが生成されます。
echo "出力ファイルに書き込まれた行数がレポート・ファイルに書き込まれた数と同じです: OK"
注意:
ターゲットDDL
ORACLE DDLは、rdbms.shコマンドの-cまたは-Cオプションを使用して生成されます。その後、(-iオプションを使用して)次の場所にインストールされます。
$HOME/trf/SQL/rdbms/<schema name>
スクリプトのネーミング・ルールは表4-1で説明しています。
表および列
リスト4-27 Oracleの表と列の生成
WHENEVER SQLERROR CONTINUE;
DROP TABLE <schema>.<target_table_name> CASCADE CONSTRAINTS;
WHENEVER SQLERROR EXIT 3;
CREATE TABLE <schema>.<target_table_name>
(
<target_column_name> <column_data_type> <attribute(s)…>[,]
);
 
索引
リスト4-28 Oracleの索引の生成
WHENEVER SQLERROR CONTINUE;
DROP INDEX <schema>.<target_index_name>;
WHENEVER SQLERROR EXIT 3;
CREATE [UNIQUE] INDEX <schema>.<target_index_name> ON <schema>.<target_table_name>
(
[<nls_function>(]<target_column_name> [, '<nls_attributes>')] [ASC|DESC][,]
);
 
パラメータ<nls_function>および<nls_attributes>はオプションです。db-paramのパラメータrdbms:indexsortrdbms:indexlangdb-param .cfg ファイルに設定されている場合、Tuxedo ART WorkbenchはCREATE INDEXコマンドにこれらのオプションを生成します。
リスト4-29 Oracle索引の生成(rdbms:indexsortおよびrdbms:indexlangパラメータの指定なし)
WHENEVER SQLERROR CONTINUE;
DROP INDEX MYDB.TAB2_IDX;
WHENEVER SQLERROR EXIT 3;
CREATE INDEX MYDB.TAB2_IDX ON MYDB.TAB2
(
MYCOL1 ASC,
MYCOL2 DESC
);
 
次のサンプルは、rdbms:indexsort=frenchパラメータが指定された索引の作成を示します。
リスト4-30 Oracle索引の生成(rdbms:indexsort=frenchパラメータの指定)
WHENEVER SQLERROR CONTINUE;
DROP INDEX MYDB.TAB1_IDX;
WHENEVER SQLERROR EXIT 3;
CREATE INDEX MYDB.TAB1_IDX ON MYDB.TAB1
(
nlssort(MYCOL11, 'nls_sort=FRENCH') ASC
);
 
制約
リスト4-31 Oracleの制約の生成
WHENEVER SQLERROR CONTINUE;
ALTER TABLE <schema name>.<target_table_name> DROP CONSTRAINT <target_constraint_name>;
WHENEVER SQLERROR EXIT 3;
ALTER TABLE <schema name>.<target_table_name> ADD CONSTRAINT <target_constraint_name>
< the syntax according to the constraint creation is inserted here>
;
 
コメント
リスト4-32 Oracleのコメントの生成
CREATE COMMENT ON TABLE <schema name>.<target_table_name>
IS '<comment_table>'
;
CREATE COMMENT ON COLUMN<schema name> .<target_table_name>.<target_column_name>
IS '<comment_column>'
;
 
注意:
ビュー
リスト4-33 Oracleのビューの生成
WHENEVER SQLERROR CONTINUE;
DROP VIEW <target_view_name>;
WHENEVER SQLERROR EXIT 3;
CREATE VIEW <target_view_name>
AS <the syntax according to the existing view is inserted here>
;
 
シーケンス
DB2データベースにすでに存在しているシーケンス用です。
リスト4-34 Oracleのシーケンスの生成
WHENEVER SQLERROR CONTINUE;
DROP SEQUENCE <schema name>.<target_sequence_name>;
WHENEVER SQLERROR EXIT 3;
CREATE SEQUENCE <schema name> .<target_sequence_name>
<the syntax according to the existent sequence is inserted here>
;
 
シノニム
表のシノニムまたはビューのシノニム用です。
リスト4-35 Oracleのシノニムの生成
WHENEVER SQLERROR CONTINUE;
DROP SYNONYM <schema name>.<target_synonym_name>;
WHENEVER SQLERROR EXIT 3;
CREATE SYNONYM <schema name>.<target_synonym_name>
FOR <schema name>.[<target_table_name> | <target_synonym_name>| <target_view_name>]
;
 
アイデンティティの再設計
DB2列のアイデンティティは、次の2つのOracleオブジェクトで置き換えられます。
<target_table_name>に関連付けられたトリガー。
リスト4-36 Oracleのシーケンスとトリガーの生成
-- 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>
名前は<schema name>.lstです。
このファイルには、すべての表の名前が階層順に含まれます(親表の次に子表)。
COBOL変換ガイド・ファイル
このファイルは、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
説明:
<schema name>
現在のスキーマの名前。
生成されるサンプル
リスト4-37 COBOL変換ガイドのサンプル
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- DOCTYPE RDBMS CONVERSION "metaware_rdbms.dtd" -->
<rdbms revision="1.4" compilationdate="20090101 10:00"
Generateddate="20090608 08:01">
<comment>
</comment>
<sourceformat>
<date>YYYYMMDD</date>
</sourceformat>
<tablelist>
<table source_name="DESC">
<target_name>DESC1</target_name>
</table>
<table source_name="USER">
<target_name>USER1</target_name>
</table>
<table source_name="MYTB">
<column source_name="USER">
<target_name>USER1</target_name>
</column>
</table>
</tablelist>
 
SQL*LOADER制御ファイル
このファイルは、rdbms.shコマンドの-iオプションを使用して次の場所に生成されます。
$HOME/trf/reload/rdbms/<schema name>/ctl/<target_table_name>.ctl
これらのファイルはSql*Loader Oracleユーティリティのために生成されます。トランスコード・プログラムで作成されたデータ・ファイルの説明が含まれます。データ・ファイルはSql*Loaderによって読み取られ、Oracle表に完全にロードされます。
ファイル名
$HOME/trf/reload/rdbms/<schema name>/ctl/<target_table_name>.ctl
説明
<schema name>
現在のスキーマの名前。
<target_table_name>
ターゲット表の名前。
生成例
次の例は、Sql*Loaderによって使用されるCTLファイル(制御ファイル)を示しています。
このOracle Loaderユーティリティで管理されるすべてのSql*Loaderデータ型とファイル構造を示しています。これらは別々のパラメータを使用して生成されます(「db-param.cfg」を参照)。
リスト4-38 CTLファイルの例(jcl_unload_format_fileオプションが使用されていないかbinaryに設定されている場合)
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)
)
 
注意:
DATETIMESTAMPの書式は、db-param.cfgファイルに指定された値で置換されます。
リスト4-39は、db-param.cfgで次のパラメータが設定されている場合のCTLの内容を示しています。
rdbms:jcl_unload_utility_name:dsnuproc
rdbms:jcl_unload_format_file:csv
リスト4-39 CTLファイルの例(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:lobs_fname_length:40
rdbms:jcl_unload_utility_name:dsnutilb
リスト4-40 CTLファイルの例(CLOB列あり)
LOAD DATA
INFILE 'TESTCLOB.ascii' "fix 81"
BADFILE 'TESTCLOB.bad'
APPEND
PRESERVE BLANKS
INTO TABLE TESTCLOB
REENABLE
(
KEY POSITION(1:10) CHAR(10),
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トランスレータ・ログ・ファイル
DDLトランスレータは、変換するスキーマごとにログ・ファイルを出力します。このファイルには変換プロセスに関する情報や、実行した主な変換アクションの説明が含まれます。また、エラー・メッセージや変換の問題に関するメッセージも含まれます。
次に示すログ・ファイルの例は注釈付きです。
ヘッダーには、トランスレータのバージョン情報と開始時刻が示されます。
リスト4-41 DDLトランスレータ・ログ・ファイル - ヘッダー
Rdbms-converter. Rev: 0.0.0.beta. <revision date/time> <build date/time> .
BeginTime: <starting date/time>
 
RDBMS Parametersセクションには、実行されたトランザクションの入力パラメータが示されます。
リスト4-42 DDLトランスレータ・ログ・ファイル - パラメータ
==========================
RDBMS Parameters
==========================
System description file (-system-description): .../samples/param/system.desc
Schemas (-ddl): TEST,OTHER
Schema names file (-ddls-file): None
Target OS (-target-os): UNIX
Target RDBMS (-target-rdbms): ORACLE
Target RDBMS version (-target-rdbms-version): 11g
Target directory (-target-directory): .../samples/latest/
Rename objects file (-rename-objects): .../samples/param/rename-objects.conf
REBMS parameters file (-rdbms-parameters): .../samples/param/rdbms-parameters.conf
Recatalog allowed? (-with-ddl-changes): true
 
Database Parametersセクションには、ソース・データベースの重要なプロパティが示されます。
リスト4-43 DDLトランスレータ・ログ・ファイル - データベースのパラメータ
=========================
Database Parameters
=========================
DATE_FORMAT: DD.MM.YYYY
TIME_FORMAT: HH24.MI.SSXFF
TIMESTAMP_FORMAT: YYYY.MM.DD.HH24.MI.SS.FF6
INDEXSORT: FRENCH
 
Schema Translationセクションには、変換プロセスの記録が示されます。
リスト4-44 DDLトランスレータ・ログ・ファイル - スキーマの変換
=========================
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セクションには、入力スキーマを出力スキーマに変更するために実行された主要な変換アクションが示されます。
リスト4-45 DDLトランスレータ・ログ・ファイル - DDL分析
============================
DDL Analysis
============================
table TABLE2
copy name is TABLE2.cpy
logical name is TABLE2X2
table TABLE1
copy name is TABLE1.cpy
logical name is TABLE1X1
table TABLE1 has a new target name NEW_TABLE1
column COL_CHAR, child of table TABLE1, has a new target name NEW_COL_CHAR
 
Output Filesセクションには、スキーマの変換中に作成されたすべてのファイルが示されます。
リスト4-46 DDLトランスレータ・ログ・ファイル - 出力ファイル
============================
Output Files
============================
Target directory: ".../samples/latest/"
Output files:
LOG file:
outputs/TEST/rdbms-converter-TEST.log
DDL files:
SQL/TEST/COMMENT-NEW_TABLE1.sql
SQL/TEST/CONSTRAINT-NEW_TABLE1.sql
SQL/TEST/IDENTITY-NEW_TABLE1.sql
SQL/TEST/INDEX-NEW_TABLE1.sql
SQL/TEST/SEQUENCE-SEQUENCE1.sql
SQL/TEST/SYNONYM-TAB1.sql
SQL/TEST/TABLE-NEW_TABLE1.sql
SQL/TEST/TABLE-TABLE2.sql
SQL/TEST/TEST.lst
SQL/TEST/VIEW-VIEW1.sql
SQL/TEST/VIEW-VIEW2.sql
COPYBOOK files:
outputs/TEST/TABLE1.cpy
outputs/TEST/TABLE2.cpy
LANGUAGE-CONVERSION file:
outputs/TEST/rdbms-conv-TEST.xml
DATA-MAP file:
outputs/TEST/Datamap-TEST.re
MAPPER file:
outputs/TEST/mapper-TEST.re
SQL*LOADER files:
outputs/TEST/NEW_TABLE1.ctl
outputs/TEST/TABLE2.ctl
 
Translation Issuesセクションには、変換中に検出された変換の問題がまとめて示されます。
リスト4-47 DDLトランスレータ・ログ・ファイル - 変換の問題
=========================
Translation Issues
=========================
Showing 3 translation issues.
Setup 2 issues
Next-Schema 0 issues
Inspect-Original 0 issues
Setup-Schema-Root 0 issues
Canonicalize-Original 0 issues
Analyze-Original 0 issues
Translate-Ddl 0 issues
Inspect-Translated 0 issues
Output-Ddl 0 issues
Output-Lang-Conv 0 issues
Output-Data-Map 0 issues
Output-Mapper 0 issues
Output-Copy-Books 0 issues
Output-Data-Loaders 0 issues
Inspect-Final 0 issues
Shutdown 0 issues
Total 2 issues
==================================================
Translation Phase: :SETUP (2 issues).
--------------------------------------------------
Original File: unknown
Original Line: unknown
Phase: Setup
RDBMS-0024: Incomplete source information for the system (OS: MVS, DB: None, Version: "None"). Defaulting to (OS: MVS, DB: DB2, Version: "8").
--------------------------------------------------
Original File: unknown
Original Line: unknown
Phase: Setup
RDBMS-0083: Rename pattern "COLUMN; X; TABLE1; COL_CHAR; NEW_COL_CHAR" is pre-empted by an earlier pattern and will never be applied.
--------------------------------------------------
 
トレーラには終了日時が示されます。成功したか失敗したかも示されます。
リスト4-48 DDLトランスレータ・ログ・ファイル - トレーラ
=============================================================
EndTime: <ending date/time>
Status: Failure
 
実行レポート
rdbms.shでは、選択したオプションに応じて様々な実行レポートが作成されます。次の例では次のコマンドが使用されます。
rdbms.sh -Cgrmi $HOME/trf PJ01DB2
リスト4-49 rdbms.shでオプション-cまたは-Cを使用したときに生成されるメッセージ
############################################################################
CONVERSION OF DDLs and CTL files and GENERATION of directive files
CMD : /Qarefine/release/M2_L3_4/scripts/launch rdbms-converter -s /home2/wkb9/param/system.desc -td /home2/wkb9/tmp -rdbms-parameters /home2/wkb9/tmp/config-rdbms-PJ01DB2-param.tmp -ddl PJ01DB2 -target-rdbms oracle -target-rdbms-version 11 -target-os unix
MetaWorld starter
Loading lib: /Qarefine/release/M2_L3_4/Linux64/lib64/localext.so
(funcall BATCH-TRANSLATE-SQL-DDL)
 
Starting translation at 2010/01/15 11:45:16
----------------------------------------------------------------------
Preparing for translation
Loading system description: /home2/wkb9/param/system.desc
Warning! OS clause is absent, assuming OS is IBM
Current OS is IBM-MF
Loading the SQL System:
... Building or Loading SQL-System...
... Loading SQL-System...
Loading /home2/wkb9/source/sql-system-STDB2ORA.pob at 11:45:16... done at 11:45:17
... Loading SQL-System-Statements...
Loading /home2/wkb9/source/sql-system-STDB2ORA-Statements.pob at 11:45:17... done at 11:45:17
... Loading SQL-System-Statements...done: #1<a SOURCE-FILE>
... Building or Loading SQL-System...done: #2<a SQL-SYSTEM>
... 6 elements in 1 schema.
Warning! OS clause is absent, assuming OS is IBM
----------------------------------------------------------------------
Beginning translation
Mode: MVS DB2 8 to UNIX ORACLE 11g
Schemas to translate: PJ01DB2
Schemas to skip:
Schemas to not translate:
----------------------------------------
{…]
Ending translation at 2010/01/15 11:45:17
WARNING: errors still exist but are ignored (Total=5>S+I=5).
Check /home2/wkb9/tmp/outputs/PJ01DB2/rdbms-converter-PJ01DB2.log log file
Process can continue
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
Converted DDLS are in /home2/wkb9/tmp/SQL/PJ01DB2 directory
Generated directives files are in /home2/wkb9/tmp/outputs/PJ01DB2 directory
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
 
リスト4-50 rdbms.shでオプション-gを使用したときに生成されるメッセージ
#########################################################################
Control of schema PJ01DB2
 
#########################################################################
Control of templates
Project Templates list file is missing /home2/wkb9/param/rdbms/rdbms-templates.txt
OK: Use Default Templates list file
File name is /Qarefine/release/M2_L3_4/convert-data/default/rdbms/rdbms-templates.txt
##########################################################################
Control of Mapper
##########################################################################
GENERATION OF PROGRAMS
CMD : /Qarefine/release/M2_L3_4/scripts/launch file-converter -s /home2/wkb9/param/system.desc -mf /home2/wkb9/tmp/mapper-PJ01DB2.re.tmp -dmf /home2/wkb9/tmp/outputs/PJ01DB2/Datamap-PJ01DB2.re -td /home2/wkb9/tmp -tmps /home2/wkb9/tmp/rdbms-templates-PJ01DB2.tmp -target-sgbd oracle11 -target-os unix -varchar2 29 -abort
MetaWorld starter
Loading lib: /Qarefine/release/M2_L3_4/Linux64/lib64/localext.so
(funcall LOAD-THE-SYS-AND-APPLY-DMAP-AND-MAPPER)
FILE-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
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
 
リスト4-51 rdbms.shでオプション-mを使用したときに生成されるメッセージ
##########################################################################
FORMATTING COBOL LINES
Modified: MOD_PHAM.cbl
 
##########################################################################
CHANGE ATTRIBUTE TO KSH or SH scripts
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
Components are modified into /home2/wkb9/tmp directory
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
 
リスト4-52 rdbms.shでオプション-rを使用したときに生成されるメッセージ
#########################################################################
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
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
 
リスト4-53 rdbms.shでオプション-iを使用したときに生成されるメッセージ
##########################################################################
INSTALL COMPONENTS INTO SOURCES USING modif-source-rdbms.sh.sh
===================================================
==_PJ01DB2.ODCSF0_==
Copied <Templates>:ODCSF0X1.jclunload to <td>/unload/rdbms/PJ01DB2/ODCSF0X1.jclunload
Copied <Templates>:loadrdbms-ODCSF0.ksh to <td>/reload/rdbms/PJ01DB2/ksh/loadrdbms-ODCSF0.ksh
[…}
Copied <SQL>:CONSTRAINT-ODCSF0.sql to <td>/SQL/rdbms/PJ01DB2/CONSTRAINT-ODCSF0.sql
IGNORED <SQL>:COMMENT-ODCSF0.sql is missing but is optional
===================================================
IGNORED <SQL>:VIEW-*.sql is missing but is optional
(…)
Copied <fixed-components>:CreateReportFromMVS.sh to <td>/reload/bin/CreateReportFromMVS.sh
===================================================
Dynamic_configuration
Copied <outputs>:rdbms-conv-PJ01DB2.xml to /home2/wkb9/param/dynamic-config/rdbms-conv-PJ01DB2.xml
=====
Number of copied files: 12
Number of executed scripts: 0
Number of ignored files: 5
##########################################################################
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
Components are copied into /home2/wkb9/trf directory
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-
 
DBのロード/アンロード用COBOLプログラム
DBのロード/アンロード用COBOLプログラムは、rdbms.shコマンドの-gオプションを使用して生成され、-iオプションを使用して$HOME/trf/DSNUTILS/<schema name>/にインストールされます。
DB2表ごとにCOBOLプログラムが生成され、次のような名前が付けられます。
Schema-Table-L.pco (DSNUTILBロード機能用)
Schema-Table-U.pco (DSNUTILBアンロード機能用)
Schema-Table-u.pco (DSNTIAULアンロード機能用、Oracle専用)
udbをターゲットDBとして構成する場合、生成されたCOBOLプログラムの接尾辞はsqbになります。
これらのプログラムはすべて、「コンパイラ・オプション」で説明するターゲットのCOBOLコンパイル・オプションを使用してコンパイルする必要があります。
COBOLプログラムをコンパイルする前に、これを前処理しておく必要があります:
db2 prep $*.sqb BINDFILE PACKAGE USING '$(notdir $<)' VERSION $(firstword $(shell echo `uname -n`:$(CURDIR)/'$<'|md5sum ))
制限事項:
1.
2.
3.
詳細処理
この項では、DB2-to-Oracleコンバータで使用されるコマンド行構文プロセス・ステップのサマリーおよびDB2データ型の変換について説明します。
ソース・プラットフォームとターゲット・プラットフォームで次の処理に関するプロセスが必要です。
コマンド行構文
rdbms.sh
名前
rdbms.sh - DB2移行コンポーネントを生成します。
形式
rdbms.sh [ [-c|-C] [-g] [-m] [-r] [-i <installation directory>] <schema name> ] -s <installation directory> (<schema name>,...) ]
説明
rdbms.shは、z/OS DB2データベースをUNIX/Linux Oracleデータベースに移行するために使用されるTuxedo ART Workbenchのコンポーネントを生成します。
オプション
生成オプション
-C <schema name>
指定されたスキーマに関して、$TMPPROJECTでのコンポーネント(ORACLE DDL、SQL*LOADERのCTLファイル、COBOLコンバータで使用されるXMLファイル、構成ファイル(マッパー・ファイルおよびデータマップ・ファイル))の生成をトリガーします。
エラーが発生するとプロセスが異常終了します。
-c <schema name>
このオプションの結果は-Cオプションと同じですが、エラーまたは警告が発生するとプロセスは異常終了します。
-g <schema name>
指定されたスキーマに関して$TMPPROJECTでのアンロード用およびロード用コンポーネントの生成をトリガーします。生成内容は、構成ファイルで検出される情報によって異なります。
変更オプション
-m <schema name>
生成されたSHELLスクリプトを実行可能にします。COBOLプログラムは、ターゲットCOBOLの固定形式に合うように調整されます。生成されるソースを変更するシェル・スクリプトが存在し、プロジェクトに属している場合は、そのスクリプトが実行されます(「生成されたコンポーネントを変更するファイル」を参照)。
-r <schema name>
生成されたオブジェクト(ORACLE DDL、CTLファイル、KSH)からスキーマ名を削除します。このオプションを使用して、スキーマの名前をCOBOLコンポーネントから削除することもできます。これには、COBOLコンポーネントの変換に使用されるCOBOL変換構成ファイルにあるremove-sql-qualifier句を使用します。
インストール・オプション
-i <installation directory> <schema name>
コンポーネントをインストール・ディレクトリに配置します。この操作はrdbms-move-assignation.pgmファイルにある情報を使用します。
最後のオプション
-s <installation directory> (<schema name 1>, <schema name 2>, …)
COBOLコンバータ構成ファイルを生成できます。このファイルは、プロジェクトのすべての単一XMLファイルを取得します。
これらすべてのファイルは$PARAM/dynamic-configに作成されます
rdbms.sh -Cgrmi $HOME/trf PJ01DB2
rdbms.sh -s $HOME/trf PJ01DB2
単一使用順序
rdbms.shのオプションを一度に1つ使用する場合は、次の順序で使用する必要があります。
1.
2.
3.
4.
5.
6.
処理手順
環境の構成およびコンポーネントのインストール
この項では、ソース・プラットフォームとターゲット・プラットフォームでの準備作業について説明します。
z/OSでのアンロード・コンポーネントのインストール
アンロードに使用されるコンポーネント($HOME/trf/unload/rdbmsに生成される)は、ソースのz/OSプラットフォームにインストールする必要があります(生成されたJCLは、特定のサイトの制約に合せた調整が必要な場合があります)。
ターゲット・プラットフォームへの再ロード・コンポーネントのインストール
再ロードに使用されるコンポーネント($HOME/trf/reload/rdbmsに生成される)は、ターゲット・プラットフォームにインストールする必要があります。
次の環境変数をターゲット・プラットフォームに設定する必要があります。
 
SQL*LOADERで使用される<table name>.ctlファイルを含むディレクトリ($HOME/trf/reload/rdbms/<schema name>/ctl)
注意:
<jcl_unload_format_file>の値がcsvに設定されている場合、このディレクトリは使用されません。DB2ユーティリティで作成されたMVSファイルは、転送プロトコルによってすでに変換されています。
「索引およびソートのパラメータ」の項および『Oracle Databaseグローバリゼーション・サポート・ガイド』の指示に従って設定します。
「日付と時刻のパラメータ」の項および『Oracle Databaseグローバリゼーション・サポート・ガイド』の指示に従って設定します。
また、次の変数は、Tuxedo ART Workbenchインストレーション・ガイドの情報に従って設定する必要があります。
ターゲット・プラットフォームへのMWDB2ORAパッケージ・コンポーネントのインストール
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データベースにインストールします。
1.
MWDB2ORA.plbおよびMWDB2ORA_CONST.sqlをターゲットUNIX/Linuxプラットフォームにコピーします。
2.
MWDB2ORA_CONST.sqlパッケージを定数値の形式に合せて調整します。
3.
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
リスト4-54 SQLPLUSの下にMWDB2ORAパッケージをインストールしたときに生成されるメッセージ
SQL*Plus: Release 11.1.0.6.0 - Production on ...
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Editionリリース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つのファイルが作成されます。
LOBSデータ・ファイル(場所は<jcl_unload_lob_file_system>パラメータに依存します)
これらのアンロード用JCLの名前は<table name>.jclunloadです
ジョブが正常に終了するとリターン・コード0が送られます。
表名が8文字より短いか長い場合、Tuxedo ART Workbenchは、可能なかぎり元の名前に近い8文字の名前をz/OS JCLに付けます。この名前の変更プロセスにより、各表名の一意性が保たれます。
データの転送
アンロードされたデータ・ファイルは、サイトで使用可能なファイル転送ツール(CFT、FTP、…)を使用して、ソースのz/OSプラットフォームからターゲットのUNIX/Linuxプラットフォームに転送する必要があります。
SBCSデータの転送
データ・ファイルがシングルバイト文字セット(SBCS)エンコードの場合、ファイル・タイプおよびdb-param.cfgパラメータに応じて、ファイル転送ツールで表4-14に示されている転送モードを使用できます。
 
ターゲットのUNIX/Linuxプラットフォームに転送されたファイルは、$DATA_SOURCEディレクトリに格納する必要があります。
MBCSデータの転送
データ・ファイルがマルチバイト文字セット(MBCS)エンコードの場合、トランスコードにFTPを使用する必要があります。
一般に、メインフレームからオープン・システムにMBCSデータ・ファイル(簡体字中国語を例にとります)を転送する手順は、次のとおりです。
1.
2.
tso ftpコマンドを実行してターゲット・プラットフォームに接続します。
3.
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を選択します。
4.
ftp putコマンドを実行してデータ・ファイルをターゲット・プラットフォームに転送します。
5.
NLS_LANG環境パラメータを設定して、トランスコードなしでデータ・ファイルを再ロードします。
例: export NLS_LANG="SIMPLIFIED CHINESE_CHINA.XXXX"
データの再ロード
データのトランスコード(<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>]
オプション
-t
ファイルをトランスコードします(CLOBまたはBLOBファイルがある場合はそれらもすべて含む)。
-T
表に関連付けられているファイルのみをトランスコードします(CLOBおよびBLOBファイルは無視します)。このオプションは、表にCLOBまたはBLOB列が含まれる場合に使用されます。
-O
BLOB列の場合: すべてのバイナリBLOB転送ファイルへのUNIXリンクのみを作成します。
CLOB列の場合: すべてのバイナリCLOB転送ファイルのみをトランスコードします。
-l
データをOracle表に再ロードします。
-c rows
転送の検証を実装します(「転送のチェック」を参照)。
転送のチェック
このチェックでは、loadrdbms-<table name>.kshの次のオプションを使用します
-c rows
このオプションでは、再ロードの後でDB2アンロード・ユーティリティにより、再ロードされたOracle表にz/OSからアンロードされた対応する表と同数のレコードが含まれることを確認します。レコード数が異なる場合は、エラー・メッセージが生成されます。
 

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved