RETRY - Basic Teradata Query

Basic Teradata Queryリファレンス

Product
Basic Teradata Query
Release Number
16.20
Published
2018年4月
Language
日本語
Last Update
2019-07-03
dita:mapPath
ja-JP/moy1512703123963.ditamap
dita:ditavalPath
ja-JP/moy1512703123963.ditaval
dita:id
B035-2414
Product Category
Teradata Tools and Utilities

目的

この制御によって、ユーザーは、特定のエラー条件の下で失敗したリクエストを再送信するかどうかを指定できます。

RETRYコマンドを使用しない場合、値はデフォルトでONになります。 パラメータなしで使用した場合のRETRYコマンドは、ONに設定されます。

構文



使用上の注意

ONに設定すると、以下の失敗コードが検出されたときに、RETRYコマンドが作動します。

  • 2631 – %VSTRのため、トランザクションがアボートされた。
  • 2639 – 同時並行トランザクションが多すぎる。
  • 2641 - %DBID.%TVMIDが再構築された。再度実行すること。
  • 2825 - DBCの再始動後、最後の要求に対するレコードがない。
  • 2828 - システム回復時に、要求がロールバックされた。
  • 3111 - ディスパッチャがトランザクションをタイムアウト処理した。
  • 3120 - DBSの回復のため、要求がアボートされた。
  • 3127 - キュー テーブル マネージャとロックが競合しているためトランザクションがアボートされた。
  • 3128 - 文の消費の上限を超えたためにトランザクションがアボートされた。
  • 3178 - キュー テーブル キャッシュがいっぱいである。
  • 3319 - TDWM制御コマンドがタイムアウトした。
  • 3329 - クエリー バンドが移行状態であるため、再実行すること。
  • 3598 - データベースで変更要求が競合したため、再実行すること。
  • 3603 - テーブルで変更要求が競合したため、再実行すること。
  • 3897 - Teradataシステムが再始動されたため要求がアボートされた。 再度、実行すること。
  • 5880 - ストアド プロシージャで変更要求が競合したため、再実行すること。
  • 5991 - プランの生成時にエラーが発生したため、再実行すること。
  • 7592 - スペース アカウンティング キャッシュが消去できないエントリでいっぱいである。
  • 7618 - %DBID.%TVMIDに対するストアド プロシージャの実行リクエストがタイムアウトした。
  • 7676 - ストアド プロシージャ キャッシュ内に十分なメモリがない。
  • 8024 - すべての仮想回路が現在使用中である。
  • 8086 - ノード上のすべての仮想回路が使用中である。
  • 9728 - 現在、テーブル%DBID.%TVMIDに対するロード処理が進行中であるため、後で再試行すること。

上記のエラー条件が発生した場合、またはBTEQジョブの実行中にAPのリセット条件が生じた場合には、次のようなことが行なわれます。

  • 接続が切れたセッションの判断
  • 該当するエラー メッセージの出力
  • 切断されたセッションの再接続
  • 処理中であった要求の再実行

エラー メッセージが出力されることと応答が遅れることを除いて、影響を受けた要求が通常の方法で処理されるので、ユーザーが介入することはありません。

RETRYがOFFに設定されている場合、BTEQはセッションの再接続を試行しません。

エラー2631 – %VSTRのためにトランザクションが中止されました。RETRYコマンド オプションがOFFに設定されている場合は、再度マップする必要が生じる可能性があります。BTEQは、デフォルトでエラー2631にゼロのエラー レベルを割り当てます。デッドロック後に再試行した要求が失敗した場合、最終BTEQエラー レベルが上がります。

ERRORLEVELコマンドを使用して、デフォルトの重大度(エラー2631の場合、ゼロなど)を再度マップできます。 ERRORMAPコマンドを使用して、現在エラー2631に割り当てられているエラー レベルを確認できます。

REPEATコマンドまたは=コマンドの処理中に繰り返し生じることがあるその他のエラー(例えば、エラー コード3807 - データベースが存在しない)に対して、RETRYコマンドの動作はありません。

RETRYコマンドのオプションをOFFに設定し、EXPORTコマンドのCLOSEオプションを指定していたときにTeradata Databaseが再始動された場合には、実行されていた問合わせ要求は再実行されません。 その場合、出力ファイルは空であるか、返された行のいくつかしか含まれていないため、問合わせ結果が失なわれることになります。

遅延あるいは非遅延LDOを含むエクスポート中に再試行可能なエラーが発生し、RETRYがONに設定されている場合、LDOファイルの再上書き問題で、BTEQは現在のSQLリクエストを再実行しません。代わりに、BTEQは自動的に終了します。

ワークステーション接続システムの場合に、複数セッションでRETRYコマンドのオプションがONになっていて、USING変更子用のデータをインポート ファイルから入力する場合には、データはバッファに保存されます。 このことは、システム メモリの要件(特にPC)に影響します。 必要なメモリ量は、セッション数×データ量によって計算することができます。 例えば、行の最大サイズが4,000バイトで、使用しているセッション数が10のときは、40,000バイトが余分に必要です。 PCの場合には、複数セッションのときにメモリ不足の状態が起きないようにするために、RETRYコマンドのオプションをOFFに設定するようにします。

RETRYコマンド オプションをOFFに設定すると、BTEQを退出するかもう一度RETRYコマンドでONにしない限りOFFのままです。

RETRYコマンドは、Teradata SQLマクロで使用できます。

例1 – RETRY

RETRYコマンドを無効にするには、次のように入力します。

.SET RETRY OFF

例2 – マクロによって出力されるRETRY

Teradata SQLマクロでは、使用例1のRETRYコマンドは次のようになります。

ECHO '.SET RETRY OFF';