ADD EXTRACT
サポートされているDb2、HP NonStop、MySQL、Oracle、PostgreSQL、SQL Server、Sybase ASEおよびYugabyteデータベースに有効です。
ADD EXTRACTを使用して、ソース・データベース取得プロセス(Extractと呼ばれます)を作成します。Extractは、変更データExtractとして作成し、現在のトランザクションをデータベース・ログから、またはデータベース・ベンダーに応じた他の方法で取得することも、初期ロードExtractとして作成し、データベース表に存在するレコードを取得することもできます。
ソース・データベースごとに変更データExtractまたは初期ロードExtractを1つのみ作成することをお薦めしますが、まれな状況では、データベースごとに複数のExtractを使用すると取得スループットが向上する場合があります。
Oracle GoldenGateでは、オペレーティング・システムで使用可能なリソースに応じて、デプロイメントごとに多数の同時ExtractおよびReplicatプロセスをサポートできます。ただし、ExtractまたはReplicatプロセスがさらに追加されるときにはシステム・リソースを監視し、デプロイメントごとのプロセスの合計数を300以下に保つことをお薦めします。
注意:
-
古いExtractと同じ名前のExtractを作成する場合は、古いExtractが完全に削除されて削除されていることを確認します。DELETE EXTRACTを使用して、EXTRACTおよびそのすべてのコンポーネントを削除できます。
-
このコマンドのサイズは、すべてのキーワードおよび入力について500バイトを超えることができません(
DESCオプションに入力するテキストを含む)。 -
Db2 for iでは、このコマンドはすべてのジャーナルのグローバル開始ポイントを確立するもので、必要な最初のステップです。
ADD EXTRACTコマンドの発行後、オプションで適切なジャーナル・オプションを指定したALTER EXTRACTコマンドを使用して特定のジャーナル・シーケンス番号に特定のジャーナルを配置できます。 -
OracleおよびPostgreSQLデータベースの場合、Extractを追加する前に、
DBLOGIN USERIDALIASを使用してソース・データベースへの接続を確立してからREGISTER EXTRACTコマンドを発行します。詳細は、REGISTER EXTRACTコマンドを参照してください。 -
SQL Serverの場合、Extractを追加するまで、
DBLOGIN USERIDALIASを使用してソース・データベースへの接続を確立します。これは、管理サービスが資格証明情報をExtractプロセスにバインドするために必要です。
構文
ADD EXTRACT extract-name
| { SOURCEISTABLE |
| [ INTEGRATED ] TRANLOG
| {, BEGIN [ NOW | yyyy-mm-ddThh:mm.ssZ | LSN value | EOL | EOF | EXTRBA archive-offset-number | SCN scn }
| [, DESC description ]
| [, CRITICAL [ YES | NO ] ]
| [, ENCRYPTIONPROFILE encryption-profile-name]
| [, GTIDSET gtidset
| [, PROFILE
| [ AUTOSTART [ YES | NO ]
| [ DELAY delay-number ] ]
| [ AUTORESTART [ YES | NO ]
| [ RETRIES retries-number ]
| [ WAITSECONDS wait-number ]
| [ RESETSECONDS reset-number ]
| [ DISABLEONFAILURE [ YES | NO ] ] ] ]
| [ LOGNUM lognum]
| [ LOGPOS logpos]
extract_name
Extractの名前。最大8文字まで使用できます。「プロセスおよびファイルの名前の選択」を参照してください。
SOURCEISTABLE
Oracle GoldenGateを使用した初期ロード用に、指定された表からレコード全体を抽出するExtractタスクを作成します。SOURCEISTABLEを使用するときは、サービス・オプションを指定しないでください。
タスク・パラメータはパラメータ・ファイルで指定する必要があります。Oracle GoldenGate Microservicesドキュメントの管理クライアントを使用した初期ロード抽出の追加を参照してください。
TRANLOG [bsds_name]
すべてのデータベースでこのオプションを使用します。TRANLOGを指定するときは、BEGINオプションを指定する必要があります。
(z/OS上のDb2) z/OSシステム上のDb2に対してbsds_nameオプションを使用して、トランザクション・ログのブートストラップ・データ・セット・ファイル名を指定できます(ただし、これは必須ではなく、使用されません)。既存のTRANLOGパラメータを変更する必要はありません。
(Oracle) Extractでは、Oracle REDOログが直接読み取られます。代替構成については、INTEGRATED TRANLOGも参照してください。
INTEGRATED TRANLOG
Oracleで有効です。
統合取得モードでExtractを追加します。このモードでは、Extractは、論理変更レコード(LCR)をExtractに直接渡すデータベース・ログマイニング・サーバーと統合されます。INTEGRATED TRANLOGを使用する前に、REGISTER EXTRACTコマンドを使用します。
BEGIN {NOW |
yyyy-mm-ddthh:mm.ssZ} |
処理を開始するデータ・ソースのタイムスタンプを指定します。
ノート: Extractを特定のタイムスタンプに配置する前に、Extractを登録する必要があります。
-
NOWNOWは、ADD EXTRACTコマンドが発行される時間を指定し、Extractの起動時に、その特定の時間以降のトランザクション境界に位置付けしようとします。NOWよるExtractの位置指定は、LSN、SCNまたはLRIによる位置指定などの他の方法よりも正確ではなく、データベース・サーバーとOracle GoldenGateサーバーを同じ時間およびタイム・ゾーンに設定する必要があります。Db2 LUWでは、コミットおよび終了トランザクション・レコードにのみタイムスタンプが含まれるため、Extractの開始位置を計算するには、それらのタイムスタンプを基準とする必要があります。これは、Oracle GoldenGateによって使用されるAPIの制限です。タイムスタンプによる配置は不正確で、時間がかかる可能性もあることに注意してください。可能な場合には、
LRIまたはEOLオプションを使用することをお薦めします。 -
yyyy-mm-ddthh:mm.ssZ指定された形式の日時(タイムスタンプ)。たとえば、2017-07-14T14:54:45Zです。
-
yyyy-mm-ddT[ hh:mi:[ss[.cccccc]]]Z指定された形式の日時(タイムスタンプ)。Oracle ExtractおよびPostgreSQLのExtractでは、タイムスタンプ値は、Extractがデータベースに登録された時点のタイムスタンプより大きくする必要があります。
PostgreSQLのタイムスタンプによる配置には、次のシナリオがあります:
-
シナリオ1
track_commit_timestampがoffの場合、Extractプロセスが開始されると、使用する位置指定方法に関係なく、次の出力が表示されます。2020-04-29T02:15:54Z -
シナリオ2
Extractの登録前に
track_commit_timestampが有効になる場合、ソース・データベースでレコードがプッシュされると、次の例のように正確なタイムスタンプが表示されます:2020-04-29 02:19:07 INFO OGG-01515 Positioning to begin time Apr 29,2020 2:18:38 AM. -
シナリオ3
Extractの登録後に
track_commit_timestampが有効になっている場合は、関連するtransaction IDでコミット・タイムスタンプが構築されていないログで古いレコードを使用できる可能性があります。その場合、Extractでタイムスタンプが取得されないと、シナリオ1に記載されたデフォルト・タイムスタンプを使用してフォールバックされます。出力は、次のようになります。020-04-29 01:55:07 INFO OGG-01517 Position of first record processed LSN: 0/221D028, Jan 1, 1970 12:00:00 PM. -
レプリケーション・スロットが移動している場合、過去のタイムスタンプを指定することはできません。
-
EXTRBA archive-offset_number
Db2 z/OSで有効です。
データの取得を開始するトランザクション・ログ内の相対バイト・アドレスを指定します。
必要な書式は0Xnnnで、nnnは1 - 20桁の17進数(最初の文字は桁0で、2番目の文字は大文字または小文字x)です。
EOL
Db2 for i、Db2 LUW、MySQL、PostgreSQLおよびSQL Serverで有効です。
次のレコードが書き込まれるログ・ファイル(またはジャーナル)の終端から開始するように処理を構成します。アクティブ・トランザクションは何も取得されません。
Db2 LUWでは、ログ・ファイルのアクティブなLRI値から開始するように処理を構成します。アクティブなLRIは、次のレコードの書込み先となるログ・ファイルの終端の位置を示します。アクティブ・トランザクションは何も取得されません。
PostgreSQLの場合、EOLによる位置にはDBLOGINが必要です。
MySQLでは、ファイルの末尾に対応する位置が検出され、そこからトランザクションの読取りが開始されます。データがバイナリ・ログに継続的に書き込まれている場合、EOLの位置は正確ではありません。
EOF
MySQL、Db2 z/OS、Db2 LUW、SQL Server、PostgreSQL、Oracle GoldenGate for DAAで有効です。
LSN value
Db2 z/OS、PostgreSQLおよびSQL Serverで有効です
データ取得を開始するトランザクションLSNを指定します。このオプションの別名はEXTLSNです。LSNに対する配置は正確です。
Db2 z/OSの場合、LSN値は一連の16進数または一連の10進数にすることができます。16進形式の場合は、0Xまたは0xの後に1から20の16進数(0-9、a-gまたはA-G)が続く必要があります。10進数形式の場合は、接頭辞なしの1から25の10進数(0-9)です。
PostgreSQLの場合、LSN値はhiまたはloです。ログ・ファイルのエントリ・ポイントで値をhiに設定します。Loは、ログ・ファイル内のオフセットです。LSN位置は、レプリケーション・スロットの再開位置と先行書込みログの現在の場所との間にある必要があります。指定された位置自体が、示された範囲間に存在する場合、Extractによってエラーがスローされます。
SQL Serverの場合、LSNは、データ取得を開始するトランザクションLSNを指定します。このオプションの別名はEXTLSNです。
指定されたLSNは、cdc.lsn_time_mappingシステム表内に存在する有効なtran_begin_lsnとして存在する必要があります。存在しない場合、Extractは、指定されたLSN値の後に配置しようとします。
SQL Serverの有効なLSN指定には、次のものが含まれます:
-
0X接頭辞を持ち、先頭がゼロで埋められたコロン区切りの16進文字列(8:8:4) (0X00000d7e:0000036b:0001など)
-
0X接頭辞を持ち、先頭にゼロがないコロン区切りの16進文字列(0Xd7e:36b:1など)
次の問合せを行うと、使用可能な最小LSNを検索できます:
SELECT min([tran_begin_lsn]) FROM [cdc].[lsn_time_mapping] with (nolock) where tran_id <> 0x00
次の例は、Db2 z/OSのLSN値の使用を示しています。
例1:
ADD EXTRACT extn TRANLOG, LSN 0xDEE40E4F27A3245400
例2:
ADD EXTRACT extn TRANLOG, LSN 22216433159121980904448
次の例は、SQL ServerのLSN値を示しています:
ADD EXTRACT extn TRANLOG, LSN 0X00000d7e:0000036b:0001
LRI value
Db2 LUWで有効です。Extractが起動するときのトランザクション・ログの開始位置を指定します。
Db2 LUWシステムのLRIオプションを使用して、Extractがトランザクション・ログからのレコードの取得を開始できるLRIを指定できます。Db2ユーティリティdb2logsForRfwdを使用して、LRIを取得できます。このユーティリティは、Db2ログに存在するLRIの範囲を提示します。
Extractは指定したLRIに配置されますが、ExtractがそのLRIを最初に処理するとはかぎらないことに注意してください。ログ・ファイルには、Db2内部ログ・レコードなど、Extractによって無視される非常に多くのレコード・タイプがあります。Extractは、実際に最初に処理したLRIをExtractレポート・ファイルにレポートします。
LOGNUM lognum
MySQLで有効です。
これは、ログ・ファイル番号です。ADD EXTRACTは、LOGNUM値の前にゼロが含まれていると失敗します。たとえば、ADD EXTRACT ext1, TRANLOG, LOGNUM 000001, LOGPOS 0は失敗します。かわりに、この例をLOGNUMを1に設定すると、この例は成功します。
LOGPOS logpos
これはログ・ファイル内のイベント・オフセット値で、特定のトランザクション・レコードを識別します。イベント・オフセット値は、ログ・レコードのヘッダー・セクションに格納されます。binlogファイルの先頭に配置するには、LOGPOSを0に設定します。
SEQNO sequence_number
Db2 for iで有効です。最大20桁の長さの10進数であるシステム順序番号から(またはその直後から)取得を開始します。
SCN value
Oracleで有効です。
指定したOracleシステム変更番号(SCN)を持つREDOログのトランザクションでExtractを起動します。統合モードのExtractでは、SCN値は、Extractがデータベースに登録された時点のSCNより大きくする必要があります。詳細は、REGISTER EXTRACTを参照してください。
PARAMS file_name
Oracle GoldenGateディレクトリ内のdirprmのデフォルト以外の場所にあるExtractパラメータ・ファイルのフルパス名を指定します。
REPORT file_name
Oracle GoldenGateディレクトリ内のdirrptのデフォルト以外の場所にあるExtractレポート・ファイルのフルパス名を指定します。
DESC ‘description’
グループの説明('Extracts account_tab on Serv1'など)を指定します。説明は一重引用符で囲みます。
ENCRYPTIONPROFILE
特定のクライアントに関連付けられたOracle GoldenGate暗号化プロファイルの名前を指定します。
GTIDSET gtidset
MySQLで有効です。
MySQLのGTIDベース取得のGTIDセットとして位置タイプを使用して、Extractの初期位置を指定します。GTIDセットでサポートされているMySQLソースは、MySQL Server 8.0以上です。サポートされている最大GTIDセット・サイズは64KBです。
構文:
ADD EXTRACT extract_name, TRANLOG, GTIDSET gtidset
CRITICAL
プロセスがデプロイメントにとってクリティカルかどうかを示します。
PROFILE
自動起動プロファイルの名前。
AUTOSTART
管理サービスの開始時に、管理対象プロセスを自動的に開始するかどうかを指定します。デフォルト値はYESです。
DELAY
プロセスが起動するまでに待機する時間(秒)。
AUTORESTART
終了する場合のプロセスの再起動方法を制御します。
RETRIES
再試行を中止するまでにタスクを再開する最大試行数。これはオプションです。
WAITSECONDS
再試行をカウントする期間(秒)。
RESETSECONDS
再試行をカウントする期間をリセットします。
DISABLEONFAILURE
TRUEに設定すると、再試行回数の上限に達した時点でタスクは無効になります。
SOCKSPROXY {host_name |
IP_address}[:port] [PROXYCSALIAS credential_store_alias [PROXYCSDOMAIN credential_store_domain] |
別名Extractで使用します。プロキシ・サーバーのDNSホスト名またはIPアドレスを指定します。いずれかを使用してホストを定義できますが、DNSサーバーにアクセスできない場合はIPアドレスを使用する必要があります。IPアドレスを使用する場合、宛先システムのスタックに応じてIPv6またはIPv4のマップ済アドレスを使用します。PROXYCSALIASを指定する必要があります。さらに、使用するポートと、資格証明ストア・ドメインを指定できます。
例
次の例では、トランザクション・ログからデータベースの変更を取得するexteというExtractグループを作成します。抽出は、ADD EXTRACTでExtractグループが作成および開始された時刻に生成されたレコードから開始されます。
ADD EXTRACT extn, TRANLOG, BEGIN NOW
次の例では、Extractを特定のタイムスタンプに位置設定して、トランザクション・ログからデータベースの変更を取得するために、Extractグループ名extwが作成されます:
ADD EXTRACT extn, TRANLOG, BEGIN NOW
REGISTER EXTRACT extn DATABASE
ALTER EXTRACT extn BEGIN 2020-08-02T06:05:30.000Z
次では、統合Extractグループを作成します。
ADD EXTRACT extn, INTEGRATED TRANLOG, BEGIN NOW
次の例では、exteiという名前の初期ロードExtractが作成されます。
ADD EXTRACT extn, SOURCEISTABLE
次の例には、GTIDセットの有効な形式のすべての組合せが含まれています。
例1:
ADD EXTRACT exte, TRANLOG, GTIDSET "E11FA47-71CA-11E1-9E33-C80AA9429562:4"
例2:
ADD EXTRACT exts, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-10"
例3:
ADD EXTRACT extn, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-3:11:47-49"
例4:
ADD EXTRACT extw, TRANLOG, GTIDSET "2174B383-5441-11E8-B90A-C80AA9429562:1-3,24DA167-0C0C-11E8-8442-00059A3C7B00:1-19"
ノート:例4に示すように、GTIDセットに複数のUUIDが含まれている場合、REST APIリクエストを形成するために、このGTIDセットはカンマ区切りを使用して複数のGTIDセットに分割されます。
次の例では、Extractを作成して、REDOログの特定のOracleシステム変更番号(SCN)に配置します。
ADD EXTRACT extn TRANLOG SCN 123456
ADD EXTRACT extn INTEGRATED TRANLOG SCN 123456
次の例では、Db2 LUWシステムにExtractを作成します。
ADD EXTRACT extn, TRANLOG LRI 8066.322711
次の例では、管理クライアントを使用してautostartオプション付きでExtractを作成します。
ADD EXTRACT extn, TRANLOG , BEGIN NOW , AUTOSTART yes