ヘッダーをスキップ
Oracle® GoldenGate Application Adapters Oracle GoldenGateアダプタの管理
12c (12.1.2.1.1)
E67383-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

8 フラット・ファイルのプロパティ

この章では、Oracle GoldenGateフラット・ファイル・アダプタのプロパティ・ファイルで構成可能なプロパティについて説明します。

この章の内容は次のとおりです。

8.1 ユーザー・イグジット・プロパティ

ユーザー・イグジットのプロパティには、ロギングを制御するプロパティ、名前やトランザクションの処理を制御する一般プロパティなどがあります。

8.1.1 ロギング・プロパティ

ロギングは次のプロパティによって制御されます。

8.1.1.1 goldengate.log.logname

ログ・ファイル名の接頭辞を指定します。これは有効なASCII文字列である必要があります。ログ・ファイル名には、yyyymmdd形式の現在の日付と.log拡張子が付加されます。

次の例では、writer_20140803.logという名前のログ・ファイルが2014年8月3日に作成されます。

goldengate.log.logname=writer 

8.1.1.2 goldengate.log.level

すべてのモジュールを対象とする全体的なログ・レベルを指定します。構文は次のとおりです。

goldengate.log.level=ERROR | WARN | INFO| DEBUG 

ログ・レベルは次のように定義されています。

  • ERROR - エラーが発生した場合にのみメッセージを書き込ます。

  • WARN - エラーおよび警告メッセージを書き込みます。

  • INFO - エラー、警告および情報メッセージを書き込みます。

  • DEBUG - デバッグ・メッセージを含むすべてのメッセージを書き込みます。

デフォルトのロギング・レベルはINFOです。この場合、メッセージは、起動時、停止時および操作中に定期的に生成されます。たとえば、次の例ではグローバル・ロギング・レベルをINFOに設定します。

goldengate.log.level=INFO 

注意:

レベルをDEBUGに切り替えると、メッセージが大量に生成され、パフォーマンスに影響する場合があります。

8.1.1.3 goldengate.log.tostdout

標準出力にログ情報が書き込まれるかどうかを制御します。この設定は、コマンドラインから起動されたVAMとExtractプロセスが連携している場合、またはstdoutがレポート・ファイルに設定されているオペレーティング・システムでExtractプロセスが実行されている場合に有用です。ただし、Oracle GoldenGateプロセスは通常バックグラウンド・プロセスとして実行されます。構文は次のとおりです。

goldengate.log.tostdout={true | false}

デフォルトは、falseです。

8.1.1.4 goldengate.log.tofile

指定されたログ・ファイルにログ情報が書き込まれるかどうかを制御します。構文は次のとおりです。

goldengate.log.tofile={true | false}

デフォルトは、falseです。trueに設定されている場合、ログ出力は指定されたログ・ファイルに書き込まれます。

8.1.2 一般プロパティ

一般プロパティは、ファイル・ライター名、チェックポイント、トランザクションの処理、タイムスタンプの表示および列とオブジェクト名に使用される形式を制御します。

8.1.2.1 goldengate.flatfilewriter.writers

ユーザー・イグジット内で実行されるライターの名前を指定します。複数の文字列値を入力すると、同一ユーザー・イグジット内で複数の名前のライターを実行できます。次に例を示します。

goldengate.flatfilewriter.writers=dsvwriter,diffswriter,binwriter 

等号記号またはカンマの前後に空白がないようにしてください。ファイル内の他のすべてのプロパティにいずれかのライター名を接頭辞として付けます。

8.1.2.2 goldengate.userexit.buffertxs

出力の前にトランザクション全体が読み取られるかどうかを制御します。trueに設定されている場合、出力の前にトランザクション全体が証跡から読み取られます。次に例を示します。

goldengate.userexit.buffertxs=true 

デフォルトは、falseです。これをtrueに設定することは、numopsメタデータ列が使用される場合にのみ有用です。現在、numops値を算出する唯一の方法は、トランザクションをバッファし、一度に1つのトランザクションを出力することです。

8.1.2.3 goldengate.userexit.chkptprefix

チェックポイント・ファイル名に追加される接頭辞の文字列値を指定します。複数のデータ・ポンプを実行する場合、チェックポイント接頭辞をプロセスの名前に設定します。次に例を示します。

goldengate.userexit.chkptprefix=pump1_ 

8.1.2.4 goldengate.userexit.chkpt.ontxend

ファイルをロールオーバーする必要があるかをトランザクションごとにチェックするか、Extractプロセスのチェックポイント時にのみチェックするかを制御します。trueに設定されている場合、アダプタは、トランザクションの処理後、ファイルをロールオーバーする必要があるかをチェックします。必要がある場合、ロールオーバーが実行され、チェックポイント・ファイルが更新されます。これは、出力ファイルの内容を厳格に管理する必要がある場合に有用です。たとえば、午前0時にロールオーバーする前に午前0時までのすべてのデータをファイルに書き込む必要がある場合、トランザクションごとにチェックが行われることが重要です。次に例を示します。

goldengate.userexit.chkpt.ontxend=true 

デフォルトは、falseです。falseに設定されている場合、アダプタは、Extractのチェックポイント時(デフォルトでは10秒ごと)にロールオーバーについてチェックします。

8.1.2.5 goldengate.userexit.datetime.removecolon

日付と時間の間にコロンが書き込まれるかどうかを制御します。falseに設定されている場合、日付と時間の列値は、Oracle GoldenGate証跡のデフォルト形式YYYY-MM-DD:HH:MI:SS.FFFFで出力ファイルに書き込まれます。trueに設定されている場合、日付と時間の間にコロンがないYYYY-MM-DD HH:MI:SS.FFFに形式が変更されます。デフォルトは、falseです。

goldengate.userexit.datetime.removecolon=true 

8.1.2.6 goldengate.userexit.timestamp

レコードのタイムスタンプをローカル時間で出力するか、協定世界時(UTC)で出力するかを制御します。これがutcに設定されていない場合、レコードのタイムスタンプはローカル・タイムゾーンを使用してローカル時間で出力されます。デフォルトは、ローカル時間です。

goldengate.userexit.timestamp=utc 

8.1.2.7 goldengate.userexit.datetime.maxlen

日時列の出力最大長を制御します。これを整数値に設定すると、列値がその長さに切り捨てられます。日時の形式はYYYY-MM-DD:HH:MI:SS.F(9)のため、日時列の最大長は29文字です。

次に例を示します。

goldengate.userexit.datetime.maxlen=19 

goldengate.userexit.maxlen=19に設定すると、秒の小数部のない日時に切り捨てられます。goldengate.userexit.maxlen=10に設定すると、日付のみに切り捨てられます。デフォルトは、完全な日時列値を出力することです。

8.1.2.8 goldengate.userexit.utf8mode

列データ、表名、ファイル名および列名がUTF8文字セットで返されるかどうかを制御します。これがfalseに設定されている場合、すべてのデータはオペレーティング・システムの文字セットになります。デフォルトは、trueです。

構文は次のとおりです。

goldengate.userexit.utf8mode=true|false 

8.2 ファイル・ライター・プロパティ

ファイル・ライター・プロパティは、出力ファイルの形式およびファイルの書込み方法を制御します。

8.2.1 出力形式のプロパティ

次のプロパティは、値のデリミタ・タイプと列のグループ化を設定します。

8.2.1.1 writer.mode

出力形式がDSVかLDVかを制御します。

  • DSV - デリミタ区切りの値。次に例を示します。

POSITION|OPCODE|TIMESTAMP|COLVALA|COLVALB|. . . 

注意:

DSVはカンマ区切りの値(CSV)に限定されません。

  • LDV - 長さ区切りの値。次に例を示します。

    0109TIMESTAMPI302MY05TABLEP042000P03ETC 
    

注意:

長さはASCIIまたはバイナリです。一部のメタデータ列は固定長で(「メタデータ列」を参照)、この形式ではUnicodeマルチバイト・データがサポートされます。

次に例を示します。

writer.mode=dsv 
writer2.mode=ldv 

注意:

下位互換のために、dsvのかわりにcsvが、ldvのかわりにバイナリが許容されます。かわりのオプションを使用する場合、出力形式に違いはありません。

8.2.1.2 writer.groupcols

列名、ビフォア値およびアフター値をグループ化するかどうかを制御します。

構文は次のとおりです。

writer.groupcols=true|false 

デフォルトは、falseです。これによって、COL1COL2の次の例に示すように、名前、ビフォア値およびアフター値がセットとして一緒にリストされます。

"COL1", COL1_B4, COL1, "COL2", COL2_B4, COL2 

プロパティがtrueに設定されている場合、列は、すべての名前のセット、すべてのビフォア値のセットおよびすべてのアフター値のセットにグループ化されます。

"COL1", "COL2", COL1_B4, COL2_B4, COL1, COL2 

8.2.2 出力ファイルのプロパティ

次のプロパティは、ファイルの書込み方法、書込み先とその拡張子を制御します。これは、ライター・モードとデータの内容に依存しません。

8.2.2.1 writer.files.onepertable

データが複数のローリング・ファイル(入力データ内の表ごとに1つ)に分割されるか、すべてのデータが1つのローリング・ファイルに書き込まれるかを制御します。デフォルトは、trueです。

構文は次のとおりです。

writer.files.onepertable=true|false 

次の例では、writerファイル・ライターは表ごとに1つのファイルを作成し、writer2はすべてのデータを1つのファイルに書き込みます。

writer.files.onepertable=true 
writer2.files.onepertable=false 

8.2.2.2 writer.files.oneperopcode

挿入、更新、削除または主キー操作コードに基づいてデータが分割されるかどうか制御されます。

たとえば、次の設定では、挿入、更新、削除および主キーの更新に対して個別の出力ファイルが作成されます。

writer.files.oneperopcode=true 

デフォルトはfalseで、操作のタイプに関係なく、すべてのレコードが同一ファイルに出力されます。

このプロパティ以外にfiles.formatstringプロパティも変更し、%Oプレースホルダを受け入れる必要があります。files.oneperopcodeプロパティが設定されている場合、これは、ファイル名が作成される際に操作コードが書き込まれる位置を示します。そのプロパティが設定されている場合、デフォルトのファイル名にも操作コードが含まれます。

8.2.2.3 writer.files.prefix

データ・ファイルおよび制御ファイルの接頭辞として使用される値を指定します。このプロパティは、ライターが表ごとに1つのモード(files.onepertable=true)でない場合にのみ適用されます。データ・ファイルでは、property files.formatstringが使用されている場合、接頭辞は無視されます。

デフォルトでは、接頭辞は文字列outputに設定されます。data1という名前のファイルは、デフォルトでoutputdata1になります。次の例を使用すると、ファイル名はtest_data1になります。

writer.files.prefix=test_ 

8.2.2.4 writer.files.data.rootdir、writer.files.data.ext、writer.files.data.tmpext

すべてのデータ・ファイルの場所と拡張子を指定します。ロールオーバー前のファイルの拡張子はtmpextで、ロールオーバー後はextです。拡張子は.extのみである必要はありません。ファイル名の拡張子の前に文字を追加してデータ出力を区別できます。指定された出力ディレクトリが存在すること、Oracle GoldenGateプロセスを実行しているユーザーに、そのディレクトリへの適切な書込み権限があることを確認してください。次に例を示します。

# specify the root directory for outputting data files 
writer.files.data.rootdir=./out 

# determine the extension for data files when rolled over 
writer.files.data.ext=_data.dsv 

# determine the extension for data files before rolling over 
writer.files.data.tmpext=_data.dsv.temp 

8.2.2.5 writer.files.control.use、writer.files.control.rootdir、writer.files.control.ext

writer.files.control.useはtrueまたはfalseのブール値で、デフォルトはtrueです。その他はASCII値です。これらのプロパティによって、制御ファイルのユーザー、場所および拡張子が決まります。制御ファイルは、関係するデータ・ファイルと同じ名前の接頭辞を共有しますが、定義された拡張子を持ちます。デフォルトでは、files.control.ext.controlです。次に例を示します。

# specify whether or not to output a control file 
writer.files.control.use=true 

# specify the extension to use for control files 
writer.files.control.ext=_data.control 

# directory in which to place control files, defaults to data directory 
writer.files.control.rootdir=./out 

8.2.2.6 writer.files.control.delim.chars/code、writer.files.control.eof.chars/code

データ・デリミタまたは行末インジケータとして使用される値を文字または16進コードで指定します。デリミタのデフォルトはカンマ(,)です。デフォルトの新規行トリガーは、プラットフォームで有効なnewline文字です。

たとえば、カンマをデータ・デリミタとしてオーバーライドするには、次のようにします。

writer.files.control.delim.chars=# 

たとえば、新規行インジケータを設定するには、次のようにします。

writer.files.control.eol.chars=\n 

8.2.2.7 writer.files.formatstring

データ・ファイルのファイル名の作成時に使用されるファイル名フォーマット文字列を指定します。フォーマット文字列はfiles.prefixプロパティをオーバーライドします。このファイル名フォーマット文字列の構文は、次のプレースホルダがファイル名に追加可能な点以外、標準のCのフォーマットの構文と似ています。

  • %c = catalog

  • %s = schema

  • %t = table

  • %n = seqno

  • %d = timestamp

  • %o = opcode

seqnoの形式を指定できます。たとえば、%05nは、5桁が表示され、0でパディングされます。seqnoは0から始まり、ファイルがロールオーバーするたびに1ずつ増分されます。long intとして格納されるため、最大値はプラットフォームによって異なります。たとえば、64ビット・マシンの場合、最大値は2^64-1です。

これらのプレースホルダは、ユーザーが指定するテキストと組み合せて任意の順序で使用できます。次に例を示します。

writer.files.formatstring=myext_%d_%010n_%s_% 

8.2.2.8 writer.files.data.bom.code

ファイルの先頭に書き込まれるバイト順マーカー(BOM)である16進数の値を指定します。BOMがファイル内のデータと合致していることを確認する必要があります。16進値が指定されていない場合、マーカーは書き込まれません。

次の例では、すべての出力ファイルの最初のバイトとしてUTF8 BOM efbbfが書き込まれます。

writer.files.data.bom.code=efbbbf 

8.2.2.9 writer.files.includeprocessname

Extractプロセスの名前がファイル名の一部として含められるかどうかを制御します。デフォルトは、falseです。

構文は次のとおりです。

writer.files.includeprocessname=true|false 

8.2.2.10 writer.files.useownerfiles

ファイルを所有するExtractプロセスを識別するための隠しファイルが作成されるかどうかを制御します。これを使用して、異なるOracle GoldenGateインストールからファイルが上書きされないようにすることができます。デフォルトは、falseです。

構文は次のとおりです。

writer.files.useownerfiles=true|false 

8.2.3 ファイル・ロールオーバー・プロパティ

次のプロパティによって、ファイルのロールオーバーのポリシーが決まります。

8.2.3.1 writer.files.data.rollover.time

最初のレコードがファイルに書き込まれてからファイルがロールオーバーされるまでの経過時間の最大秒数を指定します。次に例を示します。

# number of seconds before rolling over 
writer.files.data.rollover.time=10 

8.2.3.2 writer.files.data.rollover.size

ファイルがロールオーバーされるまでにファイルに書き込まれる最小KB数を指定します。

この例では、最小値を10,000KBに設定します。

# min file size in KB before rolling over 
writer.files.data.rollover.size=10000 

8.2.3.3 writer.files.data.norecords.timeout

データがファイルに書き込まれてからファイルがロールオーバーされるまで待機する経過時間の最大秒数を指定します。デフォルトは120秒です。

この例では、タイムアウト間隔を10秒に設定します。

# roll over in case no records for a period of time 
writer.files.data.norecords.timeout=10 

8.2.3.4 writer.files.rolloveronshutdown

Extractプロセスの停止時のロールオーバーのポリシーを制御します。この値がfalseの場合、空の一時ファイルはすべて削除されますが、データが含まれたファイルは一時ファイルのまま残されます。このプロパティがtrueの場合、空でない一時ファイルはすべて、ロールされたファイル名にロールオーバーされ、チェックポイントが書き込まれて、空の一時ファイルが削除されます。次に例を示します。

# roll over non-empty and delete all empty files when Extract stops 
writer.files.rolloveronshutdown=true  

注意:

時間またはサイズ、あるいはその両方を使用できます。両方を使用する場合、先に達した方でロールオーバーが発生します。タイムアウト間隔によって、処理されるレコードがない場合でも、データが含まれているファイルはロールオーバーされることが保証されます。時間もサイズも指定されていない場合、最大サイズのデフォルトである1MBを超えると、ファイルはロールオーバーされます。

8.2.3.5 writer.files.data.rollover.timetype

ファイル・ロールオーバーのトリガーにシステム時間ではなく、ユリウスのコミット・タイムスタンプを使用するかどうかを制御します。構文は次のとおりです。

writer.files.data.rollover.timetype=commit|system 

次の例では、ソース証跡レコードのコミット・タイムスタンプを使用してロールオーバーを決定します。

writer.files.data.rollover.timetype=commit 

デフォルトでは、システム時間を使用していつファイルをロールオーバーするかを決定します。

8.2.3.6 writer.files.data.rollover.multiple

最初にレコードを受信した時間に関係なく、すべてのファイルを同時にロールオーバーするかどうかを制御します。通常、ファイルは時間またはサイズのプロパティに基づいて個々にロールオーバーされます。時間はロールオーバー期間に基づくため、レコードが特定のファイルに最初に書き込まれた時間に依存します。場合によっては(特に、表ごとに1つのファイルにデータを出力する場合)、データが最初にファイルに書き込まれた時間に関係なく、現在開いているすべてのファイルを同時にロールオーバーすることがあります。

次の例では、すべてのファイルを同時にロールオーバーするようアダプタに指定します。

writer.files.data.rollover.multiple=true 

デフォルト値は、falseです。

8.2.3.7 writer.files.data.rollover.attime

アダプタがファイルをロールオーバーする時間を指定します。指定する時間を24時間形式(HH:MM)で入力します。1つの値の入力のみサポートされます。ワイルドカード(*)は、時間に対してのみサポートされます。構文は次のとおりです。

writer.files.data.rollover.attime=time_specifier 

次の例では、毎正時に新しいファイルにロールオーバーします。

writer.files.data.rollover.attime=*:00 

次の例では、毎時15分にロールオーバーします。

writer.files.data.rollover.attime=*:15 

writer.rollover.timetypeプロパティによって、使用される時間がシステム時間かコミット時間かが決まることに注意してください。

8.2.3.8 writer.writebuffer.size

書込みバッファ・チャンク・サイズを指定します。システム書込みコール数の削減に使用します。次に例を示します。

writer.writebuffer.size=36863 

8.2.4 データ内容のプロパティ

次のプロパティによって、データ・ファイルに書き込まれるデータが決まります。これらのプロパティは、出力データの形式に依存しません。

8.2.4.1 writer.rawchars

文字データを元のバイナリ形式のままにするか、ASCIIとして出力するかを制御します。デフォルトは、falseです。ASCIIに変換しないUnicodeマルチバイト・データが入力データに含まれている場合、このプロパティを設定します。次に例を示します。

# whether to output characters as ASCII or binary (for Unicode data) 
writer.rawchars=false 
writer2.rawchars=true 

8.2.4.2 writer.includebefores

データのビフォア・イメージとアフター・イメージの両方が更新操作の出力に含まれるかどうかを制御します。デフォルトは、falseです。これは、ビフォア・イメージが元のデータで提供されていて、getupdatebeforesが処理チェーンのすべてのOracle GoldenGateパラメータ・ファイルに含まれている場合にのみ関係します。次に例を示します。

# whether to output update before images 
writer.includebefores=true 

これによって、. . ."VAL_BEFORE_1","VAL_1","VAL_BEFORE_2","VAL_2". . .が生成されます。

8.2.4.3 writer.afterfirst

includebeforestrueに設定されている場合に、アフター・イメージがビフォア・イメージの前に書き込まれるかどうかを制御します。

次に例を示します。

writer.afterfirst=true 

このtrueの設定によって、アフター・イメージがビフォア・イメージの前にリストされます。

"VAL_1", "VAL_BEFORE_1", "VAL_2", "VAL_BEFORE_2" 

デフォルトは、falseです。この場合、アフター・イメージはビフォア・イメージの後に書き込まれます。

8.2.4.4 writer.includecolnames

列値の前に列名が出力されるかどうかを制御します。デフォルトは、falseです。次に例を示します。

# whether to output column names 
writer.includecolnames=true 

これによって、…"COL_1","VAL_1","COL_2","VAL_2"…が生成されます。

8.2.4.5 writer.omitvalues

出力ファイルで列値が省略されるかどうかを制御します。デフォルトは、falseです。次に例を示します。

# whether to output column values 
writer.omitvalues=false 

includecolnamestrueに設定されている場合、これによって…"COL_1","COL_2"…が生成されます。

8.2.4.6 writer.diffsonly

すべての列が出力されるか、ビフォア・イメージがアフター・イメージと異なるもののみ出力されるかを制御します。デフォルトは、falseです。これは更新にのみ適用され、処理チェーンのすべてのOracle GoldenGateパラメータ・ファイルにGETUPDATEBEFORESが必要です。このプロパティは、includebeforesプロパティに依存しません。次に例を示します。

# whether to output only columns with differences between before and  
# after images (deletes and inserts have all available columns) 
writer.diffsonly=true 

これによって、. . ."VAL_1",,,"VAL_4",,,"VAL_7". . .が生成されます。

8.2.4.7 writer.omitplaceholders

欠落している列のデリミタ/長さが出力に含まれるかどうかを制御します。デフォルトは、falseです。これは、COMPRESSUPDATESまたはCOMPRESSDELETESフラグが処理チェーンのOracle GoldenGateパラメータ・ファイルに含まれていた場合の更新および削除に適用されます。この場合、値が欠落している場合があります。また、writer.diffsonlytrueの場合、差異のない値も欠落していることになります。次に例を示します。

# whether to skip record delimiters if columns are missing 
writer.omitplaceholders=true 

これによって、. . ."VAL_1",,,"VAL_4",,,"VAL_7". . .が次のように変更されます。

. . ."VAL_1","VAL_4","VAL_7". . .

8.2.4.8 メタデータ列

メタデータ列は、実際のレコード・データではなく、レコードに関するデータを含むオプションのExtract列です。これらの列は、出力レコードの先頭、すべての列値の前に書き込まれます。

8.2.4.9 有効なメタデータ列

有効なメタデータ列は次のとおりです。

  • position - 証跡内のレコードの一意の位置インジケータ。

  • opcode - 挿入、更新、削除、主キー更新の各レコードに対してそれぞれ、IUDK

  • txind - トランザクション内の通常のレコードの位置(0 - 先頭、1 - 中間、2 - 末尾、3 - 専用)。

  • txoppos - 0から始まるトランザクション内のレコードの位置。

  • catalog - 変更レコードのカタログ名。

  • schema - 変更レコードのスキーマ(所有者)名。

  • table - 変更レコードの表名。

  • schemaandtable - スキーマ名と表名がschema.tableと連結されます。

  • timestamp - レコードのコミット・タイムスタンプ。

  • @<token name> - Extractパラメータ・ファイルに定義されているトークン値。

  • $getenv - Oracle GoldenGateリファレンス・ガイドで説明されているGETENV値。たとえば、$GGHEADER.OPCODEです。

  • %COLNAME - データ列の値。

  • numops - 現在のトランザクションの操作の数。goldengate.userexit.buffertxstrueでない場合、この値は常に1です。

  • numcols - 出力される列の数。この値は、このメタデータ列が使用される時点までにメタデータ列として出力された列数を元のレコードの列数から引いた数に等しくなります。

  • "<value>" - 任意のリテラル値。

8.2.4.10 メタデータ列の使用

メタデータ列を使用する場合、検討の必要な事項があります。

  • opcodeおよびtxindに対するASCII値はオーバーライドできます。

  • LDVの場合、メタデータ列は可変または固定長です。

  • positionは、16進数または10進数で書き込まれます。

  • メタデータ列は内部の値でも、元のデータの列から読み取ることもできます。

  • リテラル値は、引用符で囲んで表します。リテラル値が指定される場合、その値は、指定されたメタデータ列の位置に適切な引用符ポリシーを使用して文字列として出力されます。

  • 列値は%COLNAMEで表します。列値が指定されている場合、列値は、出力レコードの列値セクションではなくメタデータ・セクションに出力されます。これを使用して、出力される表に関係なく、列が常にレコード内の同じ位置に出力されるようにすることができます。

次のプロパティがメタデータ列に適用されます。

8.2.4.11 writer.metacols

出力するメタデータ列を出力順に指定します。ASCII値の複数の名前をカンマで区切って入力します。次に例を示します。

# which metacols to output and in which order 
writer.metacols=timestamp,opcode,txind,position,catalog,schema,table 

8.2.4.12 writer.metacols.metacol_name.fixedlen

metacol_nameで指定されるメタデータ列に対して書き込まれるデータの長さを決める整数値を指定します。実際のデータが固定長より長い場合、切り捨てられます。短い場合、出力はパディングされます。次に例を示します。

# timestamp is fixed length 
writer.metacols.timestamp.fixedlen=23 

これによって、2011-08-03 10:30:51.1234562011-08-03 10:30:51.123に切り捨てられます。

8.2.4.13 writer.metacols.metacol_name.column

メタデータ列のmetacol_name値を使用するかわりにデータ値の列名として使用するASCII値を指定します。設定される場合、この列名は、ユーザー・イグジットで処理されるすべての表に存在する必要があります。この列名を表ごとにオーバーライドする方法は現在ありません。たとえば、列の内部タイムスタンプをオーバーライドするには、次のようにします。

# timestamp is read from a column 
writer.metacols.timestamp.column=MY_TIMESTAMP_COL 

8.2.4.14 writer.metacols.token_name.novalue.chars | writer.metacols.token_name.novalue.code

token_nameの値が使用できない場合に使用される文字または16進コードを表す値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。デフォルト値は、NO VALUEです。次に例を示します。

writer.metacols.TKN-SCN.novalue.chars=0 

8.2.4.15 writer.metacols.metacol_name.fixedjustify

metacol_name列値の位置合せが左か右かを制御します。デフォルトでは、すべてのメタデータ列は左詰めです。たとえば、トークンを右詰めにするには、次のようにします。

writer.metacols.TKN-SCN.fixedjustify=right 

8.2.4.16 writer.metacols.metacol_name.fixedpadchar.chars | writer.metacols.metacol_name.fixedpadchar.code

メタデータ列のパディングに使用される文字またはコード値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。パディングに使用されるデフォルトの文字は空白(" ")です。次に例を示します。

writer.metacols.TKN-SCN.fixedpadchar.chars=0 

8.2.4.17 writer.metacols.opcode.insert.chars | writer.metacols.opcode.insert.code

挿入操作を識別するデフォルト文字Iのオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。

次の例では、挿入の場合INSを使用するようアダプタに指定します。

writer.metacols.opcode.insert.chars=INS

8.2.4.18 writer.metacols.opcode.update.chars | writer.metacols.opcode.update.code

更新操作を識別するデフォルト文字Uのオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。

次の例では、更新の場合UPDを使用するようアダプタに指定します。

writer.metacols.opcode.update.chars=UPD

8.2.4.19 writer.metacols.opcode.delete.chars | writer.metacols.opcode.delete.code

削除操作を識別するデフォルト文字Dのオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。

次の例では、削除の場合DELを使用するようアダプタに指定します。

writer.metacols.opcode.delete.chars=DEL

8.2.4.20 writer.metacols.opcode.updatepk.chars | writer.metacols.opcode.updatepk.code

主キーの更新操作を識別するデフォルト文字Kのオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。

次の例では、主キーの更新の場合PKUを使用するようアダプタに指定します。

writer.metacols.opcode.updatepk.chars=PKU

8.2.4.21 writer.metacols.txind.begin.chars | writer.metacols.txind.begin.code

トランザクションの先頭、中間、末尾か、あるいはトランザクション全体の操作かの識別に使用される値のオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。デフォルト値は、先頭の場合0です。

次の例では、0を文字Bでオーバーライドします。

# tx indicator values is overridden 
writer.metacols.txind.begin.chars=B 

8.2.4.22 writer.metacols.txind.middle.chars | writer.metacols.txind.middle.code

トランザクションの中間の識別に使用されるオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。デフォルト値は、中間の場合1です。

次の例では、1を文字Mでオーバーライドします。

# tx indicator value is overridden 
writer.metacols.txind.middle.chars=M 

8.2.4.23 writer.metacols.txind.end.chars | writer.metacols.txind.end.code

トランザクションの末尾の識別に使用されるオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。デフォルト値は、末尾の場合2です。

次の例では、2を文字Eでオーバーライドします。

# tx indicator value is overridden 
writer.metacols.txind.end.chars=E 

8.2.4.24 writer.metacols.txind.whole.chars | writer.metacols.txind.whole.code

トランザクション全体の操作の識別に使用されるオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。デフォルト値は、全体の場合3です。

次の例では、3を文字Wでオーバーライドします。

# tx indicator value is overridden 
writer.metacols.txind.whole.chars=W 

8.2.4.25 writer.metacols.position.format

positionメタデータ列の出力を10進形式で行うか、16進形式で行うかを制御します。16進の場合、通常16文字の値です。10進の場合、長さは変わります。これには、現在Extractプロセスが読み取るOracle GoldenGate証跡のシーケンス番号とRBAが含まれます。次に例を示します。

# position is in decimal format (seqno0000000rba) 
writer.metacols.position.format=dec 

seqnoが12、rbaが12345の場合、これによって120000012345が生成されます。

writer2.metacols.position.format=hex 

seqnoが12、rbaが12345の場合、これによって0000000c00003039が生成されます。

8.2.4.26 writer.metacols.colname.omit

COLNAME列をメタデータとして使用するが、出力しないかどうかを制御します。

次の例では、numcolsをメタデータとして使用するが、出力しないことを指定します。

writer.metacols.numcols.omit=true 

8.2.4.27 writer.begintx.metacols、writer.endtx.metacols

トランザクションの先頭と末尾をマークするために使用するメタデータ列を指定します。これらのマーカー・レコードは、トランザクションを構成する操作レコードの前後に出力ファイルに(行末デリミタ付きで)書き込まれます。

構文は次のとおりです。

writer.begintx.metacols=metacols_list 

次の例では、トランザクションの先頭を文字Bとトランザクション内の操作の数でマークすることを指定します。

writer.begintx.metacols="B",numops 

次の例では、トランザクションの末尾のマーカーは文字Eになります。

writer.endtx.metacols="E" 

既存のメタデータ列をトランザクションの先頭と末尾のマーカーに使用できます。レコードの列値または特定のプロパティ(表名など)をbegintx.metacolsに指定する場合、トランザクション内の最初のレコードの値が使用されます。endtx.metacolsの場合、最後のレコードの値が使用されます。

たとえば、トランザクションに次のレコードがあるとします。

rec=0,table=tabA,operation=insert,col1=val1,col2=val2 
rec=1,table=tabA,operation=update,col1=val3,col2=val4 
rec=2,table=tabA,operation=delete,col1=val5,col2=val6 
rec=3,table=tabB,operation=update,col1=val7,col2=val8 

プロパティは次のように設定されています。

writer.begintx.metacols="B",table,%col2 
writer.endtx.metacols="E",table,%col2 

トランザクションの先頭のマーカーは"B","tabA","val2"、末尾のマーカーは"E","tabB","val8"になります。

先頭または末尾のマーカーにnumopsを使用してトランザクション内の操作の数を出力する場合、次の設定も必要です。

goldengate.userexit.buffertxs=true 

注意:

このプロパティが設定されている場合、アダプタはトランザクションをメモリーにバッファするため、システムによって処理されるトランザクション内の操作の数を制限する必要があります。

8.2.5 DSV固有のプロパティ

DSVファイルのレコード形式は次のようになります。

{[METACOL][FD]}n{[COL][FD]}m[LD] 

説明:

  • METACOLは、任意の定義済メタデータ列です。

  • COLは、任意のデータ列です。

  • FDは、フィールド・デリミタです。

  • LDは、行デリミタです。

列値は、"2013-01-10 10:20:31","U","MY.TABLE", 2000,"DAVE"のように引用符で囲むことができます。

8.2.5.1 writer.dsv.nullindicator.chars | writer.dsv.nullindicator.code

デリミタ区切りファイルでNULL値に使用する文字を指定します。これらの値は、空の文字列のデフォルトであるNULL値をオーバーライドします。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

writer.dsv.nullindicator.chars=NULL 
writer.dsv.nullindicator.code=0a0a0a0a 

8.2.5.2 writer.dsv.fielddelim.chars | writer.dsv.fielddelim.code

フィールド・デリミタのオーバーライド値を指定します。デフォルトは、カンマ(,)です。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

# define the characters to use for field delimiters in DSV files 
writer.dsv.fielddelim.chars=| 

8.2.5.3 writer.dsv.linedelim.chars | writer.dsv.linedelim.code

行デリミタのオーバーライド値を指定します。デフォルトは、オペレーティング・システムに対応した改行文字です。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

# define the characters to use for line delimiters in DSV files 
writer.dsv.linedelim.chars=\n 

8.2.5.4 writer.dsv.quote.chars | writer.dsv.quote.code

引用符のオーバーライド値を指定します。デフォルトは、二重引用符(")です。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

# define the characters to use for quotes in DSV files 
writer.dsv.quotes.chars=' 

8.2.5.5 writer.dsv.quotes.policy

引用符を付けるためのポリシーを制御します。

構文は次のとおりです。

writer.dsv.quotes.policy={default|none|always|datatypes} 

説明:

  • default - 日付と文字にのみ引用符を付けます。

  • none - メタデータ列にも列値にも引用符を付けません。

  • always - すべてのメタデータ列と列値に引用符を付けます。

  • datatypes - 特定のデータ型にのみ引用符を付けます。

このプロパティが設定されている場合、dsv.quotealwaysプロパティはオーバーライドされます。dsv.quotes.datatypesプロパティを使用して引用符を付けるデータ型を指定します。

8.2.5.6 writer.dsv.quotes.datatypes

dsv.quotes.policydatatypeに設定されている場合に整数、文字、単精度浮動小数点または日時データ型に引用符が付けられるかどうかを制御します。

構文は次のとおりです。

writer.dsv.quotes.datatypes=[char][,integer][,float][,date] 

たとえば、次の指定では、アダプタは文字値と日時値にのみ引用符を付けます。

writer.dsv.quotes.datatypes=char,date 

データ型が指定されない場合、データ型オプションのデフォルトはすべてのデータ型で、alwaysと同じです。

8.2.5.7 writer.dsv.nullindicator.escaped.chars | writer.dsv.nullindicator.escaped.code

nullインジケータに対するエスケープ値を指定します。設定されている場合、nullインジケータ値がないかすべての値がチェックされ、出力時にエスケープされた値に置き換えられます。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

# (optionally) you can define the characters (or code) to use  
# to escape these values if found in data values 
writer.dsv.nullindicator.escaped.chars=NULL 

これによって、nullインジケータはNULLに変更されます。

8.2.5.8 writer.dsv.fielddelim.escaped.chars | writer.dsv.fielddelim.escaped.code

フィールド・デリミタに対するエスケープ値を指定します。設定されている場合、フィールド・デリミタ値がないかすべての値がチェックされ、出力時にエスケープされた値に置き換えられます。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

writer.dsv.fielddelim.escaped.chars=| 

これによって、フィールド・デリミタは|に変更されます。

8.2.5.9 writer.dsv.linedelim.escaped.chars | writer.dsv.linedelim.escaped.code

行デリミタに対するエスケープ値を指定します。設定されている場合、行デリミタ値がないかすべての値がチェックされ、出力時にエスケープされた値に置き換えられます。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

writer.dsv.linedelim.escaped.chars=\n 
writer.dsv.linedelim.escaped.code=D

両者とも、行デリミタを\nに変更します。

8.2.5.10 writer.dsv.quotes.escaped.chars | writer.dsv.quotes.escaped.code

フィールド・デリミタに対するエスケープ値を指定します。設定されている場合、フィールド・デリミタ値がないかすべての値がチェックされ、出力時にエスケープされた値に置き換えられます。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

writer.dsv.quotes.escaped.chars="" 

これによって、"some text"は""some text""に変更されます。

8.2.5.11 writer.dsv.onecolperline

列値ごとに強制的に改行されるかどうかを制御します。各行に、このライター用に定義されたメタデータ列も含まれます。デフォルトは、falseです。次に例を示します。

# Force each column onto a new line with its own meta cols 
writer.dsv.onecolperline=true 

これによって、{metacols},val_1,val_2が次のように変更されます。

{metacols},val1 
{metacols},val2 

8.2.5.12 writer.dsv.quotealways

数値の場合でも、各列が引用符で囲まれるかどうかを制御します。デフォルトは、falseです。


注意:

このプロパティのかわりにdsv.quotes.policyが導入され、このプロパティは下位互換のためにのみサポートされます。dsv.quotes.policyが設定されている場合、dsv.quotealwaysに設定された値は無視されます。

次に例を示します。

writer.dsv.quotealways=true 

. . .,1234,"Hello",10. . .,"1234","Hello","10"に変更されます。

8.2.6 LDV固有のプロパティ

LDVファイルのレコード形式は次のようになります。

[RECLEN][METACOLS]{[FLAG][LEN][VALUE]}n 

説明:

  • RECLENは、フル・レコードの長さ(バイト)です。

  • METACOLSは、すべての選択されたメタデータ列です。

  • FLAGは、M(欠落している)、P(存在している)またはN(null)です。

  • LENは、列値の長さ(欠落またはnullの場合0)です。

  • VALUEは、列値です。

次に例を示します。

01072007-01-10 10:20:31U302MY05TABLEP042000M00N00P04DAVE 

8.2.6.1 writer.ldv.vals.missing.chars | writer.ldv.vals.missing.code

欠落しているインジケータのオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

writer.ldv.vals.missing.chars=MI 

8.2.6.2 writer.ldv.vals.present.chars | writer.ldv.vals.present.code

存在しているインジケータのオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

writer.ldv.vals.present.chars=PR 

8.2.6.3 writer.ldv.vals.null.chars | writer.ldv.vals.null.code

nullインジケータのオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。次に例を示します。

writer.ldv.vals.null.chars=NL 

8.2.6.4 writer.ldv.lengths.record.mode、writer. ldv.lengths.field.mode

レコード長とフィールド長の出力モードを制御します。値は、binaryまたはASCIIのいずれかです。デフォルトは、binaryです。

binaryの場合、ファイルに書き込まれる数値はバイナリ・バイトでエンコードされます。ASCIIの場合、長さの10進値を表す文字が使用されます。次に例を示します。

writer.ldv.lengths.record.mode=binary 
writer.ldv.lengths.field.mode=binary 

8.2.6.5 writer.ldv.lengths.record.length、writer.ldv.lengths.field.length

レコード長およびフィールド長を整数値として指定します。モードがASCIIの場合、これは使用される10進数の定数を表します。binaryの場合、バイト数を表します。

ASCIIモードでは長さは任意の値にできますが、長さが最大値を超えると、イグジットは停止します。バイナリ・モードでは、長さは2、4または8にできますが、レコード長はフィールド長より大きい値である必要があります。次に例を示します。

# Lengths can be binary (2,4, or 8 bytes) or ASCII (any length) 
writer.ldv.lengths.record.length=4 
writer.ldv.lengths.field.length=2 

8.2.7 統計およびレポート

データ・ファイルに書き込まれるデータに関する統計を取得する方法は2つあります。

  • Oracle GoldenGateレポート・ファイルに書き込まれるレポートとして

  • ロールオーバー時にデータ・ファイルに関連付けられる個別のサマリー・ファイルとして

これらの2つのメカニズムを組み合せて、あるいは別々に使用できます。

取得可能なデータには、1)処理されたレコードの総数とこれを挿入、更新、削除に分類したもの、2)表ごとの処理されたレコード数とこれを分類したもの、3)全体的な速度および表ごとの速度、4)最後のレポート以降のこれらのデルタ、などがあります。レポートは時間ベースにも、ファイルのロールオーバーに同期させることもできます。

このデータはレポート・ファイルに、またはロールオーバー時にデータ・ファイルにリンクされるサマリー・ファイルとして書き込まれます。レポートの形式は固定です。サマリー・ファイルにはデータが区切られた形式で含まれますが、特定のデータ・ファイルの内容に関するものが含まれます。これはデータ統合製品によって使用され、処理がクロスチェックされます。データ・ファイルと同じ名前が付けられますが、拡張子は異なります。

8.2.7.1 writer.statistics.toreportfile

統計がOracle GoldenGateレポート・ファイルに出力されるかどうかを制御します。次に例を示します。

writer.statistics.toreportfile=true 

8.2.7.2 writer.statistics.period

統計の期間を指定します。値は、timebasedまたはonrolloverのいずれかです。

次に例を示します。

writer.statistics.period=onrollover 
writer.statistics.period=timebased 

timebasedの場合、期間はstatistics.timeで設定されます。


注意:

これらの値は、統計をレポート・ファイルに出力する場合にのみ有効です。統計は、ロールオーバー時にのみサマリー・ファイルに出力されます。

8.2.7.3 writer.statistics.time

統計がレポートされる間隔(秒)を指定します。

次に例を示します。

writer.statistics.time=5 

8.2.7.4 writer.statistics.tosummaryfile

各データ・ファイルに対する統計を含むサマリー・ファイルがロールオーバー時に作成されるかどうかを制御します。

次の例では、サマリー・ファイルが作成されます。

writer.statistics.tosummaryfile=true 

8.2.7.5 writer.statistics.summary.fileformat

サマリー・ファイルの内容とその内容が書き込まれる順序を制御します。複数のカンマ区切りのASCII値が指定されます。

有効な値は、次のとおりです。

  • catalog – 統計の対象のスキーマのカタログ

  • schema - 統計の対象の表のスキーマまたは所有者

  • table - 統計の対象の表

  • schemaandtable - 1列にピリオド'.'で区切ったスキーマと表

  • gtotal - ユーザー・イグジットの起動以降、指定された表について出力されたレコードの総数

  • gtotaldetail - デリミタで区切られた、ユーザー・イグジットの起動以降の挿入、更新および削除の総数

  • gctimestamp - 指定された表のユーザー・イグジットの起動以降の最小および最大コミット・タイムスタンプ

  • ctimestamp - 関連付けられたデータ・ファイル内の指定された表の最小および最大コミット・タイムスタンプ。

  • total - 関連付けられたデータ・ファイル内の指定された表のレコード出力の総数

  • totaldetail - 関連付けられたデータ・ファイル内の指定された表の挿入、更新および削除出力の総数

  • rate - 関連付けられたデータ・ファイル内の指定された表のデータ出力の平均速度(レコード数/秒)

  • ratedetail - 関連付けられたデータ・ファイル内の指定された表の挿入、更新および削除の平均速度(レコード数/秒)

次に例を示します。

writer.statistics.summary.fileformat= 
   catalog,schema,table,total,totaldetail,gctimestamp,ctimestamp 

8.2.7.6 writer.statistics.overall

追加の統計行がサマリー・ファイルに書き込まれるかどうかを制御します。行には、statistics.summary.fileformatプロパティを使用してユーザーによって定義された全体的な(すべての表にわたる)統計が含まれます。

次の例では、この行が書き込まれます。

writer.statistics.overall=true 

8.2.7.7 writer.statistics.summary.delimiter.chars/code、writer.statistics.summary.eol.chars/code

サマリー・ファイルのフィールド・デリミタおよび行末デリミタのオーバーライド値を指定します。charsの場合、ASCII値を使用し、codeの場合、16進値を使用します。デフォルトは、カンマ(,)デリミタと改行文字です。次に例を示します。

writer.statistics.summary.delimiter.chars=| 
writer.statistics.summary.eol.code=0a0c 

8.2.7.8 writer.statistics.summary.extension

データ・ファイルごとに出力される統計サマリー・ファイルに使用される拡張子のオーバーライドを指定します。デフォルトは、statsです。

次の例では、拡張子が.statsから.statisticsに変更されます。

writer.statistics.summary.extension=.statistics