•
•
• メッセージの詳細は、「DB2-to-Oracleコンバータ・メッセージ」を参照してください。デフォルトでは、DB2 DDLのSQLコマンドに接頭辞として修飾子または認可IDが付いている場合、その接頭辞はTuxedo ART Workbenchによってスキーマ名として使用されます。たとえば、CREATE TABLE <qualifier or authorization ID>.table name表名のように使用します。スキーマ名は、システム記述ファイルのglobal-options句を使用してTuxedo ART Workbenchによって決めることもできます。リスト4-1 スキーマ名の例表4-1に、Oracleに移行されるDB2オブジェクトを示します。
表4-1 変換されるDB2オブジェクト このファイルには、表<target_table_name>に関連付けられているすべての索引が含まれます。表<target_table_name>に定義されている索引がない場合には、このファイルは生成されません。 このファイルには、表<target_table_name>に関連付けられているすべての制約が含まれます。表<target_table_name>に定義されている制約がない場合には、このファイルは生成されません。 DB2の別名はSYNONYMに変換されます。表の別名のみがサポートされます。 表4-2に、すべてのDB2データ型とOracleデータベース・ターゲットでの変換を示します。
表4-2 DB2からOracleデータ型への変換
注意: ROWIDデータ型は変換されません。ほとんどの場合、ROWID列はLOBデータ型準拠のためにのみ作成されます。ユーザーのアプリケーションでROWID列が暗黙的に使用される場合、生成されたTABLE-<table_name>.sqlファイルを手動で調整する必要があります。表4-3に、すべてのDB2列プロパティとOracleデータベース・ターゲットでの変換を示します。
表4-3 DB2の列プロパティの変換 <value>はDB2 z/OSデータ型によって異なります。 このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。このファイルはカタログ化の際に作成されます。DB2-to-OracleコンバータがDB2オブジェクトをOracleに移行するためには、このファイルが最新状態で存在している必要があります。「カタロガSymtabおよびその他のファイル」を参照してください。スキーマに関するパラメータに加えて、システム記述ファイルで、もう1つ別のパラメータを設定する必要があります。リスト4-2 db-param.cfgテンプレート# the file param/rdbms/rename-objects-<schema>.txt is automatically loaded by the tool if it exists.
表4-4 db-param-cfgのパラメータ EBCDIC (z/OSのコード・セット)とASCII (Linux/UNIXのコード・セット) 16進数値間のマッピング表ファイルを指定します。hexa-map-fileを指定しない場合は、警告がロギングされます。
– <jcl_unload_utility_name>がdsnuprocに設定されている場合
– すべてのデータ列が「;」で区切られている場合csv制限: IND (デフォルト)、または3つの大文字のASCII文字です。
注意: これら3つのパラメータは、z/OS DB2で使用されDSNZPARMに格納される日付、タイムスタンプおよび時刻の書式を指定します。これらのパラメータは、再ロード操作やCOBOLでの日付と時刻の処理に影響します。これらのパラメータはオプションで、DB2データベースにDATE、TIMEまたはTIMESTAMPフィールドが含まれる場合のみ必要です。これらのパラメータは、Oracleの形式を考慮して指定する必要があります。nlssort(MYCOL11, 'nls_sort=FRENCH') ASC
•
•
• DB2からOracleへの移行で生成されるツールは、デフォルトではバイナリのNLS_SORTを想定します。
• DB2表にCLOBまたはBLOBデータ型が含まれる場合、dsnutilbユーティリティのみ使用できます。
• DB2表にMBCSデータ型が含まれる場合、dsnuprocユーティリティのみ使用できます。
• csv値はdsnuproc DB2ユーティリティでのみ使用できます。ファイル形式はCSVファイルのようなもので、";"文字区切りを使用します。DB2ユーティリティで作成されたファイルは、転送プロトコルがファイルをASCIIコードセットでトランスコードする、テキスト・モードで転送する必要があります。
警告: 転送プロトコルですべてのCOBOL文字およびすべての文字がEBCDICからASCIIに正しく変換されない場合、csv値は使用しないでください。CLOBまたはBLOB列を持つ表をダウンロードする場合、この列の各行は、名前が現在アンロード中のファイルに書き込まれる別個のファイルに書き込まれます。このパラメータの値は、次のデータセット・タイプによって異なります(「アンロード用JCL: DSNUTILB」を参照)。
• <data>: 出力ファイルへのアクセス・パス。文字列 <data>はJCLでハードコードされます
• <schema_name>: スキーマ名
• <table_name>: 表名
• <column_name6digit>: 6文字まで減らした列名に数値の接尾辞を加えたもの(表の最初のLOBS列には1、2番目には2など)
• <file_name>: DB2ユーティリティで自動的に生成される、8文字のメンバー名またはファイル名。このファイルが存在している場合、生成プロセスの最後に自動的に実行されます。これは、引数として<schema name>を使用して呼び出されます。
注意: このファイルは、$PARAM/rdbms変数で示されるディレクトリに配置してください。
注意: すべてのスキーマ名またはすべての表名(あるいは両方)に変更を適用するには、*を<schema name>または<DB2 table name> (あるいは両方)の位置に指定します。次の2番目の例を参照してください。リスト4-4 ファイル名変更の例リスト4-5 rdbms-template.txt必要な場合には、別のバージョンのrdbms-template.txtファイルを$PARAM/rdbmsディレクトリに配置できます。代替ファイルの使用は、rdbms.shの実行中にメッセージによって示されます。リスト4-6 代替テンプレート・ファイルによる実行ログこのファイルはTuxedo ART Workbenchのインストール時に配置され、様々なインストール・ディレクトリに生成されたコンポーネントの転送を制御します。このファイルは、rdbms.sh -iを使用してrdbms.shが起動されたときに、インストール・フェーズでコピーする各コンポーネントの場所を指定します。
•
• オプション-gによって生成されるログ:
• DB2-to-Oracleコンバータは、このオブジェクトおよび関連するすべてのオブジェクトを破棄しました。たとえば、DB2表にVARBINARY列がある場合、TABLE-<table_name>.sql、INDEX-<able_name>.sql、VIEW-<view_name>.sqlなどは生成されません。
• オプション-gによって生成される警告:DB2-to-Oracleコンバータは、すべてのコンポーネントを生成しました。警告ファイルに表示されているすべての生成済コンポーネントを、無視するか変更する調整があります。たとえば、DB2表にFLOAT列があり、db-param.cfgでdsnuproc DB2ユーティリティを設定する場合、このDB2オブジェクトに関連付けられている一部のコンポーネントを破棄する必要があることがツールで表示されます。一部のオブジェクトを適切に生成できない場合でも、この動作によりすべてのコンポーネントの生成が可能になります。
表4-5 書込み行の形式
•
表4-6 コンポーネントの場所 アンロードする各表で使用されるJCLは、<schema name>ごとに生成されます。<table name_8>.jclunload Oracleオブジェクトの作成に使用されるSQLスクリプトの<schema name>による場所。これらのスクリプトの名前は表4-1で説明しています。 COBOLトランスコード・プログラムの<schema name>による場所。 SQL*LOADERにより使用されるCTLファイルの<schema name>による場所。 再ロードKornシェル・スクリプトの<schema name>による場所。 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データベースの表名です。
表4-7 データマップ・ファイル名のパラメータ リスト4-10 データマップ・ファイル
表4-8 データマップ・ファイルのパラメータ
表4-9 マッパー・ファイル名のパラメータ リスト4-11 マッパー・ファイルの例リスト4-12 マッパー・ファイル各ファイル・ディレクティブは表を記述するために使用され、各フィールド・ディレクティブは表の列を記述するために使用されます(フィールド・ディレクティブ<target_column_name>-INDおよびfield <target_column_name>-LENは、アンロードされたファイルに付加される技術フィールドの特定のオプションを変更するためにDB2アンロード・ユーティリティによってオプションで使用されます(「MVSユーティリティ・パラメータ」を参照)。表4-10は、フィールド・ディレクティブを示しています。
表4-10 フィールド・ディレクティブのパラメータ
•
•
• CLOBまたはBLOB列では、FNAMEフィールドが追加されます。COBOLフィールド長は<lobs_fname_length>パラメータ・オプションによって指定されます(「LOBSパラメータ」を参照)。
表4-11 コピー・ファイル名のパラメータ リスト4-13 コピー・ファイル: SQLコードDB2 DDLのこの例では、パラメータrdbms:lobs_fname_length:50を使用するときにRehosting Workbenchによって次のコピー・ファイルが生成されます(「LOBSパラメータ」を参照)。リスト4-14 コピー・ファイル: 生成のサンプルリスト4-15 コピー・ファイル
表4-12 コピー・ファイルのパラメータ 各JCLは2つのステップを実行し、デフォルトではz/OS DSNTIAULユーティリティを使用して1つのDB2表をアンロードします。JCLのリターン・コードは正常終了では0または4です。
JCLの名前は<table name>.jclunloadですCLOBまたはBLOB列の場合、dsnutilb値を選択する必要があります。
• JOBカード: <cardjob_parameter_<digit>>
• ライブラリ・アクセス・パス: <db2_runlib_load_librairy>
• データ・ソース名: <ds_db2>
• 計画名: <plan_dsntiaul>
• 出力ファイルへのアクセス・パス: <data>リスト4-16 アンロード用DSNTIAUL JCLの例
• JOBカード: <cardjob_parameter_<digit>>
• ライブラリ・アクセス・パス: <db2_runlib_load_librairy>
• データ・ソース名: <ds_db2>
• 出力ファイルへのアクセス・パス: <data>リスト4-18は、db-param.cfgで次のパラメータが設定されている場合のJCLの内容を示しています。
• JOBカード: <cardjob_parameter_<digit>>
• ライブラリ・アクセス・パス: <db2_runlib_load_librairy>
• データ・ソース名: <ds_db2>
•
• データセット・タイプがHFSの場合のCLOBおよびBLOB列へのアクセス・パス: <datahfs>表にLOBS列が含まれていない場合でも、DSNUTILBを使用できます。リスト4-19は、db-param.cfgで次のパラメータが設定されている場合のJCLの内容を示しています。COBOLトランスコード・プログラムはrdbms.shコマンドの-gオプションを使用して生成され、-iオプションを使用して$HOME/trf/reload/rdbms/<schema name>/srcにインストールされます。DB2表ごとにCOBOLプログラムが生成され、MOD_<table name>.cblという名前が付けられますCLOB列を持つDB2表ごとに、rdbms.shコマンドによりセカンダリCOBOLプログラムが生成されます。セカンダリ・プログラムの名前はCLOB_<table name>_<column_name>.cblですこれらのプログラムはすべて、「コンパイラ・オプション」で説明するターゲットのCOBOLコンパイル・オプションを使用してコンパイルする必要があります。これらのプログラムのコンパイルには、プロジェクトのために調整されたCONVERTMW.cpyコピー・ファイルの存在が必要です。これらのプログラムは、入力からファイルを読み取り、固定長レコードのシーケンシャル・ファイルを出力に書き込みます。出力ファイルはSQL*LOADERユーティリティによって読み取られます。これらのプログラムは、CLOBおよびBLOB列ごとに、ライン・シーケンシャル・ファイルを出力に書き込みます。このファイルには、DB2アンロード・ユーティリティによって書き込まれたLOBSファイルのリストが含まれます(行当たりの列ごとに1つのファイル)。再ロード用Kornシェル・スクリプトが、このライン・シーケンシャル・ファイルを処理します。文字列列(CHAR, VARCHAR)はCONVERTMW.cpyコピー・ファイルを使用してEBCDICからASCIIに変換されます。この変換は、SBCSデータにのみ適用されます。データにMBCS文字が含まれる場合、FTPなどの転送ツールを使用して変換を行う必要があります。バイナリ列(SMALLINT, INTEGER)は、ターゲット・プラットフォームに応じて変換されます。これらのプログラムは、MOD_<table_name>プログラムによって書き込まれたCLOBファイルのリストを読み取ります。入力からCLOBファイルを読み取って(DB2アンロード・ユーティリティによって、行当たりのCLOB列ごとに1つのファイルが書き込まれた)、同じサイズのシーケンシャル・ファイルを出力に書き込みます。出力ファイルは、ロード・プロセス中にSQL*LOADERユーティリティによって読み取られます。CLOB列はCONVERTMW.cpyコピー・ファイルを使用してEBCDICからASCIIに変換されます。スクリプトの名前はloadrdbms-<table name>.kshですスクリプトを実行すると、実行ログが$MT_LOG/<table name>.logに生成されますリスト4-24は、各スクリプトの先頭に設定された変数を示します。export DD_LONGTEXT_FNAME=${DD_LONGTEXT_FNAME:-${DATA_TRANSCODE}/TLOB.TESTCLOB/LONGTEXT_FNAME.loblst}LOBSデフォルト・パラメータを変更するには、スクリプトを呼び出す前にLOBDIR、DD_ENTREE_DIR、DD_SORTIE_DIRの各変数を設定します。アンロード・ユーティリティで作成されたすべてのLOBSファイルを、バイナリ・モードでディレクトリ${DD_ENTREE_DIR}/${LOBDIR}に転送する必要があります。スクリプトの3つの実行フェーズでは様々なメッセージが生成されます。これらのメッセージのリストは、「Oracle Tuxedo Application Rehosting Workbenchのメッセージ」にあります。runbはOracle Tuxedo Application Runtime Batchの一部です(詳細は、『Oracle Tuxedo Application Runtime for Batchリファレンス・ガイド』を参照)。
注意: 表にCLOBまたはBLOB列が含まれ、この手順を1回のみ起動する場合は(次のCLOBまたはBLOB手順を起動しない場合)、rdbms.shコマンドの-Tオプションを使用します。このプログラムは、アンロード手順でLOBSファイルに使用されるデータセット・タイプも表示します(パラメータ<jcl_unload_lob_file_system>に依存します)。
注意: このCOBOLプログラムはすべてのCLOBファイルをトランスコードします。CLOBファイルのこのリストが、前述のMOD_<table_name> COBOLプログラムにより作成されます(DD_<column_name>_FNAME変数を参照)。runbはOracle Tuxedo Application Runtime Batchの一部です(詳細は、『Oracle Tuxedo Application Runtime for Batchリファレンス・ガイド』を参照)。
注意: この手順では、SQL*LOADERユーティリティを使用してデータをOracle表にロードします。この手順では、DB2アンロード・ユーティリティにより、再ロードされたOracle表にz/OSからアンロードされた対応する表と同数のレコードが含まれることを確認します。レコード数が異なる場合は、エラー・メッセージが生成されます。スクリプトのネーミング・ルールは表4-1で説明しています。リスト4-27 Oracleの表と列の生成リスト4-28 Oracleの索引の生成パラメータ<nls_function>および<nls_attributes>はオプションです。db-paramのパラメータrdbms:indexsortとrdbms:indexlangがdb-param .cfg ファイルに設定されている場合、Tuxedo ART WorkbenchはCREATE INDEXコマンドにこれらのオプションを生成します。次のサンプルは、rdbms:indexsort=frenchパラメータが指定された索引の作成を示します。リスト4-31 Oracleの制約の生成リスト4-32 Oracleのコメントの生成リスト4-33 Oracleのビューの生成リスト4-34 Oracleのシーケンスの生成リスト4-35 Oracleのシノニムの生成
• 表<target_table_name>に関連付けられたトリガー。リスト4-36 Oracleのシーケンスとトリガーの生成名前は<schema name>.lstです。リスト4-37 COBOL変換ガイドのサンプルこのOracle Loaderユーティリティで管理されるすべてのSql*Loaderデータ型とファイル構造を示しています。これらは別々のパラメータを使用して生成されます(「db-param.cfg」を参照)。
注意: リスト4-39は、db-param.cfgで次のパラメータが設定されている場合のCTLの内容を示しています。リスト4-40は、db-param.cfgで次のパラメータが設定されている場合のCTLの内容を示しています。リスト4-40 CTLファイルの例(CLOB列あり)リスト4-41 DDLトランスレータ・ログ・ファイル - ヘッダーリスト4-42 DDLトランスレータ・ログ・ファイル - パラメータリスト4-44 DDLトランスレータ・ログ・ファイル - スキーマの変換リスト4-45 DDLトランスレータ・ログ・ファイル - DDL分析リスト4-46 DDLトランスレータ・ログ・ファイル - 出力ファイルリスト4-47 DDLトランスレータ・ログ・ファイル - 変換の問題リスト4-48 DDLトランスレータ・ログ・ファイル - トレーラrdbms.shでは、選択したオプションに応じて様々な実行レポートが作成されます。次の例では次のコマンドが使用されます。Schema-Table-L.pco (DSNUTILBロード機能用)Schema-Table-U.pco (DSNUTILBアンロード機能用)Schema-Table-u.pco (DSNTIAULアンロード機能用、Oracle専用)
•
•
• rdbms.sh - DB2移行コンポーネントを生成します。rdbms.shは、z/OS DB2データベースをUNIX/Linux Oracleデータベースに移行するために使用されるTuxedo ART Workbenchのコンポーネントを生成します。指定されたスキーマに関して、$TMPPROJECTでのコンポーネント(ORACLE DDL、SQL*LOADERのCTLファイル、COBOLコンバータで使用されるXMLファイル、構成ファイル(マッパー・ファイルおよびデータマップ・ファイル))の生成をトリガーします。このオプションの結果は-Cオプションと同じですが、エラーまたは警告が発生するとプロセスは異常終了します。指定されたスキーマに関して$TMPPROJECTでのアンロード用およびロード用コンポーネントの生成をトリガーします。生成内容は、構成ファイルで検出される情報によって異なります。生成されたSHELLスクリプトを実行可能にします。COBOLプログラムは、ターゲットCOBOLの固定形式に合うように調整されます。生成されるソースを変更するシェル・スクリプトが存在し、プロジェクトに属している場合は、そのスクリプトが実行されます(「生成されたコンポーネントを変更するファイル」を参照)。生成されたオブジェクト(ORACLE DDL、CTLファイル、KSH)からスキーマ名を削除します。このオプションを使用して、スキーマの名前をCOBOLコンポーネントから削除することもできます。これには、COBOLコンポーネントの変換に使用されるCOBOL変換構成ファイルにあるremove-sql-qualifier句を使用します。これらすべてのファイルは$PARAM/dynamic-configに作成されます
1.
2.
3.
4.
5. アンロードに使用されるコンポーネント($HOME/trf/unload/rdbmsに生成される)は、ソースのz/OSプラットフォームにインストールする必要があります(生成されたJCLは、特定のサイトの制約に合せた調整が必要な場合があります)。再ロードに使用されるコンポーネント($HOME/trf/reload/rdbmsに生成される)は、ターゲット・プラットフォームにインストールする必要があります。
表4-13 ターゲット・プラットフォームの環境変数 一般的な再ロードと制御のスクリプトの場所($HOME/trf/reload/bin)。 「索引およびソートのパラメータ」の項および『Oracle Databaseグローバリゼーション・サポート・ガイド』の指示に従って設定します。 「日付と時刻のパラメータ」の項および『Oracle Databaseグローバリゼーション・サポート・ガイド』の指示に従って設定します。Tuxedo ART Workbenchは、DB2/zOSプラットフォームで検出された動作と同じ動作をOracleデータベース上で再現する必要があります。特定のDB2/zOS固有のケースを処理するために、DB2-to-Oracleコンバータには、それぞれOracle機能とプロジェクト定数を含むMWDB2ORAおよびMWDB2ORA_CONSTという名前のOracleパッケージが含まれます。これらの機能は、すべてのDATE、TIMEおよびTIMESTAMPS機能の管理に使用されます。これらはCOBOLコンバータのSQLルールによって、COBOLプログラムに追加されます。
•
• DB2表にCLOBまたはBLOBデータ型が含まれる場合、dsnutilbユーティリティでDB2表のLOBS列および行ごとに1つのファイルが作成されます。
• LOBSデータ・ファイル(場所は<jcl_unload_lob_file_system>パラメータに依存します)これらのアンロード用JCLの名前は<table name>.jclunloadですデータ・ファイルがシングルバイト文字セット(SBCS)エンコードの場合、ファイル・タイプおよびdb-param.cfgパラメータに応じて、ファイル転送ツールで表4-14に示されている転送モードを使用できます。
表4-14 ファイル転送ツールで使用される転送モード ターゲットのUNIX/Linuxプラットフォームに転送されたファイルは、$DATA_SOURCEディレクトリに格納する必要があります。file_system_codepageおよびnetwork_transfer_codepageは、ターゲットMBCSに対応するメインフレームのコードのペアです。たとえば、簡体字中国語文字セットの場合、file_system_codepageとしてIBM-5488を選択し、network_transfer_codepageとしてIMB-1388またはUTF-8を選択します。例: export NLS_LANG="SIMPLIFIED CHINESE_CHINA.XXXX"再ロード・スクリプトはSQL*LDR Oracleユーティリティを使用します。このユーティリティはORACLEサーバーにしかアクセスできないため、特にこの再ロードのステップではこの変数に@<oracle_sid>文字列を含めないでください。loadrdbms - データをトランスコードおよび再ロードします。このチェックでは、loadrdbms-<table name>.kshの次のオプションを使用します