17.10 - 使用上の注意 - FastExport

Teradata® FastExportリファレンス

Product
FastExport
Release Number
17.10
Release Date
2021年6月
Content Type
プログラミング リファレンス
Publication ID
B035-2410-061K-JPN
Language
日本語 (日本)

次の表では、EXPORTコマンドを使用する場合に考慮すべき事柄について説明します。

EXPORTコマンド使用上の注意
対象 使用上の注意
出力先ファイルの属性 メインフレーム接続クライアント システムでは、宛先ファイルの属性およびそこに書き込まれるエクスポート データ レコードの互換性を維持する必要があります。(ワークステーション接続UNIXおよびWindowsクライアント システムでは、互換性が問題となりません。)
メインフレーム接続のz/OSシステムでは、属性は以下の条件によって異なります。
  • ファイルの後処理 - FastExportユーティリティの実行が再始動操作であれば、出力先ファイルの後処理はOLDになります。
  • 応答モード - すべての応答モードで、属性に任意のRECFMを指定できます。ただし、一般にはRECFM=FB(固定長ブロック)またはRECFM=VB(可変長ブロック)が使用されます。
  • レコード長とブロック サイズ - このセクションの表「レコード長とブロック サイズの指定」に示すように示した指定フォーマットを受け入れる必要があります。

メインフレーム接続されたz/OS環境におけるデータベース データ タイプについては、このセクションの表「データ型の説明(メインフレーム接続のクライアント システム)」を参照してください。この情報を使えば、出力先ファイルの属性に適切な値を割り当てるために、エクスポート済みデータ行のサイズを計算することができます。

ブロック サイズの指定 データベースからクライアント システムへデータを転送するために使用されているセッションごとに、2つの64 KBのバッファが割り当てられます。

割り振る必要がある最小ブロック サイズは1つで、データベースが戻す最大可能パーセルを保持します。

指定ブロック サイズが最大可能パーセルを保持できるほどの大きさでなければ、データベースはSELECT文にエラーを返し、ユーティリティは異常終了します。

パーセル サイズの詳細な説明については、次の資料を参照してください。
  • Teradata® Call-Level Interface Version 2リファレンス - メインフレーム接続システム, B035-2417
  • Teradata® Call-Level Interface Version 2リファレンス - ワークステーション接続システム, B035-2418
コマンドの配置と頻度 FastExportジョブでは、エクスポート タスクごとに1つのEXPORTコマンドが必要です。このコマンドは、エクスポート タスクを指定するBEGIN EXPORTコマンドおよびEND EXPORTコマンドの間の任意の位置に挿入してください。
MODEの指定 INDICATORおよびRECORDモードの両方を指定すると、次のような可変長レコードを持つクライアント内部フォーマットでデータが戻されます。
  • 各レコードに、SELECT文で指定されたすべての列の値がある。
  • 可変長列の前に、列データの長さを示す2バイト制御値が指定される。
  • ヌル列に、列データ型に対する適切な値がある。

ただし、インディケータ モードで戻されるデータ レコードには、ヌル値を持つ列を識別するビット フラグのセットがあります。

これらのモードの詳細な説明については、次の資料を参照してください。
  • Teradata® Call-Level Interface Version 2リファレンス - メインフレーム接続システム, B035-2417
  • Teradata® Call-Level Interface Version 2リファレンス - ワークステーション接続システム, B035-2418
複数のSELECT文 エクスポート タスクが複数のSELECT文を指定した場合、エクスポート データは文の順番で戻されます。文1の応答データすべての後に文2の応答データが続くといった具合です。

同じSELECT文が複数回実行されると、SELECT文の2番目の反復がデータベースに送られる前に、最初の反復結果が戻されて処理されます。

SELECT文の処理 エクスポート タスクが複数のSELECT文を指定した場合、すべての文の応答データは文の順番に従って戻されます。つまり、最初が文1の応答データ、次に文2のデータ、というように続きます。

単一のSELECT文が複数回実行されると、2番目のSELECT文がデータベースに送られる前に、最初の反復結果が戻されて処理されます。

z/OS fileidの使用上の注意 DDNAMEは、以下の場合を除いて、Teradata SQL列名と同じ構成規則に従う必要があります。
  • 「アット」(@)はアルファベット文字として使用できます。
  • 下線(_)は使用できない。

DDNAMEは、外部システムに適用可能な規則に従う必要があります。シーケンシャル(VSAM)データ セットを参照できます。

DDNAMEが磁気テープ上のデータ ソースを表わす場合、オペレーティング システムのサポートに応じて、テープはラベル付きとラベルなしのどちらかになります。

次の表で、レコード長とブロック サイズの仕様について説明します。

レコード長とブロック サイズの指定
RECFM 説明
FB LRECLは、返されるデータの長さと正確に等しくなければなりません。LRECLはこの長さを超えてはなりません。

RECFM = FBに対して、BLKSIZEもLRECLの倍数でなければなりません。倍数でない場合、レコードは切り捨てられ、データの整合性に問題が発生する、またはFastExportが異常終了する可能性があります。

明示的にBLKSIZEをJCLに追加することで、無効なデフォルトBLKSIZEが使用される可能性が回避されます。

VB 論理レコード長(LRECL)とブロック サイズ(BLKSIZE)のパラメータには、予想される最大レコードを収容できるだけの大きさが必要です。
VBSまたはVS 論理レコードの最大長は、指定されたデータセットの物理長を超えても構いません。

ブロック化されているかどうかに関係なく、スパン レコードは、十分に確立された単純なプロトコルを使用し、必要に応じて複数のブロックにまたがってレコードを分割またはセグメント化します。

個々のセグメントがブロックの長さを超えることはありませんが、そのセグメントが属する論理レコードは複数のブロック、さらにはボリュームにまたがることができます。したがって、スパン レコードは、長さが32Kバイトのブロック サイズを超える(最大64Kバイトまで)行を持つ出力ファイルを作成する唯一の方法です。

JCLで指定できる最大LRECLは32,760ですが、スパン レコードの実際の長さに関する制限は事実上ありません。

この最大LRECL(例: 約32 Kより大)を超えるレコードで構成されている出力に対しては、単純にLRECL=Xを指定します。VBSまたはVSレコードフォーマットを使用している時は、このようなレコードを作成するために、特別なJCLを必要としません。

相手デバイスまたは媒体の性能特性に応じたBLKSIZEを常に指定することです。これは通常、可能な最大のBLKSIZEを指定するという意味です。

場合によっては、次のようなときにRECFM=VBSを指定すると、FastExportの性能を向上できることがあります。
  • 最大行の長さが32 Kバイトよりかなり小さいとき
  • 各行のサイズが大きく異なるとき

スパン/ブロック化フォーマットによってデータ パックは最大となります。同数の論理レコードを搬送するのに必要なブロック数が少なくて済むので、FastExportジョブの実行は速くなります。

  例えば、ブロック サイズが32,756バイトであると想定します。
  • RECFM=VBを使うと、20,000バイトのレコードと4,000バイトのレコードを1つの新規作成ブロックにパックすることができます。しかし、次のレコードが12,000バイトの長さであると、明らかにブロック長を超えるので、次のブロックにパックする必要があります。
  • しかしRECFM=VBSを使うと、12,000バイトのレコードをパックする場合に、最初の8,740バイトを元のブロックにパックし、残りの3,260バイトを次のブロックにパックするようにこのレコードをセグメント化できます。ただし、ブロックにつき1つの4バイト ブロック記述子ワードBDWと、セグメントにつき1つの4バイト セグメント記述子ワードSDWがあり、1ブロック内にセグメント全体が含まれる必要があります。
VBSまたはVS以外のRECFM = 指定を使用して32 Kバイトより大きい行をエクスポートすると、FastExportジョブは失敗し、1776エラーが戻されます。

また、すべてのアプリケーションがスパン レコードを読み取れるわけではありません。これらのフォーマットを指定する前には、常に、使用中のアプリケーションがスパン レコードをサポートしていることを確認する必要があります。

例: 以下のDD文は、OUTPUTという名前のFastExport相手表からのスパン レコードを要求します。

//OUTPUT  DD DSN=ASG.FEXP.Z,DISP=(NEW,CATLG),
//     DCB=(RECFM=VBS,LRECL=32760,BLKSIZE=32756,DSORG=PS),
//     UNIT=SYSDA,SPACE=(CYL,(100,20)) 

次の表では、デフォルトのメインフレーム接続のクライアント システムに関するデータ型について説明します。

データ型の説明(メインフレーム接続のクライアント システム)
データ型 出力長(バイト) 説明
BYTE(n) nバイト nバイト
BYTEINT 1バイト ビットの符号付き2進数値
CHAR(n)

CHARS(n)

CHARACTERS(n)

nバイト nのEBCDIC文字
DATE 4バイト 32ビット整数(データベースの内部データ書式)

詳細については、Teradata Vantage™ - データベース設計, B035-1094およびTeradata Vantage™ - データ型およびリテラル, B035-1143を参照してください。

DATEFORMコマンドを使ってANSIDATEをDATEデータ型として指定すると、FastExportユーティリティは最初に各DATEデータ型をCHAR(10)フィールドに変換します。
DECIMALx

DECIMAL(x)

DECIMAL(x,y)

(x+1) / 2バイト x、パック10進数および符号
FLOAT

FLOATING

8バイト 64ビット(倍精度)浮動小数点
GEOSPATIAL DATA 最大64000 FastExportではLOBで表現された地理空間データはサポートされません。
INTEGER 4バイト 32ビットの符号付き2進数値
LONG VARCHAR m+2文字(ここで、 mn) = VARCHAR(32000)
固定長Periodデータ型:

PERIOD(DATE)

PERIOD(TIME(n))

PERIOD(TIME(n) WITH TIME ZONE)

最大=8バイト

最大=12バイト

最大=16バイト

精度は0<n<6の範囲で指定する必要があります。

精度 = 0 (n/a)

精度=n

精度=n

詳細については、Teradata Vantage™ - データベース設計, B035-1094およびTeradata Vantage™ - データ型およびリテラル, B035-1143を参照してください。

可変長Periodデータ型:

PERIOD(TIMESTAMP(n))

PERIOD(TIMESTAMP(n) WITH TIME ZONE)

最大=20バイト

最大=24バイト

精度は0<n<6の範囲で指定する必要があります。

精度=n

精度=n

詳細については、Teradata Vantage™ - データベース設計, B035-1094およびTeradata Vantage™ - データ型およびリテラル, B035-1143を参照してください。

SMALLINT 2バイト 16ビットの符号付き2進数値
VARBYTE(n) m+2バイト(ここで、mn) 16ビット整数、カウントm、その後にmバイトのデータが続く
VARCHAR(n) m+2バイト(ここで、mn) 16ビット整数、カウントm、その後にmのEBCDIC文字が続く

詳細については、 Teradata Vantage™ - データ型およびリテラル, B035-1143を参照してください。