데이터베이스 유틸리티
본 장에서는 데이터베이스를 관리하기 위한 유틸리티에 대해 기술한다.
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 //*
<dsnmtv01.conf>
DB2Q,SYS1,DSNMIN10,,A,-,MP13J120,TESTPGM,TESTPGM
3. DSNTEP2
DSNTEP2は、DB2データベースにSQLを発行するユーティリティ・プログラムです。
SELECT SQLに対してのみ使用できます。OpenFrameでは、SQLを直接発行せず、db2コマンドを使用して実行します。
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の使用方法については、[sect_etc_utility_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; /*
3.4. 環境設定
-
データベース接続情報
データベースの名前と接続情報をOpenFrame環境設定のikjeft01サブジェクトのSYSTEM:{system}セクションに設定します。IKJEFT01でDSNコマンドを使用して指定したシステム名に該当する接続情報を利用します。
-
DB2コマンドの戻りコード
DB2コマンドによってDSNTEP2が実行されるとき、DB2コマンドの戻りコードをユーティリティの戻りコードに変換できます。OpenFrame環境設定のdbutilサブジェクトのUTIL_RETURNセクションに設定します。
ikjeft01とdbutilサブジェクトの設定方法については、『OpenFrame 環境設定ガイド』を参照してください。
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の使用方法については、[sect_etc_utility_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 環境設定ガイド』を参照してください。 |
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の使用方法については、[sect_etc_utility_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 環境設定ガイド』を参照してください。 |
5.5. 戻りコード
以下は、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データセットを割り当てるために使用されます。
QUIESCEコマンドは、システムの構造上DSNUTILBでのサポートに制約があるため、ユーザーが作成したモジュールを介して呼び出されます。 |
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 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 |
アンロード対象の表名を指定します。アンロードするためのフィールドを指定する場合は、フィールドの名前、タイプ、長さを指定します。
|
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 ==============================================================================
-
QUIESCEを処理するためのモジュールを指定
QUIESCEコマンドは、ユーザー指定のモジュールを呼び出す方法で実行されます。QUIESCEの処理を実行したモジュールのパスを、OpenFrame環境設定のdbutilサブジェクトに指定します。
$ ofconfig list -n NODE1 -s dbutil -sec DSNUTILU ============================================================================== SUBJECT | SECTION | KEY | VALUE ============================================================================== dbutil | DSNUTILU | PATH | ${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の指定が正しくない場合
-
データベース情報を指定しなかった場合
-
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の実行中にエラーが発生した場合
-