Teradata TPumpデータベース オブジェクトの保護および配置 - Parallel Data Pump

Teradata® Parallel Data Pumpリファレンス

Product
Parallel Data Pump
Release Number
17.10
Published
2021年6月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/oqw1608578437373.ditamap
dita:ditavalPath
ja-JP/oqw1608578437373.ditaval
dita:id
B035-3021
Product Category
Teradata Tools and Utilities

回復プロセスでは再始動ログ テーブルが重要な働きをします。万一、再始動ログ テーブルが失なわれると、中断されたTeradata TPumpジョブを回復する手段がなくなります。

再始動ログ テーブルに加えて、Teradata TPumpは1つのエラー テーブルと多数のマクロを作成します(各マクロは、現行のIMPORT内に含まれる1つのDML SQL文に対応します)。これらのデータベース オブジェクトが失なわれた場合、これを再作成することは可能です。ただし、再作成には手間がかかるため、予防措置をとる方がはるかに効率的です。

Teradata TPumpはデータベース オブジェクトに特別なロックを掛けません。これらのオブジェクトの損失を防ぐためには、管理者がセキュリティ上の予防措置をとっておくことが重要です。

万一オブジェクトが失なわれてしまった場合には、管理者は以下の情報を参照してこれらを再作成できます。

Teradata TPumpマクロは、再始動ログ テーブルと同じデータベースに収められています。

マクロの名前は次の規則に従って付けられています。

Jobname_DDD_SSS
次のような場合に当てはまります。
  • Jobnameはジョブ名です。特に明示的に指定されなければ、デフォルトとして MYYYYMMDD_HHMMSS_LLLLLになります。
  • LLLLLは、.LOGONコマンドからデータベースによって返されるログオン シーケンス番号の下位5桁です。
  • DDDは、.DMLの順序(序数)番号です。1つのジョブ内の後続するロード(.BEGIN LOAD)のいずれかがこの値をリセットすることはなく、増え続けます。
  • SSSは、SQL文の.DMLグループ内の順序(序数)番号です。

したがって、スクリプトの一部が次のようになっている場合、

.LOGTABLE LT_SIGH;
.LOGON TDPID/CME,CME;
...
.LAYOUT LAY1A
...
.DML LABEL TAB1PART1;

INSERT into tab1 values (:F0,:F1,:F2,:F3);
.DML LABEL TAB2PART1;
INSERT into tab2 values (:F0,:F1,:F2,:F3);
...
.IMPORT INFILE TPDAT
               LAYOUT LAY1A
               APPLY TAB1PART1
               APPLY TAB2PART1;

ジョブ名がデフォルトであると仮定すると、マクロは次のような名前になります。

M20020530_171209_06222_001_001 and M20020530_171209_06222_002_001.

Teradata TPumpマクロの内容は、スクリプトから直接取得され、LAYOUTからのパラメータ句と、スクリプトに指定されている実際の文で構成されます。上の例を引き続き使うと、文に結び付けられるLAYOUTが以下のような場合、

.LAYOUT LAY1A;
.FIELD   F0 * integer key;
.FIELD   F1 * integer;
.FIELD   F2 * integer;
.FILLER  FX * integer;
.FIELD   F3 * char(38);

マクロは次のように作成されます。

CREATE MACRO CME.M20020530_171209_06222_001_001 (
F0 (INTEGER), F1 (INTEGER), F2 (INTEGER), F3 (CHAR(38))
) AS (INSERT INTO TAB1 VALUES(:F0, :F1, :F2, :F3);
);
CREATE MACRO CME.M20020530_171209_06222_002_001 (
F0 (INTEGER), F1 (INTEGER), F2 (INTEGER), F3 (CHAR(38))
) AS ( INSERT INTO TAB2 VALUES(:F0, :F1, :F2, :F3);
);

パラメータ リストの中の実際のパラメータ名は重要ではありません。重要なのは、マクロの中で指定するパラメータの型が、LAYOUTで指定されているパラメータの型と厳密に同じ順序で指定されることです。また、パラメータ リストにFILLERフィールドを含めないことも重要です。それらはTeradata TPumpによって削除されるからです。

エラー テーブルの名前は、特に明示的に指定されない場合、次のようになります。

<JobName>_nnn_ET

nnnは、ロード順序番号です。

エラー テーブル用のデータベースがスクリプト内で明示されていない場合は、DATABASEコマンドが発行されていない限り、エラー テーブルはTeradata TPumpユーザー ログオンに関連したデータベース内に置かれます。

上の例を引き続き使うと、デフォルトのエラー テーブルを指定する場合、テーブルの作成コマンドは次のようになります。

CREATE SET TABLE M20020530_171209_06222_001_ET,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL
     (
      ImportSeq BYTEINT,
      DMLSeq BYTEINT,
      SMTSeq BYTEINT,
      ApplySeq BYTEINT,
      sourceseq INTEGER,
      DataSeq BYTEINT,
      ErrorCode INTEGER,
      ErrorMsg VARCHAR(255) CHARACTER SET UNICODE NOT CASESPECIFIC,
      ErrorField SMALLINT,
      HostData VARBYTE(63677))
UNIQUE PRIMARY INDEX ( ImportSeq ,DMLSeq ,SMTSeq ,ApplySeq ,sourceseq ,
DataSeq );