Oracle® GoldenGate Application Adapters Oracle GoldenGateアダプタの管理 12c (12.1.2.1.1) E67383-01 |
|
前 |
次 |
この章では、Oracle GoldenGateフラット・ファイル・アダプタのプロパティ・ファイルで構成可能なプロパティについて説明します。
この章の内容は次のとおりです。
ユーザー・イグジットのプロパティには、ロギングを制御するプロパティ、名前やトランザクションの処理を制御する一般プロパティなどがあります。
ロギングは次のプロパティによって制御されます。
ログ・ファイル名の接頭辞を指定します。これは有効なASCII文字列である必要があります。ログ・ファイル名には、yyyymmdd
形式の現在の日付と.log
拡張子が付加されます。
次の例では、writer_20140803.log
という名前のログ・ファイルが2014年8月3日に作成されます。
goldengate.log.logname=writer
すべてのモジュールを対象とする全体的なログ・レベルを指定します。構文は次のとおりです。
goldengate.log.level=ERROR | WARN | INFO| DEBUG
ログ・レベルは次のように定義されています。
ERROR
- エラーが発生した場合にのみメッセージを書き込ます。
WARN
- エラーおよび警告メッセージを書き込みます。
INFO
- エラー、警告および情報メッセージを書き込みます。
DEBUG
- デバッグ・メッセージを含むすべてのメッセージを書き込みます。
デフォルトのロギング・レベルはINFO
です。この場合、メッセージは、起動時、停止時および操作中に定期的に生成されます。たとえば、次の例ではグローバル・ロギング・レベルをINFO
に設定します。
goldengate.log.level=INFO
注意: レベルをDEBUG に切り替えると、メッセージが大量に生成され、パフォーマンスに影響する場合があります。 |
一般プロパティは、ファイル・ライター名、チェックポイント、トランザクションの処理、タイムスタンプの表示および列とオブジェクト名に使用される形式を制御します。
ユーザー・イグジット内で実行されるライターの名前を指定します。複数の文字列値を入力すると、同一ユーザー・イグジット内で複数の名前のライターを実行できます。次に例を示します。
goldengate.flatfilewriter.writers=dsvwriter,diffswriter,binwriter
等号記号またはカンマの前後に空白がないようにしてください。ファイル内の他のすべてのプロパティにいずれかのライター名を接頭辞として付けます。
出力の前にトランザクション全体が読み取られるかどうかを制御します。true
に設定されている場合、出力の前にトランザクション全体が証跡から読み取られます。次に例を示します。
goldengate.userexit.buffertxs=true
デフォルトは、false
です。これをtrueに設定することは、numops
メタデータ列が使用される場合にのみ有用です。現在、numops
値を算出する唯一の方法は、トランザクションをバッファし、一度に1つのトランザクションを出力することです。
チェックポイント・ファイル名に追加される接頭辞の文字列値を指定します。複数のデータ・ポンプを実行する場合、チェックポイント接頭辞をプロセスの名前に設定します。次に例を示します。
goldengate.userexit.chkptprefix=pump1_
ファイルをロールオーバーする必要があるかをトランザクションごとにチェックするか、Extractプロセスのチェックポイント時にのみチェックするかを制御します。true
に設定されている場合、アダプタは、トランザクションの処理後、ファイルをロールオーバーする必要があるかをチェックします。必要がある場合、ロールオーバーが実行され、チェックポイント・ファイルが更新されます。これは、出力ファイルの内容を厳格に管理する必要がある場合に有用です。たとえば、午前0時にロールオーバーする前に午前0時までのすべてのデータをファイルに書き込む必要がある場合、トランザクションごとにチェックが行われることが重要です。次に例を示します。
goldengate.userexit.chkpt.ontxend=true
デフォルトは、false
です。false
に設定されている場合、アダプタは、Extractのチェックポイント時(デフォルトでは10秒ごと)にロールオーバーについてチェックします。
日付と時間の間にコロンが書き込まれるかどうかを制御します。false
に設定されている場合、日付と時間の列値は、Oracle GoldenGate証跡のデフォルト形式YYYY-MM-DD:HH:MI:SS.FFFF
で出力ファイルに書き込まれます。true
に設定されている場合、日付と時間の間にコロンがないYYYY-MM-DD HH:MI:SS.FFF
に形式が変更されます。デフォルトは、false
です。
goldengate.userexit.datetime.removecolon=true
レコードのタイムスタンプをローカル時間で出力するか、協定世界時(UTC)で出力するかを制御します。これがutc
に設定されていない場合、レコードのタイムスタンプはローカル・タイムゾーンを使用してローカル時間で出力されます。デフォルトは、ローカル時間です。
goldengate.userexit.timestamp=utc
日時列の出力最大長を制御します。これを整数値に設定すると、列値がその長さに切り捨てられます。日時の形式はYYYY-MM-DD:HH:MI:SS.F(9)
のため、日時列の最大長は29文字です。
次に例を示します。
goldengate.userexit.datetime.maxlen=19
goldengate.userexit.maxlen=19
に設定すると、秒の小数部のない日時に切り捨てられます。goldengate.userexit.maxlen=10
に設定すると、日付のみに切り捨てられます。デフォルトは、完全な日時列値を出力することです。
ファイル・ライター・プロパティは、出力ファイルの形式およびファイルの書込み方法を制御します。
次のプロパティは、値のデリミタ・タイプと列のグループ化を設定します。
出力形式がDSVかLDVかを制御します。
DSV - デリミタ区切りの値。次に例を示します。
POSITION|OPCODE|TIMESTAMP|COLVALA|COLVALB|. . .
注意: DSVはカンマ区切りの値(CSV)に限定されません。 |
LDV - 長さ区切りの値。次に例を示します。
0109TIMESTAMPI302MY05TABLEP042000P03ETC
次に例を示します。
writer.mode=dsv writer2.mode=ldv
注意: 下位互換のために、dsv のかわりにcsv が、ldv のかわりにバイナリが許容されます。かわりのオプションを使用する場合、出力形式に違いはありません。 |
列名、ビフォア値およびアフター値をグループ化するかどうかを制御します。
構文は次のとおりです。
writer.groupcols=true|false
デフォルトは、falseです。これによって、COL1
とCOL2
の次の例に示すように、名前、ビフォア値およびアフター値がセットとして一緒にリストされます。
"COL1", COL1_B4, COL1, "COL2", COL2_B4, COL2
プロパティがtrue
に設定されている場合、列は、すべての名前のセット、すべてのビフォア値のセットおよびすべてのアフター値のセットにグループ化されます。
"COL1", "COL2", COL1_B4, COL2_B4, COL1, COL2
次のプロパティは、ファイルの書込み方法、書込み先とその拡張子を制御します。これは、ライター・モードとデータの内容に依存しません。
データが複数のローリング・ファイル(入力データ内の表ごとに1つ)に分割されるか、すべてのデータが1つのローリング・ファイルに書き込まれるかを制御します。デフォルトは、trueです。
構文は次のとおりです。
writer.files.onepertable=true|false
次の例では、writer
ファイル・ライターは表ごとに1つのファイルを作成し、writer2
はすべてのデータを1つのファイルに書き込みます。
writer.files.onepertable=true writer2.files.onepertable=false
挿入、更新、削除または主キー操作コードに基づいてデータが分割されるかどうか制御されます。
たとえば、次の設定では、挿入、更新、削除および主キーの更新に対して個別の出力ファイルが作成されます。
writer.files.oneperopcode=true
デフォルトはfalseで、操作のタイプに関係なく、すべてのレコードが同一ファイルに出力されます。
このプロパティ以外にfiles.formatstring
プロパティも変更し、%O
プレースホルダを受け入れる必要があります。files.oneperopcode
プロパティが設定されている場合、これは、ファイル名が作成される際に操作コードが書き込まれる位置を示します。そのプロパティが設定されている場合、デフォルトのファイル名にも操作コードが含まれます。
データ・ファイルおよび制御ファイルの接頭辞として使用される値を指定します。このプロパティは、ライターが表ごとに1つのモード(files.onepertable=true
)でない場合にのみ適用されます。データ・ファイルでは、property files.formatstring
が使用されている場合、接頭辞は無視されます。
デフォルトでは、接頭辞は文字列output
に設定されます。data1
という名前のファイルは、デフォルトでoutputdata1
になります。次の例を使用すると、ファイル名はtest_data1
になります。
writer.files.prefix=test_
すべてのデータ・ファイルの場所と拡張子を指定します。ロールオーバー前のファイルの拡張子は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
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
データ・デリミタまたは行末インジケータとして使用される値を文字または16進コードで指定します。デリミタのデフォルトはカンマ(,)です。デフォルトの新規行トリガーは、プラットフォームで有効なnewline
文字です。
たとえば、カンマをデータ・デリミタとしてオーバーライドするには、次のようにします。
writer.files.control.delim.chars=#
たとえば、新規行インジケータを設定するには、次のようにします。
writer.files.control.eol.chars=\n
データ・ファイルのファイル名の作成時に使用されるファイル名フォーマット文字列を指定します。フォーマット文字列は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_%
ファイルの先頭に書き込まれるバイト順マーカー(BOM)である16進数の値を指定します。BOMがファイル内のデータと合致していることを確認する必要があります。16進値が指定されていない場合、マーカーは書き込まれません。
次の例では、すべての出力ファイルの最初のバイトとしてUTF8 BOM efbbf
が書き込まれます。
writer.files.data.bom.code=efbbbf
次のプロパティによって、ファイルのロールオーバーのポリシーが決まります。
最初のレコードがファイルに書き込まれてからファイルがロールオーバーされるまでの経過時間の最大秒数を指定します。次に例を示します。
# number of seconds before rolling over writer.files.data.rollover.time=10
ファイルがロールオーバーされるまでにファイルに書き込まれる最小KB数を指定します。
この例では、最小値を10,000KBに設定します。
# min file size in KB before rolling over writer.files.data.rollover.size=10000
データがファイルに書き込まれてからファイルがロールオーバーされるまで待機する経過時間の最大秒数を指定します。デフォルトは120秒です。
この例では、タイムアウト間隔を10秒に設定します。
# roll over in case no records for a period of time writer.files.data.norecords.timeout=10
Extractプロセスの停止時のロールオーバーのポリシーを制御します。この値がfalseの場合、空の一時ファイルはすべて削除されますが、データが含まれたファイルは一時ファイルのまま残されます。このプロパティがtrueの場合、空でない一時ファイルはすべて、ロールされたファイル名にロールオーバーされ、チェックポイントが書き込まれて、空の一時ファイルが削除されます。次に例を示します。
# roll over non-empty and delete all empty files when Extract stops writer.files.rolloveronshutdown=true
注意: 時間またはサイズ、あるいはその両方を使用できます。両方を使用する場合、先に達した方でロールオーバーが発生します。タイムアウト間隔によって、処理されるレコードがない場合でも、データが含まれているファイルはロールオーバーされることが保証されます。時間もサイズも指定されていない場合、最大サイズのデフォルトである1MBを超えると、ファイルはロールオーバーされます。 |
ファイル・ロールオーバーのトリガーにシステム時間ではなく、ユリウスのコミット・タイムスタンプを使用するかどうかを制御します。構文は次のとおりです。
writer.files.data.rollover.timetype=commit|system
次の例では、ソース証跡レコードのコミット・タイムスタンプを使用してロールオーバーを決定します。
writer.files.data.rollover.timetype=commit
デフォルトでは、システム時間を使用していつファイルをロールオーバーするかを決定します。
最初にレコードを受信した時間に関係なく、すべてのファイルを同時にロールオーバーするかどうかを制御します。通常、ファイルは時間またはサイズのプロパティに基づいて個々にロールオーバーされます。時間はロールオーバー期間に基づくため、レコードが特定のファイルに最初に書き込まれた時間に依存します。場合によっては(特に、表ごとに1つのファイルにデータを出力する場合)、データが最初にファイルに書き込まれた時間に関係なく、現在開いているすべてのファイルを同時にロールオーバーすることがあります。
次の例では、すべてのファイルを同時にロールオーバーするようアダプタに指定します。
writer.files.data.rollover.multiple=true
デフォルト値は、false
です。
アダプタがファイルをロールオーバーする時間を指定します。指定する時間を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
プロパティによって、使用される時間がシステム時間かコミット時間かが決まることに注意してください。
次のプロパティによって、データ・ファイルに書き込まれるデータが決まります。これらのプロパティは、出力データの形式に依存しません。
文字データを元のバイナリ形式のままにするか、ASCIIとして出力するかを制御します。デフォルトは、falseです。ASCIIに変換しないUnicodeマルチバイト・データが入力データに含まれている場合、このプロパティを設定します。次に例を示します。
# whether to output characters as ASCII or binary (for Unicode data) writer.rawchars=false writer2.rawchars=true
データのビフォア・イメージとアフター・イメージの両方が更新操作の出力に含まれるかどうかを制御します。デフォルトは、falseです。これは、ビフォア・イメージが元のデータで提供されていて、getupdatebefores
が処理チェーンのすべてのOracle GoldenGateパラメータ・ファイルに含まれている場合にのみ関係します。次に例を示します。
# whether to output update before images writer.includebefores=true
これによって、. . ."VAL_BEFORE_1","VAL_1","VAL_BEFORE_2","VAL_2". . .
が生成されます。
includebefores
がtrue
に設定されている場合に、アフター・イメージがビフォア・イメージの前に書き込まれるかどうかを制御します。
次に例を示します。
writer.afterfirst=true
このtrueの設定によって、アフター・イメージがビフォア・イメージの前にリストされます。
"VAL_1", "VAL_BEFORE_1", "VAL_2", "VAL_BEFORE_2"
デフォルトは、false
です。この場合、アフター・イメージはビフォア・イメージの後に書き込まれます。
列値の前に列名が出力されるかどうかを制御します。デフォルトは、false
です。次に例を示します。
# whether to output column names writer.includecolnames=true
これによって、…"COL_1","VAL_1","COL_2","VAL_2"…
が生成されます。
出力ファイルで列値が省略されるかどうかを制御します。デフォルトは、false
です。次に例を示します。
# whether to output column values writer.omitvalues=false
includecolnames
もtrue
に設定されている場合、これによって…"COL_1","COL_2"…
が生成されます。
すべての列が出力されるか、ビフォア・イメージがアフター・イメージと異なるもののみ出力されるかを制御します。デフォルトは、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". . .
が生成されます。
欠落している列のデリミタ/長さが出力に含まれるかどうかを制御します。デフォルトは、false
です。これは、COMPRESSUPDATES
またはCOMPRESSDELETES
フラグが処理チェーンのOracle GoldenGateパラメータ・ファイルに含まれていた場合の更新および削除に適用されます。この場合、値が欠落している場合があります。また、writer
.diffsonly
がtrue
の場合、差異のない値も欠落していることになります。次に例を示します。
# whether to skip record delimiters if columns are missing writer.omitplaceholders=true
これによって、. . ."VAL_1",,,"VAL_4",,,"VAL_7". . .
が次のように変更されます。
. . ."VAL_1","VAL_4","VAL_7". . .
メタデータ列は、実際のレコード・データではなく、レコードに関するデータを含むオプションのExtract列です。これらの列は、出力レコードの先頭、すべての列値の前に書き込まれます。
有効なメタデータ列は次のとおりです。
position - 証跡内のレコードの一意の位置インジケータ。
opcode - 挿入、更新、削除、主キー更新の各レコードに対してそれぞれ、I
、U
、D
、K
。
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
.buffertxs
がtrue
でない場合、この値は常に1です。
numcols - 出力される列の数。この値は、このメタデータ列が使用される時点までにメタデータ列として出力された列数を元のレコードの列数から引いた数に等しくなります。
"<value>" - 任意のリテラル値。
メタデータ列を使用する場合、検討の必要な事項があります。
opcode
およびtxind
に対するASCII値はオーバーライドできます。
LDV
の場合、メタデータ列は可変または固定長です。
position
は、16進数または10進数で書き込まれます。
メタデータ列は内部の値でも、元のデータの列から読み取ることもできます。
リテラル値は、引用符で囲んで表します。リテラル値が指定される場合、その値は、指定されたメタデータ列の位置に適切な引用符ポリシーを使用して文字列として出力されます。
列値は%COLNAME
で表します。列値が指定されている場合、列値は、出力レコードの列値セクションではなくメタデータ・セクションに出力されます。これを使用して、出力される表に関係なく、列が常にレコード内の同じ位置に出力されるようにすることができます。
次のプロパティがメタデータ列に適用されます。
出力するメタデータ列を出力順に指定します。ASCII値の複数の名前をカンマで区切って入力します。次に例を示します。
# which metacols to output and in which order writer.metacols=timestamp,opcode,txind,position,catalog,schema,table
metacol_name
で指定されるメタデータ列に対して書き込まれるデータの長さを決める整数値を指定します。実際のデータが固定長より長い場合、切り捨てられます。短い場合、出力はパディングされます。次に例を示します。
# timestamp is fixed length writer.metacols.timestamp.fixedlen=23
これによって、2011-08-03 10:30:51.123456
が2011-08-03 10:30:51.123
に切り捨てられます。
メタデータ列のmetacol_name
値を使用するかわりにデータ値の列名として使用するASCII値を指定します。設定される場合、この列名は、ユーザー・イグジットで処理されるすべての表に存在する必要があります。この列名を表ごとにオーバーライドする方法は現在ありません。たとえば、列の内部タイムスタンプをオーバーライドするには、次のようにします。
# timestamp is read from a column writer.metacols.timestamp.column=MY_TIMESTAMP_COL
token_name
の値が使用できない場合に使用される文字または16進コードを表す値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。デフォルト値は、NO VALUE
です。次に例を示します。
writer.metacols.TKN-SCN.novalue.chars=0
metacol_name
列値の位置合せが左か右かを制御します。デフォルトでは、すべてのメタデータ列は左詰めです。たとえば、トークンを右詰めにするには、次のようにします。
writer.metacols.TKN-SCN.fixedjustify=right
メタデータ列のパディングに使用される文字またはコード値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。パディングに使用されるデフォルトの文字は空白(" ")です。次に例を示します。
writer.metacols.TKN-SCN.fixedpadchar.chars=0
挿入操作を識別するデフォルト文字I
のオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。
次の例では、挿入の場合INS
を使用するようアダプタに指定します。
writer.metacols.opcode.insert.chars=INS
更新操作を識別するデフォルト文字U
のオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。
次の例では、更新の場合UPD
を使用するようアダプタに指定します。
writer.metacols.opcode.update.chars=UPD
削除操作を識別するデフォルト文字D
のオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。
次の例では、削除の場合DEL
を使用するようアダプタに指定します。
writer.metacols.opcode.delete.chars=DEL
主キーの更新操作を識別するデフォルト文字K
のオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。
次の例では、主キーの更新の場合PKU
を使用するようアダプタに指定します。
writer.metacols.opcode.updatepk.chars=PKU
トランザクションの先頭、中間、末尾か、あるいはトランザクション全体の操作かの識別に使用される値のオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。デフォルト値は、先頭の場合0です。
次の例では、0を文字Bでオーバーライドします。
# tx indicator values is overridden writer.metacols.txind.begin.chars=B
トランザクションの中間の識別に使用されるオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。デフォルト値は、中間の場合1です。
次の例では、1を文字Mでオーバーライドします。
# tx indicator value is overridden writer.metacols.txind.middle.chars=M
トランザクションの末尾の識別に使用されるオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。デフォルト値は、末尾の場合2です。
次の例では、2を文字Eでオーバーライドします。
# tx indicator value is overridden writer.metacols.txind.end.chars=E
トランザクション全体の操作の識別に使用されるオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。デフォルト値は、全体の場合3です。
次の例では、3を文字Wでオーバーライドします。
# tx indicator value is overridden writer.metacols.txind.whole.chars=W
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
が生成されます。
COLNAME
列をメタデータとして使用するが、出力しないかどうかを制御します。
次の例では、numcols
をメタデータとして使用するが、出力しないことを指定します。
writer.metacols.numcols.omit=true
トランザクションの先頭と末尾をマークするために使用するメタデータ列を指定します。これらのマーカー・レコードは、トランザクションを構成する操作レコードの前後に出力ファイルに(行末デリミタ付きで)書き込まれます。
構文は次のとおりです。
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
注意: このプロパティが設定されている場合、アダプタはトランザクションをメモリーにバッファするため、システムによって処理されるトランザクション内の操作の数を制限する必要があります。 |
DSV
ファイルのレコード形式は次のようになります。
{[METACOL][FD]}n{[COL][FD]}m[LD]
説明:
METACOL
は、任意の定義済メタデータ列です。
COL
は、任意のデータ列です。
FD
は、フィールド・デリミタです。
LD
は、行デリミタです。
列値は、"2013-01-10 10:20:31","U","MY.TABLE", 2000,"DAVE"
のように引用符で囲むことができます。
デリミタ区切りファイルでNULL
値に使用する文字を指定します。これらの値は、空の文字列のデフォルトであるNULL
値をオーバーライドします。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。次に例を示します。
writer.dsv.nullindicator.chars=NULL writer.dsv.nullindicator.code=0a0a0a0a
フィールド・デリミタのオーバーライド値を指定します。デフォルトは、カンマ(,)です。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。次に例を示します。
# define the characters to use for field delimiters in DSV files
writer.dsv.fielddelim.chars=|
行デリミタのオーバーライド値を指定します。デフォルトは、オペレーティング・システムに対応した改行文字です。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。次に例を示します。
# define the characters to use for line delimiters in DSV files
writer.dsv.linedelim.chars=\n
引用符のオーバーライド値を指定します。デフォルトは、二重引用符(")です。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。次に例を示します。
# define the characters to use for quotes in DSV files
writer.dsv.quotes.chars='
引用符を付けるためのポリシーを制御します。
構文は次のとおりです。
writer.dsv.quotes.policy={default|none|always|datatypes}
説明:
default - 日付と文字にのみ引用符を付けます。
none - メタデータ列にも列値にも引用符を付けません。
always - すべてのメタデータ列と列値に引用符を付けます。
datatypes - 特定のデータ型にのみ引用符を付けます。
このプロパティが設定されている場合、dsv.quotealways
プロパティはオーバーライドされます。dsv.quotes.datatypes
プロパティを使用して引用符を付けるデータ型を指定します。
dsv.quotes.policy
がdatatype
に設定されている場合に整数、文字、単精度浮動小数点または日時データ型に引用符が付けられるかどうかを制御します。
構文は次のとおりです。
writer.dsv.quotes.datatypes=[char][,integer][,float][,date]
たとえば、次の指定では、アダプタは文字値と日時値にのみ引用符を付けます。
writer.dsv.quotes.datatypes=char,date
データ型が指定されない場合、データ型オプションのデフォルトはすべてのデータ型で、always
と同じです。
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
に変更されます。
フィールド・デリミタに対するエスケープ値を指定します。設定されている場合、フィールド・デリミタ値がないかすべての値がチェックされ、出力時にエスケープされた値に置き換えられます。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。次に例を示します。
writer.dsv.fielddelim.escaped.chars=|
これによって、フィールド・デリミタは|
に変更されます。
行デリミタに対するエスケープ値を指定します。設定されている場合、行デリミタ値がないかすべての値がチェックされ、出力時にエスケープされた値に置き換えられます。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。次に例を示します。
writer.dsv.linedelim.escaped.chars=\n writer.dsv.linedelim.escaped.code=D
両者とも、行デリミタを\n
に変更します。
フィールド・デリミタに対するエスケープ値を指定します。設定されている場合、フィールド・デリミタ値がないかすべての値がチェックされ、出力時にエスケープされた値に置き換えられます。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。次に例を示します。
writer.dsv.quotes.escaped.chars=""
これによって、"some text"は""some text""に変更されます。
LDVファイルのレコード形式は次のようになります。
[RECLEN][METACOLS]{[FLAG][LEN][VALUE]}n
説明:
RECLEN
は、フル・レコードの長さ(バイト)です。
METACOLS
は、すべての選択されたメタデータ列です。
FLAG
は、M
(欠落している)、P
(存在している)またはN
(null)です。
LEN
は、列値の長さ(欠落またはnullの場合0)です。
VALUE
は、列値です。
次に例を示します。
01072007-01-10 10:20:31U302MY05TABLEP042000M00N00P04DAVE
欠落しているインジケータのオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。次に例を示します。
writer.ldv.vals.missing.chars=MI
存在しているインジケータのオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。次に例を示します。
writer.ldv.vals.present.chars=PR
nullインジケータのオーバーライド値を指定します。chars
の場合、ASCII値を使用し、code
の場合、16進値を使用します。次に例を示します。
writer.ldv.vals.null.chars=NL
レコード長とフィールド長の出力モードを制御します。値は、binary
またはASCII
のいずれかです。デフォルトは、binary
です。
binary
の場合、ファイルに書き込まれる数値はバイナリ・バイトでエンコードされます。ASCII
の場合、長さの10進値を表す文字が使用されます。次に例を示します。
writer.ldv.lengths.record.mode=binary writer.ldv.lengths.field.mode=binary
レコード長およびフィールド長を整数値として指定します。モードが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
データ・ファイルに書き込まれるデータに関する統計を取得する方法は2つあります。
Oracle GoldenGateレポート・ファイルに書き込まれるレポートとして
ロールオーバー時にデータ・ファイルに関連付けられる個別のサマリー・ファイルとして
これらの2つのメカニズムを組み合せて、あるいは別々に使用できます。
取得可能なデータには、1)処理されたレコードの総数とこれを挿入、更新、削除に分類したもの、2)表ごとの処理されたレコード数とこれを分類したもの、3)全体的な速度および表ごとの速度、4)最後のレポート以降のこれらのデルタ、などがあります。レポートは時間ベースにも、ファイルのロールオーバーに同期させることもできます。
このデータはレポート・ファイルに、またはロールオーバー時にデータ・ファイルにリンクされるサマリー・ファイルとして書き込まれます。レポートの形式は固定です。サマリー・ファイルにはデータが区切られた形式で含まれますが、特定のデータ・ファイルの内容に関するものが含まれます。これはデータ統合製品によって使用され、処理がクロスチェックされます。データ・ファイルと同じ名前が付けられますが、拡張子は異なります。
統計がOracle GoldenGateレポート・ファイルに出力されるかどうかを制御します。次に例を示します。
writer.statistics.toreportfile=true
統計の期間を指定します。値は、timebased
またはonrollover
のいずれかです。
次に例を示します。
writer.statistics.period=onrollover writer.statistics.period=timebased
timebased
の場合、期間はstatistics.time
で設定されます。
注意: これらの値は、統計をレポート・ファイルに出力する場合にのみ有効です。統計は、ロールオーバー時にのみサマリー・ファイルに出力されます。 |
各データ・ファイルに対する統計を含むサマリー・ファイルがロールオーバー時に作成されるかどうかを制御します。
次の例では、サマリー・ファイルが作成されます。
writer.statistics.tosummaryfile=true
サマリー・ファイルの内容とその内容が書き込まれる順序を制御します。複数のカンマ区切りの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
追加の統計行がサマリー・ファイルに書き込まれるかどうかを制御します。行には、statistics.summary.fileformat
プロパティを使用してユーザーによって定義された全体的な(すべての表にわたる)統計が含まれます。
次の例では、この行が書き込まれます。
writer.statistics.overall=true