HCOSS Extract Schema ツールは、オンライン ツールとして使用する場合には DB2 for z/OS に直接接続する必要があります。本番環境によっては、この直接アクセスが、本番データベースの通常のビジネス トランザクションの速度に悪影響を及ぼしたり、データベース セキュリティ ポリシーの適切な機能を妨げることがあります。この問題を回避するために、オフラインで実行できるスキーマ抽出用のソリューションが用意されています。
Mainframe Batch Database Tools (MBDT) と z/OS DB2 DSNUTILB UNLOAD を使用すると、z/OS DB2 カタログに直接アクセスする必要がなくなります。このアプローチでは、z/OS DB2 処理への影響を最小化または除去する方法を使用して、メインフレームから DB2 テーブルの内容がアンロードされます。DB2 カタログ テーブルがアンロードされた後、MBDT を使用してこの情報を SQL Server にロードできます。これにより、SQL Server 経由で Extract Schema ツールからカタログにアクセスできるようになります。
このオフラインのスキーマ抽出アプローチは、HCOSS データベース移行のプロセスでスキーマ抽出ステップのみを変更することで、既存の HCOSS ツールセットを拡張します。Assess Data Migration から Compare Data までのその他すべてのステップは変更されません。
オンラインの Extract Schema ツールと同様に、HCOSS Offline Extract Schema ツールは、バージョン 9 以降の複数バージョンの DB2 for z/OS をサポートしています。
1 ステップ プロセスであるオンラインの Extract Schema ツールとは異なり、オフライン ツールでは、次の複数のステップを実行する必要があります。
SYSIBM スキーマには、アンロードする必要がある 17 の DB2 カタログ テーブルが含まれています。この操作を簡単に実行できるように、Micro Focus はすべての推奨 UNLOAD カードを含む UNLOAD.parm ファイルを用意しています。UNLOAD.parm 内の UNLOAD カードには、テーブル全体を選択するものも、特定のテーブルの列のサブセットのみを選択するものもあります。次に例を示します。
UNLOAD EBCDIC CCSID(00037,00037,00000) DATA FROM TABLE SYSIBM.SYSPARMS ( SCHEMA, NAME, PARMNAME, ROWTYPE, ORDINAL, TYPENAME, LENGTH, SCALE, SUBTYPE, CCSID, ENCODING_SCHEME)
特定のテーブルの列のサブセットを選択する目的は、アンロードするデータの量を減らすことですが、この場合でも HCOSS Extract Schema ツールが正常に機能するための十分な情報が提供されます。
MFDAS IMPORT を使用すると、すべてのコピーおよびカタログ化を 1 ステップで実行できますが、抽出したテーブルごとに個別にツールを実行する必要があります。したがって、各テーブルに対する MFDAS IMPORT コマンドを含む単一のバッチ ファイルを作成することもできます。
Enterprise Developer コマンド プロンプトで、次の構文を使用して MFDAS IMPORT を実行します。
MFDAS IMPORT datFilePath\datFileName.dat FROM QSAM mainframeDataSet /CATLOC=ESWorkArea\ESRegionName\catalog.dat
たとえば、SYSVIEWS のデータ セットをコピーおよびカタログ化する場合、コマンド ラインは次のようになります。
MFDAS IMPORT C:\work\DB2CATALOG\SYSVIEWS.DAT FROM QSAM MFIXCH.UTILBTS.ULSYSVWS /CATLOC=%USERPROFILE%\Documents\Micro Focus User\Enterprise Developer\WORKAREAEXSCHEMA\catalog.dat
SQL Server Management Studio から CREATECATALOG.sql を実行することをお奨めします。実行前に、SQL Server データベースに SYSIBM スキーマが存在することを確認してください。
SQL Server のテーブルに対する MBDT DSNUTILB LOAD の JCL 例を次に示します。
//LDSYSPRM JOB //DSNUPROC EXEC PGM=TSTUTILB,PARM='HCOD,SH ' //* //SYSPRINT DD SYSOUT=* //UTPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //STPRIN01 DD SYSOUT=* //*COLSDISC DD SYSOUT=* //* DISCARDDN CHKSDISC DISCARDS 0 //IDIOFF DD DUMMY //* //SYSUT1 DD DISP=MOD,DSN=SH.DSNUTILB.SYSUT1 //SORTOUT DD DISP=MOD,DSN=SH.DSNUTILB.SYSOUT //SYSMAP DD DISP=MOD,DSN=SH.DSNUTILB.SYSMAP //SYSERR DD DISP=MOD,DSN=SH.DSNUTILB.SYSERR //SYSREC DD DISP=SHR,DSN=MFIXCH.UTILBTS.ULSYSPRM //SYSIN DD * LOAD DATA INDDN SYSREC LOG NO REPLACE YES EBCDIC CCSID(00037,00037,65534) INTO TABLE "SYSIBM". "SYSPARMS" WHEN(00001:00002) = X'0146' NUMRECS 1274 ( "SCHEMA" POSITION( 00003:00132) VARCHAR , "NAME" POSITION( 00133:00262) VARCHAR , "PARMNAME" POSITION( 00263:00392) VARCHAR , "ROWTYPE" POSITION( 00393:00393) CHAR(001) , "ORDINAL" POSITION( 00394:00395) SMALLINT , "TYPENAME" POSITION( 00396:00525) VARCHAR , "LENGTH" POSITION( 00526:00529) INTEGER , "SCALE" POSITION( 00530:00531) SMALLINT , "SUBTYPE" POSITION( 00532:00532) CHAR(001) , "CCSID" POSITION( 00533:00536) INTEGER , "ENCODING_SCHEME" POSITION( 00537:00537) CHAR(001) ) /* // //*
MFExtractSchemaInfo DB2=HCODEMO; OUT=SCH81010; SCHEMA=DSN81010; TYPELOG=FILE
コマンド ラインからの Extract Schema ツールの実行に関する詳細については、「MFExtractSchemaInfo コマンド」を参照してください。