リファレンス・ガイド

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

DB2-to-Oracleコンバータ

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

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

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

 


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

目的

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

構造

関連項目

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

Oracle Tuxedo Application Rehosting Workbenchスキーマ

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

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

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

例:

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

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

例:

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

環境変数

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

 


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

ファイルの場所

rdbms.shの場所

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

$REFINEDIR/convert-data/

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

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

$PARAM

変換されるDB2 DDL

表4-1に、Oracleに移行されるDB2オブジェクトを示します。

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

DB2データ型の変換

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

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

注意: ROWIDデータ型は変換されません。ほとんどの場合、ROWID列はLOBデータ型準拠のためにのみ作成されます。ユーザーのアプリケーションでROWID列が暗黙的に使用される場合、生成されたTABLE-<table_name>.sqlファイルを手動で調整する必要があります。

DB2の列プロパティの変換

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

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

構成ファイルの説明

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

POBファイル

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

DB2 DDL POBファイル

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

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

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

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

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

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

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

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

system.desc

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

DBMS-VERSION="8"

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

db-param.cfg

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

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

表4-4 db-param-cfgのパラメータ
パラメータ
説明
一般的なパラメータ
<target_rdbms_name>
ターゲットRDBMSの名前
oracle
<target_rdbms_version>
ターゲットRDBMSのバージョン
11
<target_os>
ターゲット・オペレーティング・システムの名前
unixまたはlinux
オプションのパラメータ
<target_cobol>
RDBMSの変換には非適用
 
移行の日付、タイムスタンプおよび時刻に関するパラメータ
<date_format>
日付(Oracleで想定される書式)
 
<time_stamp_format>
タイムスタンプ(Oracleで想定される書式)
 
<time_format>
時刻(Oracleで想定される書式)
 
特定の場合に使用される、オプションの索引およびソートのパラメータ
<index_sort>
値を様々な順序でソートします。
ほとんどの場合、使用されません(Oracleでは、デフォルトでバイナリ・ソートを使用)
EBCDIC, ...
<index_lang>
FRENCH, ...
CLOBまたはBLOBデータ型を移行する場合に使用する、オプションのLOBパラメータ
<lobs_fname_length>
アンロード・ユーティリティによって各CLOB列またはBLOB列に作成されるファイル名の長さ
40, 200, ...
<jcl_unload_lob_file_system>
CLOBまたはBLOBデータ・ファイルの書込みに使用する、データセット・タイプ
pds(デフォルト)
hfs
CLOBまたはBLOBデータ型を移行する場合、またはユーティリティの変更が必要な場合に使用する、オプションのMVSユーティリティ・パラメータ
<jcl_unload_utility_name>
DB2表のダウンロードに使用するDB2/MVSユーティリティ名
dsntiaul(デフォルト)
dsnutilb
dsnuproc
<jcl_unload_format_file>
DB2ユーティリティで作成されたファイル内容の形式
次の場合にのみ、値"csv"を使用できます。
    • <jcl_unload_utility_name>が"dsnuproc"に設定されている場合
    • すべてのデータ列が";"で区切られている場合
    • すべての数値が拡張形式で書き込まれている場合
binary(デフォルト)
csv

注意: 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
);

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

これらの変数は、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ユーティリティの名前を定義します。このパラメータには、次のような制約があります。

<jcl_unload_format_file>

DB2ユーティリティで作成されるファイルの形式を定義します。 csv値はdsnuproc DB2ユーティリティでのみ使用できます。ファイル形式はCSVファイルのようなもので、";"文字区切りを使用します。DB2ユーティリティで作成されたファイルは、転送プロトコルがファイルをASCIIコードセットでトランスコードする、テキスト・モードで転送する必要があります。 <jcl_unload_format_file>binary値(またはこのオプションのパラメータを指定しない場合)の場合、ファイルをイメージまたはバイナリ・モードで転送する必要があります。
警告: 転送プロトコルですべてのCOBOL文字およびすべての文字がEBCDICからASCIIに正しく変換されない場合、csv値は使用できません。
LOBSパラメータ

これらのパラメータはオプションで、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>

CLOBまたはBLOB列を持つ表をダウンロードする場合、この列の各行は、名前が現在アンロード中のファイルに書き込まれる別個のファイルに書き込まれます。このパラメータの値は、次のデータセット・タイプに依存します(「アンロード用JCL: DSNUTILB」を参照)。

PDS: ファイル名形式:

<data>.<schema_name>.<table_name>.<column_name6digit>(<file_name>)

HFS: ファイル名形式:

/<datahfs>/<schema_name>/<table_name>/<column_name6digit>/<file_name>
説明:

<jcl_unload_lob_file_system>

CLOBまたはBLOB列をダウンロードするデータセット・タイプを定義します。 デフォルト値はPDSです。MVSシステム構成によっては、一部のファイルがPDSデータセット・タイプで許可されないことがあります。その場合、他のデータセット・タイプを選択する必要があります。
注意: このオプションは、CLOBおよびBLOB列でのみ使用されます。ログ・ファイル、SysPunchファイルおよび表データ・ファイルは、PDSデータセット・タイプで書き込まれます。

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

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

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

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

ファイル名の変更

Oracle Tuxedo Application Rehosting Workbenchでは、DDLソース・ファイル内の様々な名前(表名や列名)を変更できます。

名前の変更ルールは次の場合に実装できます。

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

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

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

名前の変更ルールの形式は次のとおりです。

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

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

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

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

rdbms-template.txt

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

$REFINEDIR/convert-data/default/rdbms/rdbms-templates.txt
リスト4-5 rdbms-template.txt
% Unloading all TABLE *******************
#VAR:TEMPLATES#/unloading/jcl-unload-DB2-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

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

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

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

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

リスト4-7 rdbms_move_assignation.txtの変更指示
[…]
*@ (c) Metaware:file-move-assignation.pgm. $Revision: 1.2 $
*release_format=2.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*
[…]

 


出力ファイルの説明

ファイルの場所

一時ファイルの場所

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

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

ログ・ファイルの場所

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

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

警告ファイルの場所

サポートされない機能が検出されたときにRehosting Workbench DB2-to-Oracleコンバータによって生成された警告ファイルは、次の場所に格納されます。

警告ファイルは2つのセクションで構成されます。

警告ファイルに格納される書込み行は、次のルールに基づいています。

表4-5 書込み行の形式
警告タイプ
説明
Unsupported datatype
一部のデータ型がサポートされていません(「DB2からOracleデータ型への変換」を参照)
書込み行の形式は次のとおりです。
TABLE <table_name>;COLUMN <column_name>;unsupported datatype <datatype>
Unsupported object type
一部のオブジェクトがサポートされていません(「変換されるDB2オブジェクト」を参照)
書込み行の形式は次のとおりです。
<object_type> <object_name>;unsupported object
サンプル:
GLOBAL TEMPORARY TABLE EMP;unsupported object
TABLESPACE STEB0163;unsupported object
Unsupported option in a table object
パーティション表がサポートされていません。ターゲット表は、このオプションなしで生成されます。
書込み行の形式は次のとおりです。
TABLE <table_name>;OPTION PARTITION BY;option ignored
Option set in db-param.cfg is not compatible with some data types
警告ファイルに表示されているコンポーネントは、MVSまたはターゲット・プラットフォーム(あるいはその両方)では正しく実行されません。これらのコンポーネントは、それらでは使用できません。これらのファイルを無視するか、変更することができます。
書込み行の形式は次のとおりです。
  • TABLE <table_name>;COLUMN <column_name>;<datatype> is not supported by '<jcl_unload_utility_name>' utility. Used JCL_UNLOAD_FORMAT_FILE='dsnutilb' in db-param.cfg
  • TABLE <table_name>;COLUMN <column_name>;<datatype> is not supported when JCL_UNLOAD_UTILITY_NAME = 'dsnuproc' (see db-param.cfg)
  • TABLE <table_name>;COLUMN <column_name>;<datatype> is not supported when JCL_UNLOAD_UTILITY_NAME = 'dsnuproc' and JCL_UNLOAD_FORMAT_FILE = 'binary' (see db-param.cfg)

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

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

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

注意: <jcl_unload_format_file>の値によっては、これらのプログラムはなくてもかまいません。

$HOME/trf/reload/rdbms/<schema name>/ctl
各<schema name>のSQL*LOADERで使用されるCTLファイルの場所。
これらのファイルの名前は次のとおりです。
<target table name>.ctl
$HOME/trf/reload/rdbms/<schema name>/ksh
各<schema name>の再ロード用Kornシェル・スクリプトの場所。
これらのスクリプトの名前は次のとおりです。
loadrdbms-<target table name>.ksh

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

生成されるオブジェクト

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

一時ファイル

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

データマップ・ファイル

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

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

ファイル名

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

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

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

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

構文およびパラメータ
リスト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

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

マッパー・ファイル

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

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

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

ファイル名

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

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

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

生成のサンプル

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

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

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

リスト4-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_NUMERIC|
	 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は、フィールド・ディレクティブを示しています。

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

COBOLコピーへのリンク

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

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

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

COBOL記述

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

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

コピー・ファイル名

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

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

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

リスト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>).

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

アンロード用JCL

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

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

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

ステップ1
DEL
IDCAMSでのファイルのDELETE(ログ、データ、syspunchファイルの削除)
ステップ2
UNLOAD
指定された表のDB2アンロード・ユーティリティ

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

表名が8文字よりも長い場合、Rehosting 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は、特定のサイトの制約に合せるために次のような調整が必要になることがあります。

アンロード用JCL: DSNUPROC

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

リスト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は、特定のサイトの制約に合せるために次のような調整が必要になることがあります。

表に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/<nom de table>.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"はOracleTuxedo Application Runtime Batchの一部です(Oracle Tuxedo Application Runtime for Batchリファレンス・ガイドを参照)。

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

ファイル${DD_SORTIE}がトランスコードされました

注意: 表に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列が含まれる場合、この手順ではすべての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列の次の手順

表にCLOB列が含まれる場合、この手順ではCOBOLプログラムの後に次のコマンドを起動します。

runb CLOB_TESTCLOB_LONGTEXT >>$logtab 2>&1

このCOBOLプログラムはすべてのCLOBファイルをトランスコードします。CLOBファイルのリストが、前述のMOD_<table_name> COBOLプログラムにより作成されます(DD_<column_name>_FNAME変数を参照)。

runbはOracleTuxedo Application Runtime Batchの一部です。詳細は、Oracle Tuxedo Application Runtime for 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アンロード・ログ・ファイルをターゲット環境に転送する必要があります。

ターゲット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 ファイルに設定されている場合、Rehosting 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>'
;
注意: このツールではCOMMENTを指定できるのはTABLEと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オブジェクトで置き換えられます。

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

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

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

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

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

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

COBOL変換ガイド・ファイル

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

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

ファイル名

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

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

説明:

<schema name>

現在のスキーマの名前。
生成されるサンプル
リスト4-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(10) "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
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-

 


詳細処理

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

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

コマンドラインの構文

rdbms.sh

名前

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

概要

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

説明

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

オプション

生成オプション

-C <schema name>

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

-c <schema name>

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

-g <schema name>

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

-m <schema name>

生成されたSHELLスクリプトを実行可能にします。COBOLプログラムは、ターゲット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. => -cまたは-C
  2. => -g
  3. => -m
  4. => -r
  5. => -i
  6. => -s(ステップ1 - 5をすべてのスキーマについて実行した後で1回実行する必要があります)

プロセス・ステップ

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

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

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

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

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

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

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

表4-13 ターゲット・プラットフォームの環境変数
変数
DATA_SOURCE
Oracle表に再ロードするためにz/OSから転送された、アンロード済DB2表を含むディレクトリの名前。
BIN
一般的な再ロードと制御のスクリプトの場所($HOME/trf/reload/bin)。
TMPPROJECT
一時ディレクトリ。
MT_LOG
実行ログを含むディレクトリ。
CTL
SQL*LOADERで使用される<table name>.ctlファイルを含むディレクトリ($HOME/trf/reload/rdbms/<schema name>/ctl)
DATA_TRANSCODE
DB2バイナリ・データ・トランスコード・スクリプトにより使用される一時ディレクトリ(ASCII形式の一時ファイルが含まれます)。

注意: <jcl_unload_format_file>の値が"csv"に設定されている場合、このディレクトリは使用されません。DB2ユーティリティで作成されたMVSファイルは、転送プロトコルによってすでに変換されています。

NLS_LANG
Oracleドキュメント、Oracle Databaseのグローバリゼーション・サポート・ガイドの指示に従って設定します。
NLS_SORT
NLS_COMP
「索引およびソートのパラメータ」の項および『Oracle Databaseグローバリゼーション・サポート・ガイド』の指示に従って設定します。
NLS_DATE_FORMAT
NLS_TIMESTAMP_FORMAT
NLS_TIME_FORMAT
「日付と時刻のパラメータ」の項および『Oracle Databaseグローバリゼーション・サポート・ガイド』の指示に従って設定します。

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

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

Oracle Tuxedo Application Rehosting 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の下にパッケージをインストールします。
  4. 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 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です。

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

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

データの転送

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

SBCSデータの転送

データ・ファイルがシングルバイト文字セット(SBCS)エンコードの場合、ファイル・タイプおよびdb-param.cfgパラメータに応じて、ファイル転送ツールで表4-14に示されている転送モードを使用できます。

表4-14 ファイル転送ツールで使用される転送モード
ファイル・タイプ
パラメータ
転送モード
DATA
rdbms:jcl_unload_format_file:binary
バイナリ
DATA
missing parameter rdbms:jcl_unload_format_file
バイナリ
DATA
rdbms:jcl_unload_utility_name:dsnuproc
rdbms:jcl_unload_format_file:csv
テキスト
BLOB & DATA
rdbms:jcl_unload_utility_name:dsnutilb
バイナリ
CLOB & DATA
rdbms:jcl_unload_utility_name:dsnutilb
バイナリ
LOG
 
テキスト
SYSPUNCH
 
テキスト

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

MBCSデータの転送

データ・ファイルがマルチバイト文字セット(MBCS)エンコードの場合、トランスコードにFTPを使用する必要があります。

一般に、メインフレームからオープン・システムにMBCSデータ・ファイル(簡体字中国語を例にとります)を転送する手順は、次のとおりです。

  1. ソース・プラットフォームにログインします。
  2. "tso ftp"コマンドを実行してターゲット・プラットフォームに接続します。
  3. ftpコマンドを使用して転送オプションを設定します。
  4. 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を選択します。

  5. "ftp put"コマンドを実行してデータ・ファイルをターゲット・プラットフォームに転送します。
  6. NLS_LANG環境パラメータを設定して、トランスコードなしでデータ・ファイルを再ロードします。
  7. 例: 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 dsntiaul

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


  先頭に戻る       前  次