データベース・ユーティリティ
本章では、データベースを管理するためのユーティリティについて説明します。
1. 概要
以下は、データベース・ユーティリティの一覧です。
プログラム名 | 説明 |
---|---|
アプリケーション・プログラムからESQLまたはODBCなどのデータベースへのアクセスを実行します。 |
|
DB2データベースにSQLを発行します。 |
|
データベース情報への問い合わせおよび更新のためのデータ操作言語(DML)を実行します。 |
|
IKJEFT01ユーティリティを介してDB2データベースの表データをOpenFrameデータセットにアンロードします。 |
|
データベースにコマンドを発行します。 |
|
DB2データベースの表データをOpenFrameデータセットにアンロードします。 |
2. DSNMTV01
DSNMTV01は、OpenFrame HiDBを介したDL/Iの呼び出しやアプリケーション・プログラムからESQLまたはODBCなどのデータベースへのアクセスを実行するユーティリティ・プログラムです。
2.1. DDの設定
以下は、DDの設定項目です。
項目 | 説明 |
---|---|
DDITV02 DD |
データベースの接続情報と実行するアプリケーションを指定します。 以下は、データセットに指定するパラメータです。 SSN,LIT,ESMT,RTT,REO,CRC,CONN,PLAN,PROG
|
2.2. コマンドの設定
JCLでEXEC PGMを使用してDSNMTV01を直接呼び出すことはできます。JCLでDL/Iを呼び出すためにDFSRRC00ユーティリティを実行する場合は、DSNMTV01をMBRに指定して実行します。
//JOB01 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //JOBLIB DD DSN=SYS1.COBLIB,DISP=SHR //STEP EXEC PGM=DFSRRC00, // PARM='DLI,DSNMTV01,HOSPPSB,,0000,,0,,N,O,T' //SYSOUT DD SYSOUT=* //DDITV02 DD DSN=DSNMTV01.PARMLIB(SAMPLE),DISP=SHR //*
2.3. 使用例
以下は、DFSRRC00ユーティリティでPSBにHOSPPSB、MBRにDSNMTV01を指定する例です。DFSRRC00は、PSBの情報をロードした後、DSNMTV01を呼び出して、dsnmtv01.confからDB2Qに指定されたデータベースの接続情報を読み込んでデータベースに接続し、TESTPGMというプログラムを実行します。
<JCL>
//JOB01 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //JOBLIB DD DSN=SYS1.COBLIB,DISP=SHR //STEP EXEC PGM=DFSRRC00, // PARM='DLI,DSNMTV01,HOSPPSB,,0000,,0,,N,O,T' //SYSOUT DD SYSOUT=* //DDITV02 DD DSN=DSNMTV01.PARMLIB(SAMPLE),DISP=SHR //*
<DDITV02 DD>
DB2Q,SYS1,DSNMIN10,,A,-,MP13J120,TESTPGM,TESTPGM
3. DSNTEP2
SELECT/DELETE/UPDATE/INSERT SQLとCOMMIT/ROLLBACK文を使用できます。SQLを実行した後、内部でCOMMITコマンドを実行し、ユーティリティが終了されます。
3.1. DDの設定
以下は、DDの設定項目です。
項目 | 説明 |
---|---|
SYSTSPRT DD |
IKJEFT01でDSNTEP2を実行する際、処理結果またはエラーメッセージを出力するデータセットを指定します。 |
SYSTSIN DD |
IKJEFT01でDSNTEP2を実行するためのDSNコマンドとRUNコマンドを指定します。 |
SYSPRINT DD SYSOUT DD |
メッセージを出力するための出力データセットを指定します。 SYSOUT DDとSYSPRINT DDを両方とも使用できます。SYSOUT DDとSYSPRINT DDが同時に設定された場合は、SYSOUT DDが使用されます 。 |
SYSIN DD |
実行するデータベースSQL問合せが含まれている入力データセットを指定するか、実行するSQL問合せを直接定義します。 1行は72文字以内にし、行継続文字として「^」を使用します。 |
3.2. コマンドの設定
DSNTEP2を実行するには、以下のようにJCLのEXEC文にIKJEFT01を指定し、SYSTSIN DDにDSNコマンドとRUNコマンドを指定します。SYSTSINの使用方法については、IKJEFT01のコマンド設定を参照してください。
//JOB01 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //STEP EXEC PGM=IKJEFT01 //SYSTSIN DD * DSN SYSTEM(DBPA) RUN PROGRAM(DSNTEP2) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') //*
3.3. 使用例
以下は、IKJEFT01ユーティリティがデータベース・システムに接続された後、DSNTEP2ユーティリティを呼び出してSYSIN DDに記述されたSQL問合せを実行し、その結果をSYSPRINTに出力する例です。
//JOB02 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //RUNTEP2 EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(DBPA) RUN PROGRAM(DSNTEP2) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') //* //SYSPRINT DD SYSOUT=* //SYSIN DD * SELECT * FROM DSN8810.PROJ; /*
上記のコマンドを実行すると、以下のような結果が得られます。
###### DSNTEP2 DB INFO : USERNAME=tibero,PASSWORD=****,DATABASE=tb_rbtest ##### time check - begin ##### PAGE 1 ***INPUT STATEMENT: SELECT * FROM DSN8810.PROJ; +-----------------------------------+ ! COLONE ! COLTWO ! +-----------------------------------+ 1_! AAA ! 392 ! 2_! AAA ! 105 ! +-----------------------------------+ SUCCESSFUL RETRIEVAL OF 2 ROW(S) ****************************************** Bottom of Data ****************************************** ##### time check - end : elapsed time(sec) = 0.000983 #####
以下は、SYSIN DDにUPDATEコマンドを入力し、その実行結果をSYSPRINTに出力する例です。
//JOB02 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //RUNTEP2 EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(DBPA) RUN PROGRAM(DSNTEP2) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') //* //SYSPRINT DD SYSOUT=* //SYSIN DD * UPDATE TEST_TABLE SET COLONE = 'TESTVALUE' /*
上記のコマンドを実行すると、以下のような結果が得られます。
###### DSNTEP2 DB INFO : USERNAME=tibero,PASSWORD=****,DATABASE=tb_rbtest ##### time check - begin ##### PAGE 1 ***INPUT STATEMENT: UPDATE TEST_TABLE SET COLONE = 'TESTVALUE' ; NUMBER OF ROWS AFFECTED 2 ****************************************** Bottom of Data ****************************************** ##### time check - end : elapsed time(sec) = 0.000350 #####
3.4. 環境設定
-
データベース接続情報
データベースの名前と接続情報をOpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションに設定します。IKJEFT01でDSNコマンドを使用して指定したシステム名に該当する接続情報を利用します。
ikjeft01とdbutilサブジェクトの設定方法については、OpenFrame Batch『環境設定ガイド』を参照してください。
3.5. 戻りコード
以下は、DSNTEP2ユーティリティの戻りコードです。
-
正常に実行された場合
バッチ・アプリケーションからの戻りコードを返します。
-
エラーが発生した場合
SYSPRINT DDにエラーメッセージを出力し、該当するエラーコードを返します。
コード 説明 0
コマンドが正常に処理された場合です。情報メッセージが表示されることがあります。
4
次のいずれかの場合です。
-
データベース実行中に警告(WARNING)が発生した場合
-
UPDATE/DELETEを実行して影響を受けたレコードがない場合
8
次のいずれかの場合です。
-
データベース情報を指定していない場合
-
SYSREC00 DDを指定していない場合
-
SYSIN DDを指定していない場合
-
SQL実行中にエラーが発生した場合
12
次のいずれかの場合です。
-
内部ライブラリの使用中にエラーが発生した場合
-
データベース接続に失敗した場合
-
SYSINに対してLRECL値が一致しないか、または72行目以降の領域に文字が存在する場合
-
4. DSNTIAD
DSNTIADは、データベース情報への問合せおよび更新するためのデータ操作言語(DML)を実行するユーティリティ・プログラムです。Tibero、DB2、Oracleで使用できます。
4.1. DDの設定
以下は、DDの設定項目です。
項目 | 説明 |
---|---|
SYSTSPRT DD |
IKJEFT01でDSNTIADを実行する際、処理結果またはエラーメッセージを出力するデータセットを指定します。 |
SYSTSIN DD |
IKJEFT01でDSNTIADを実行するためのDSNコマンドとRUNコマンドを指定します。 |
SYSPRINT DD SYSOUT DD |
メッセージを出力するための出力データセットを指定します。 SYSOUT DDとSYSPRINT DDを両方とも使用できます。SYSOUT DDとSYSPRINT DDが同時に設定された場合は、SYSOUT DDが使用されます 。 |
SYSIN DD |
実行するデータベースSQL問合せが含まれている入力データセットを指定するか、実行するSQL問合せを直接定義します。 1行は72文字以内にし、行継続文字として「^」を使用します。 |
4.2. コマンドの設定
DSNTIADを実行するには、以下のようにJCLのEXEC文にIKJEFT01を指定し、SYSTSIN DDにDSNコマンドとRUNコマンドを指定します。SYSTSINの使用方法については、IKJEFT01のコマンド設定を参照してください。
//JOB01 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //STEP EXEC PGM=IKJEFT01 //SYSTSIN DD * RUN PROGRAM(DSNTIAD) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') //*
4.3. 使用例
以下は、IKJEFT01ユーティリティがデータベース・システムに接続された後、DSNTIADユーティリティを呼び出してSYSIN DDに記述されたSQL問合せを実行し、その結果をSYSPRINTに出力する例です。
DSNTIADがサポートするコマンドには、挿入(INSERT)、更新(UPDATE)、削除(DELETE)があり、1つの制御文に複数のSQL文を使用することができます。複数のSQL文の実行中に10個のSQL文でエラーが発生すると、エラーを返します。
//JOB02 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //RUNTEP2 EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * RUN PROGRAM(DSNTIAD) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') //* //SYSPRINT DD SYSOUT=* //SYSIN DD * INSERT INTO DSNTAID_GROUP(GROUPNAME, OWNER, SUPGROUP, SUBGRPS, MODEL, DATA, CREATION, FLAGS) VALUES('TESTGRP3', 'JUNG', NULL, NULL, NULL, NULL, '20101005', 0); DELETE FROM DSNTAID_GROUP WHERE GROUPNAME = 'TESTGRP2'; UPDATE DSNTAID_GROUP SET OWNER = 'TEST01' WHERE GROUPNAME = 'TESTGRP1'; /*
4.4. 環境設定
データベースの名前と接続情報をOpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションのキーに設定します。
ikjeft01サブジェクトの設定方法については、OpenFrame Batch『環境設定ガイド』を参照してください。 |
4.5. 戻りコード
以下は、DSNTIADユーティリティの戻りコードです。
-
正常に実行された場合
バッチ・アプリケーションからの戻りコードを返します。
-
エラーが発生した場合
SYSPRINT DDにエラーメッセージを出力し、該当するエラーコードを返します。
コード 説明 0
コマンドが正常に処理された場合です。情報メッセージが表示されることがあります。
4
データベースでSQLの実行中に警告(WARNING)が発生したか、または結果セットがない場合です。
8
データベースでSQLを実行中にエラーが発生した場合です。
12
SYSINに無効なSQLが指定されています。
4.6. その他の事項
DSNTIADは、ODBC(Open DataBase Connectivity)とOCI(Oracle Call Interface)バージョンを提供します。以下は、OpenFrameでDSNTIADを使用する方法です。
-
ODBCは、DBMSとアプリケーション間の依存関係を排除し、DBMSの種類に関係なく、データベースを操作できるようにします。ODBCマネージャーとODBCドライバーが必要です。
-
OCIは、Oracleによって提供されるAPIです。OCIを使用するには、Oracleクライアントに含まれているOCIライブラリが必要です。
ODBCバージョンのDSNTIADは、Tibero、DB2、OracleなどのDBMSをサポートし、OCIバージョンのDSNTIADは、Oracleのみサポートしています。
5. DSNTIAUL
IKJEFT01ユーティリティを介してDB2データベースの表データをOpenFrameデータセットにアンロードするユーティリティ・プログラムです。
SYSINデータセットにアンロードを実行するSQLを指定します。基本的には、INZUTILBユーティリティと似ていますが、INZUTILBはEXEC文に直接実行し、DSNTIAULはIKJEFT01を介して実行する点が異なります。
5.1. DDの設定
以下は、DDの設定項目です。
項目 | 説明 |
---|---|
SYSIN DD |
データベース・テーブルをUNIXファイルに変換するための入力データセットを指定します。 |
SYSPRINT DD |
メッセージを出力するための出力データセットを指定します。SYSOUTとSYSPRINT DDの両方が存在する場合、IKJEFT01の出力メッセージはSYSOUTに、DSNTIAULの出力メッセージはSYSPRINTに出力されます。その他の場合は、IKJEFT01とDSNTIAULの両方がSYSPRINTまたはSYSOUT DDにメッセージを出力します。 |
SYSTSIN DD |
DSNTIAULを実行するためのDSNコマンドとRUNコマンドを指定します。 |
SYSPUNCH DD |
データベースのテーブル構造のバックアップ・ファイルをロードする際に必要な情報を保存するデータセットを指定します。 使用しない場合は、DUMMYに指定します。 |
SYSRECnn DD |
出力データセットを指定します。 DSNTIAULを一回実行すると、出力データセットに最大100のバックアップ・ファイルを作成することができます。SYSIN DDの入力データセットで指定した1つのSELECT文またはデータベース・テーブル名に対して、データのアンロード結果が順次保存されます。したがって、出力データセット数は、入力データセットのSELECT文またはデータベース・テーブル名の数と一致する必要があります。 nnに出力データセットの番号を00から99までの範囲で指定します。 このDDに指定されたデータセットが新規作成されるデータセットであり、JCLでLRECLが指定されていない場合、アンロードするデータセットのLRECLは、表の列の数と長さによって決定されます。 |
5.2. コマンドの設定
DSNTIAULを実行するには、以下のようにJCLのEXEC文にIKJEFT01を指定し、SYSTSIN DDにDSNコマンドとRUNコマンドを指定してから、PARMコマンドを使用して’SQL’パラメータを指定します。SYSTSINの使用方法については、IKJEFT01のコマンド設定を参照してください。
//JOB01 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //STEP EXEC PGM=IKJEFT01 //SYSTSIN DD * RUN PROGRAM(DSNTIAUL) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') PARM('SQL') //*
SQLクエリを使用せずに、表名のみを使用してUNLOADを実行する場合は、PARMコマンドを使用しません。
//JOB01 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //STEP EXEC PGM=IKJEFT01 //SYSTSIN DD * RUN PROGRAM(DSNTIAUL) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') //*
5.3. 使用例
以下は、IKJEFT01ユーティリティがデータベース・システムに接続された後、DSNTIAULユーティリティを呼び出してDSN8810.PROJというデータベース・テーブルから、テーブル・データとテーブル構造をDSN8UNLD.SYSREC00とDSN8UNLD.SYSPUNCHにバックアップする例です。
//JOB02 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * RUN PROGRAM(DSNTIAUL) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') PARM('SQL') //* //SYSPRINT DD SYSOUT=* //SYSREC00 DD DSN=DSN8UNLD.SYSREC00, // UNIT=SYSDA,SPACE=(32760,(1000,500)), // DISP=(NEW,CATLG),VOL=SER=SCR03 //SYSPUNCH DD DSN=DSN8UNLD.SYSPUNCH, // UNIT=SYSDA,SPACE=(800,(15,15)),DISP=(NEW,CATLG), // VOL=SER=SCR03,RECFM=FB,LRECL=120,BLKSIZE=1200 //SYSIN DD * SELECT * FROM DSN8810.PROJ /*
以下は、SQLを使用せずに表名を使用してアンロードするためにSYSTSINとSYSINを変更した例です。
//JOB02 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * RUN PROGRAM(DSNTIAUL) PLAN(DSNTEP81) LIB('DSN810.RUNLIB.LOAD') //* //SYSPRINT DD SYSOUT=* //SYSREC00 DD DSN=DSN8UNLD.SYSREC00, // UNIT=SYSDA,SPACE=(32760,(1000,500)), // DISP=(NEW,CATLG),VOL=SER=SCR03 //SYSPUNCH DD DSN=DSN8UNLD.SYSPUNCH, // UNIT=SYSDA,SPACE=(800,(15,15)),DISP=(NEW,CATLG), // VOL=SER=SCR03,RECFM=FB,LRECL=120,BLKSIZE=1200 //SYSIN DD * DSN8810.PROJ /*
5.4. 環境設定
データベースの名前と接続情報をOpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションのキーに設定します。
ikjeft01サブジェクトの設定方法については、OpenFrame Batch『環境設定ガイド』を参照してください。 |
5.5. 戻りコード
DSNTIAULユーティリティプログラムは、LOB型カラム(BLOB、CLOB)を含むテーブルの処理をサポートしていません。そのため、対象テーブルがVARCHAR型カラムの範囲内である場合は、カラムの型を変更することを検討する必要があります。
以下は、DSNTIAULユーティリティの戻りコードです。
-
正常に実行された場合
バッチ・アプリケーションからの戻りコードを返します。
-
エラーが発生した場合
SYSPRINT DDにエラーメッセージを出力し、該当するエラーコードを返します。
コード 説明 0
コマンドが正常に処理された場合です。情報メッセージが表示されることがあります。
4
データベースでSQLの実行中に警告(WARNING)が発生したか、または結果セットがない場合です。
8
次のいずれかの場合です。
-
データベース情報を指定しなかった場合
-
SYSREC00 DDを指定しなかった場合
-
SYSIN DDを指定しなかった場合
-
SQLの実行中にエラーが発生した場合
-
6. DSNUTILB
DSNUTILBは、データベースにコマンドを発行するユーティリティ・プログラムです。
OpenFrameでは、LOADコマンド、UNLOADコマンド、QUIESCEコマンド、TEMPLATEコマンドをサポートしています。LOADコマンドは、データセットに指定されたデータをデータベースのテーブルにロードするために使用されます。UNLOADコマンドは、データベース・テーブルのレコードをデータセットに保存するために使用されます。QUIESCEコマンドは、ターゲット・データベースにチェックポイントを指定するために使用され、TEMPLATEコマンドは、アンロードに使用されるPDSデータセットを割り当てるために使用されます。
Tibero環境で稼働するDSNUTILBは、LOADおよびUNLOADコマンドの実行時に、入力または出力するデータセット名やテーブル名に対応したコピーブック・ファイルを要求します。このコピーブック・ファイルを利用することで、TiberoにおいてDB2の「DECIMAL」列のパック10進数とゾーン10進数の値を処理することが可能です。
|
6.1. DDの設定
以下は、DDの設定項目です。
項目 | 説明 |
---|---|
SYSIN DD |
データベースで実行するコマンドを指定します。 |
SYSPRINT DD |
メッセージを出力するための出力データセットを指定します。 |
LOADコマンドの場合、SYSINにLOADターゲットのDDを指定する必要があるため、SYSINのINDDN文に指定されたDD名を追加で指定する必要があります。 |
6.2. コマンドの設定
以下は、DSNUTILBのコマンドです。
EXEC
DSNUTILBを実行するには、JCLのEXEC文に以下のように指定します。
//STEP EXEC PGM=DSNUTILB[,PARM='system,[uid],[utproc]']
パラメータ | 説明 |
---|---|
system |
システム名を指定します。OpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションからシステムのユーザー情報を読み込みます。 |
uid |
DB2がメインフレームにインストールされた場合、ストアド・プロシージャを呼び出す際にUID情報を渡します。それ以外の場合は無視されます。 |
utproc |
無視されます。 |
LOAD
以下は、LOADコマンドの構文です。
LOAD DATA INDDN ddname1 [REPLACE] INTO TABLE table_name [field_name [POSITION ( field_position : field_length )]] [DELIMITED [COLDEL del_char1][CHARDEL del_char2][DECPT del_char3]] [WORKDDN (ddname2, ddname3)] [ENFORCE NO] [DISCARDS discard_number] [DISCARDDDN discard_ddname] [ERRDDN SYSERR] [MAPDDN SNAP]
パラメータ | 説明 |
---|---|
INDDN |
ロード対象のデータセットを指定したDD名を指定します。 |
DELIMITED |
ロード対象のデータセットのレコード形式が区切り文字で区切られている場合に使用します。UNLOADコマンドまたはDSNTIAULユーティリティによって作成されたデータセットが、DELIMITEDオプションを使用して作成された場合に使用できます。このオプションを使用すると、フィールド情報に指定された長さと位置情報は無視されます。
|
DISCARDS |
データセット・レコードのロードの失敗を許可する回数を指定します。ロードに失敗したレコードが設定値を超えると、ユーティリティはエラーを返して終了されます。指定しない場合は、0が使用されます。この場合、ロードに失敗したレコードの数に関係なく、ロードを続行します。 |
DISCARDDN |
ロードに失敗したデータセット・レコードを記録するDD名を指定します。指定しない場合は、「SYSDISC」が使用されます。JCLにDISCARDDNのためのデータセットが指定されていない場合は、失敗レコードを記録しません。 |
REPLACE |
ロード対象のテーブル・データを削除するかどうかを指定します。 REPLACEを指定すると、既存のテーブル・データを削除します。 |
INTO TABLE |
ロード対象のテーブル名と列情報を指定します。フィールドの場合は、データセットでの位置と長さを指定します。フィールド情報が指定されていない場合は、テーブルの列の順序と長さによってデータセットから読み込む各列の位置情報が決まります。 |
WORKDDN、ENFORCE、ERRDDN、MAPDDNは、OpenFrameではサポートされません。 |
UNLOAD
以下は、UNLOADコマンドの構文です。
UNLOAD DATA UNLDDN ddname1 | (ddname1) PUNCHDDN ddname2 FROM TABLE (table_name [field_name field_type(field_length) [CLOBF template_ddname] [EXTERNAL] ]) [WHEN (where_condition)] [DELIMITED [COLDEL del_char1][CHARDEL del_char2][DECPT del_char3]]
パラメータ | 説明 |
---|---|
UNLDDN |
アンロード対象のデータセットを指定したDD名を指定します。 |
PUNCHDDN |
アンロードの実行時にテーブルの列の名前、長さ、位置を記録するデータセットのDDを指定します。データセットに作成された構文は、LOADコマンドで使用できます。 |
DELIMITED |
アンロードの実行時にレコードを区切り文字で区切られた文字列形式で指定する場合に使用します。このオプションを使用してアンロードされたデータセットは、LOADコマンドの実行時にDELIMITEDオプションを使用する必要があります。このオプションを使用した場合、PUNCHDDN DDに長さと位置情報は作成されません。
|
FROM TABLE |
アンロード対象のテーブル名を指定します。アンロードするためのフィールドを指定する場合は、フィールドの名前、タイプ、長さを指定します。
|
UNLOADコマンドを実行する際、テーブルのレコードが出力されるデータセットに対して個別のDCB情報が指定されていない場合、そのデータセットはレコード長32760、レコード形式VBで作成されます。 |
QUIESCE
以下は、QUIESCEコマンドの構文です。
QUIESCE TABLESPACE tablespace_name ...
パラメータ | 説明 |
---|---|
TABLESPACE |
QUIESCEを処理する対象の表領域名を指定します。 |
TEMPLATE
以下は、TEMPLATEコマンドの構文です。
TEMPLATE ddname DSN 'dsname' DSNTYPE(dsntype) UNIT(unit) SPACE(primary,secondary) [CYL]
パラメータ | 説明 |
---|---|
DSN |
アンロード中に使用するデータセット名を指定し、ddnameで割り当てます。このデータセットは、UNLOADコマンドのFROM TABLE文でLOBタイプのフィールドをアンロードするときに使用されます。 |
DSNTYPE |
割り当てを実行するデータセットのタイプを指定します。現在は、PDSのみサポートされます。 |
UNIT、SPACE、CYLは、OpenFrameではサポートされません。 |
6.3. 使用例
LOAD
以下は、DSNUTILBユーティリティを実行して、UNIXバックアップ・ファイルのDSN8UNLD.SYSREC00をSYSIN DDに指定された情報でロードする例です。
//JOB01 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //RUNLOAD EXEC PGM=DSNUTILB //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSREC DD DSN=DSN8UNLD.SYSREC00,DISP=(SHR,KEEP) //SYSIN DD * LOAD DATA INDDN SYSREC REPLACE LOG NO SORTDEVT DISK INTO TABLE TEST_TABLE ( PO_NBR POSITION ( 1: 11 ) CHAR ) WORKDDN (SYSUT101,SORTOUT) ENFORCE NO DISCARDDN SYSDISC ERRDDN SYSERR MAPDDN SMAP /* //
UNLOAD
以下は、DSNUTILBユーティリティを実行し、TEMPLATE構文を使用してSYS1.TSTLIB PDSを割り当てた後、SYSREC00 DDにアンロードする例です。DATA_XML列は、LOBタイプの列データをSYS1.TSTLIB PDS内にDATA_XMLというメンバーとしてアンロードします。
//ULDT1 JOB //STP1 EXEC PGM=DSNUTILB,PARM='DBTW,A,B' //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSPUNCH DD SYSOUT=* //SYSREC00 DD DSN=ULDTEST.ULD,DISP=(NEW,CATLG,DELETE) //SYSIN DD * TEMPLATE LOBFRW DSN 'SYS1.TSTLIB' DSNTYPE(PDS) UNIT(3390) SPACE(50,250) CYL UNLOAD DATA FROM TABLE DATA_UNLOAD HEADER NONE ( NUMBER CHAR(10) ,QUOTE_ID DECIMAL ,CLASS_ID CHAR(08) ,DATA_XML VARCHAR CLOBF LOBFRW ,ADDED_DATE TIMESTAMP EXTERNAL(26) ,ADDED_LOGON CHAR(15) ,REVISED_DATE TIMESTAMP EXTERNAL(26) ,REVISED_LOGON CHAR(15) ) WHEN (ADDED_DATE >= (CURRENT_TIMESTAMP - 1 YEAR)) UNLDDN SYSREC00 PUNCHDDN SYSPUNCH DELIMITED COLDEL X'09' SHRLEVEL CHANGE /*
QUIESCE
以下は、DSNUTILBユーティリティを実行して、DEFSPACEという表領域にQUIESCEを実行する例です。
//JOB01 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //RUNLOAD EXEC PGM=DSNUTILB //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSIN DD * QUIESCE TABLESPACE DEFSPACE /* //
6.4. 環境設定
-
データベース接続情報
データベースの名前と接続情報は、OpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションに設定します。
$ ofconfig list -n NODE1 -s ikjeft01 -sec "SYSTEM:DBPA" ============================================================================== SUBJECT | SECTION | KEY | VALUE ============================================================================== ikjeft01 | SYSTEM:DBPA | DATABASE | oframe3 | | DBAUTH | PUBLIC | | DBTYPE | TIBERO | | INSTANCE | oframe3 | | PASSWORD | tmax | | USERNAME | tibero ==============================================================================
-
Tibero用DSNUTILBのためのコピーブックのパスを指定
Tibero環境で動作するDSNUTILBでは、UNLOADおよびLOADコマンドの実行中にDB2の「DECIMAL」列を処理するため、各テーブルに対応するコピーブックファイルのパスを指定する必要があります。OpenFrame環境設定のdbutilサブジェクトのDIRECTORYセクションにそのパスを定義します。コピーブックのファイル名には、データセット名またはテーブル名を使用し、拡張子は「.cpy」とする必要があります。
$ ofconfig list -n NODE1 -s dbutil -sec DIRECTORY -k DBUTIL_COPYBOOK_DIR =================================================================================== SUBJECT | SECTION | KEY | VALUE =================================================================================== dbutil | DIRECTORY | DBUTIL_COPYBOOK_DIR | ${OPENFRAME_HOME}/data ===================================================================================
-
Tibero用DSNUTILBのための「NVARCHAR/NCHAR」列対応を指定
Tibero環境で動作するDSNUTILBがUNLOADおよびLOADコマンドを実行する際、対象テーブルにNVARCHARまたはNCHAR列が存在する場合、これらの列の長さをどのように設定するかを指定します。設定値が「EBCDIC」の場合、NVARCHARおよびNCHARの列長と同じバイト長を使用し、「NORMAL」の場合はTibero ESQLの動的SQLによって決定されるバイト長が使用されます。この設定は、OpenFrame環境設定のdbutilサブジェクトのDSNUTILBセクションに記述します。また、NVARCHARおよびNCHAR列に対応するCOBOLのフィールドは、「PIC N(n)」という形式で宣言する必要があります。
$ ofconfig list -n NODE1 -s dbutil -sec DSNUTILB -k NVARCHAR_LENGTH =================================================================================== SUBJECT | SECTION | KEY | VALUE =================================================================================== dbutil | DSNUTILB | NVARCHAR_LENGTH | EBCDIC ===================================================================================
-
Tibero用DSNUTILBのための「NULL INDICATOR」位置を指定
Tibero環境で動作するDSNUTILBがUNLOADおよびLOADコマンドを実行する際、対象テーブルの列がNULL可能な場合、NULLを示すインジケータの位置を指定することができます。この位置は、DSNTIAULの動作のように列データの後方(後置)にするか、IBM用DSNUTILBのように前方(前置)にするかを選択できます。この設定を行わない場合、デフォルトの動作は列データの後方にインジケータを配置します。
$ ofconfig list -n NODE1 -s dbutil -sec DSNUTILB -k NULL_INDICATOR_POSITION =================================================================================== SUBJECT | SECTION | KEY | VALUE =================================================================================== dbutil | DSNUTILB | NULL_INDICATOR_POSITION | FORWARD ===================================================================================
-
QUIESCEを処理するためのモジュールを指定
QUIESCEコマンドは、ユーザー指定のモジュールを呼び出す方法で実行されます。QUIESCEの処理を実行したモジュールのパスを、OpenFrame環境設定のdbutilサブジェクトに指定します。
$ ofconfig list -n NODE1 -s dbutil -sec DSNUTILU ============================================================================== SUBJECT | SECTION | KEY | VALUE ============================================================================== dbutil | DSNUTILU | PATH | ${OPENFRAME_HOME}/temp ==============================================================================
-
Tibero用DSNUTILBのための「tbloader」ユーティリティ・ベースのLOADを実行
DSNUTILBが直接INSERTコマンドを実行せず、Tiberoのユーティリティであるtbloaderを利用してLOADを実行する場合に使用します。
$ ofconfig list -n NODE1 -s dbutil -sec DSNUTILB -k LOAD_WITH_TBLOADER =================================================================================== SUBJECT | SECTION | KEY | VALUE =================================================================================== dbutil | DSNUTILB | LOAD_WITH_TBLOADER | YES ===================================================================================
-
Tibero用DSNUTILBがtbloaderを使用してLOADを実行する際に作成する一時ファイルのパスを指定
上記の設定により、DSNUTILBがtbloaderを利用してLOADを実行する場合、その過程で使用される一時ファイルのパスを指定します。
$ ofconfig list -n NODE1 -s dbutil -sec DIRECTORY -k DBUTIL_TEMP_DIR =================================================================================== SUBJECT | SECTION | KEY | VALUE =================================================================================== dbutil | DIRECTORY | DBUTIL_TEMP_DIR | ${OPENFRAME_HOME}/temp ===================================================================================
-
QUIESCEコマンドのユーザー定義関数のプロトタイプ
QUIESCEのユーザー定義関数を以下のように定義します。DSNUTILBでは、uid_nameにEXEC文で指定したPARMからuidを渡し、SYSINで指定した文をstatementに渡します。
int DSNUTILU(char *uid_name, char *statement) { ... }
|
6.5. 戻りコード
以下は、DSNUTILBユーティリティの戻りコードです。
-
正常に実行された場合
バッチ・アプリケーションからの戻りコードを返します。
-
エラーが発生した場合
SYSPRINT DDにエラーメッセージを出力し、該当するエラーコードを返します。
コード 説明 0
コマンドが正常に処理された場合です。情報メッセージが表示されることがあります。
4
データベースでSQLの実行中に警告(WARNING)が発生したか、または結果セットがない場合です。
8
次のいずれかの場合です。
-
SYSINの指定が正しくない場合
-
データベース情報を指定しなかった場合
-
Tibero用DSNUTILBでテーブルに対応するコピーブック・ファイルが見つからなかった場合
-
QUIESCEを実行するための外部モジュールが見つからなかった場合
-
7. INZUTILB
INZUTILBは、DB2データベースの表データをOpenFrameデータセットにアンロードするユーティリティ・プログラムです。SYSINデータセットにアンロードを実行するSQLを指定します。
7.1. DDの説明
以下は、DDの設定項目です。
項目 | 説明 |
---|---|
SYSIN DD |
DB2データベースで実行するSELECT SQLを指定します。 |
SYSREC DD |
SQLを実行した結果を保存する出力データセットを指定します。 |
7.2. コマンドの設定
EXEC
INZUTILBを実行するには、JCLのEXEC文に以下のように指定します。
//STEP EXEC PGM=INZUTILB
SYSIN DD
DB2に発行するSQLを記述します。
//SYSIN DD * SELECDT * FROM EMPLOYEE /*
7.3. 使用例
以下は、INZUTILBユーティリティを実行してDB2のEMPLOYEEテーブルをTEST.EMPLOYEEデータセットにアンロードする例です。SYSINには、SQL文を1のみ指定できます。
//JOB01 JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //UNLOAD EXEC PGM=INZUTILB //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSREC DD DSN=TEST.EMPLOYEE,DISP=(NEW,CATLG,DELETE) //SYSIN DD * SELECT * FROM EMPLOYEE /* //
7.4. 環境設定
データベースの名前と接続情報をOpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションのキーに設定します。
|
7.5. 戻りコード
以下は、INZUTILBユーティリティの戻りコードです。
-
正常に実行された場合
バッチ・アプリケーションからの戻りコードを返します。
-
エラーが発生した場合
SYSPRINT DDにエラーメッセージを出力し、該当するエラーコードを返します。
コード 説明 0
コマンドが正常に処理された場合です。情報メッセージが表示されることがあります。
4
データベースでSQLの実行中に警告(WARNING)が発生したか、または結果セットがない場合です。
16
次のいずれかの場合です。
-
データベース情報を指定しなかった場合
-
SYSREC DDを指定しなかった場合
-
SYSIN DDを指定しなかった場合
-
SQLの実行中にエラーが発生した場合
-