15 初期ロードによるOracle GoldenGateのインスタンス化
初期ロードはClassic ArchitectureおよびMicroservices Architectureで実行できます。
異機種環境での作業における従来の初期ロード方法とは異なり、OracleからOracleへのレプリケーション作業には最適化された方法があります。これは、インスタンス化によりSCN値に基づく最も高い精度が得られるためです。この場合、HANDLECOLLISIONSパラメータは必要ありません。「HANDLECOLLISIONS | NOHANDLECOLLISIONS」
を参照してください。
初期ロード手順の概要
Oracle GoldenGate を使用して、次の処理を実行できます。
-
スタンドアロンのバッチ・ロードを実行して、移行などの目的でデータベース表にデータを移入できます。
-
Oracle GoldenGateとの変更同期に備えて、初期同期の実行の一環としてデータベース表にデータをロードできます。
初期ロードのパフォーマンスの向上
データベース・ユーティリティで実行される方法以外のすべての初期ロード方式では、Oracle GoldenGateのパラレル・プロセスを使用することで、大規模データベースをより高速にロードできます。パラレル処理を使用するには、次の手順を実行します。
- この章の指示に従って、使用するパラレル・プロセスの各セットに対して初期ロードExtractおよび初期ロードReplicatを作成します。
TABLE
パラメータおよびMAP
パラメータを使用して、ExtractプロセスとReplicatプロセスのペアごとに異なる表セットを指定します。または、TABLE
のSQLPREDICATE
オプションを使用して、異なるExtractプロセス間でサイズの大きい表の行を分割します。
すべての初期ロード方式で、RMTHOST
パラメータにTCPBUFSIZE
を使用する方が、これを使用しないロードよりスループットが3倍向上することがテストで示されています。ターゲット・システムがNonStopの場合は、このパラメータを使用しないでください。
親トピック: 初期ロード手順の概要
初期ロードの前提条件
次の項で説明している初期ロードの実行の前提条件に適合していることを検証します。
DDL処理の無効化
初期ロードを実行する前に、DDLの抽出およびレプリケーションを無効化します。DDL処理は、ExtractおよびReplicatのパラメータ・ファイルのDDL
パラメータによって制御されます。
親トピック: 初期ロードの前提条件
ターゲット表の準備
ロードを高速に行い、エラーが起こらないようにするための推奨事項は、次のとおりです。
-
データ: ターゲット表が空であることを確認します。そうでない場合、行の重複エラーや既存の行とロードされる行との間に競合が発生することがあります。
-
制約: 外部キー制約およびチェック制約を無効化します。外部キー制約ではエラーが発生する可能性があり、チェック制約ではロード・プロセスが低速化する可能性があります。制約は、ロードが正常に終了した後に再度有効化できます。
-
索引: ターゲット表から索引を削除します。索引は、挿入には必要ありません。索引によって、ロード・プロセスの速度が大幅に低下します。表に挿入される行ごとに、データベースではその表に対するすべての索引が更新されます。ロードの完了後、索引を再度追加できます。
注意:
1次索引は、DB2 for z/OSのターゲット表にアクセスするすべてのアプリケーションに必要です。1次索引以外の他のすべての索引は、ターゲット表から削除できます。
-
キー: Oracle GoldenGateでレプリケート済の増分データ変更とロードの結果とを調整するには、各ターゲット表に主キーまたは一意キーが含まれている必要があります。アプリケーションを通じてキーを作成できない場合、
TABLEパラメータおよびMAP
パラメータのKEYCOLS
オプションを使用して、Oracle GoldenGate用の代替キーとなる列を指定します。キーは、処理対象の行の識別に役立ちます。キーを作成できない場合、ロードのためにソース・データベースを静止する必要があります。
親トピック: 初期ロードの前提条件
Managerプロセスの構成
ソース・システムとターゲット・システムで、Managerプロセスを構成して起動します。1つのManagerを、複数の初期ロード・プロセスと変更同期プロセスに使用できます。詳細は、Managerおよびネットワーク通信の構成を参照してください。セキュリティを強化するために、ターゲットのManagerパラメータ・ファイルには、ターゲット上のReplicatにアクセスするために次のRMTTASKのパラメータを含める必要があります。
ACCESSRULE, PROG *, IPADDR *, ALLOW
親トピック: 初期ロードの前提条件
データ定義ファイルの作成
データ定義ファイルは、ソース・データベースとターゲット・データベースに異なる定義が存在する場合に必要です。Oracle GoldenGateは、このファイルを使用して、データをターゲット・データベースで必要とされる形式に変換します。詳細は、メタデータへのレプリケートされたデータの関連付けを参照してください。
親トピック: 初期ロードの前提条件
変更同期グループの作成
初期ロード中のトランザクション変更の取得およびレプリケーションに備えるため、オンラインのExtractグループおよびReplicatグループを作成します。これらのグループは、ロード手順の実行中に起動できます。詳細は、「オンライン変更同期の構成」を参照してください。
注意:
静止されたソース・データベースからロードを実行し、続けて継続的な変更同期を実行しない場合、これらのグループは省略できます。
初期ロードの指示で要求されるまで、ExtractグループまたはReplicatグループは起動しないでください。変更同期によって、ロードが適用されている間にトランザクション変更が追跡され、その後ターゲット表がそれらの変更に応じて調整されます。
注意:
Extractが新しいOracle GoldenGate構成で初めて起動されたとき、開いているトランザクションはスキップされます。Extractの起動後に開始されたトランザクションのみキャプチャされます。
親トピック: 初期ロードの前提条件
プロセス・グループ間でのパラメータの共有
変更同期パラメータ・ファイルで使用するパラメータの一部は、初期ロードのExtractおよびReplicatパラメータ・ファイルにも必要です。これらのパラメータは、あるパラメータ・ファイルから別のパラメータ・ファイルにコピーできます。または、これらのパラメータを中央ファイルに格納し、各パラメータ・ファイルでOBEY
パラメータを使用して取得できます。別の方法として、共有パラメータ用のOracle GoldenGateマクロを作成し、そのマクロをMACRO
パラメータを使用して各パラメータ・ファイルからコールできます。
OBEY
およびマクロの使用方法の詳細は、Oracle GoldenGateプロセス・インタフェースのスタート・ガイドを参照してください。
親トピック: 初期ロードの前提条件
Oracle Data Pumpを使用したデータのロード
この方法では、Oracle Data Pumpユーティリティを使用して、ターゲット・データを構築します。コピーをターゲットに適用した後、コピーが停止したSCNを記録します。コピーに含まれているトランザクションは、整合性違反によるコリジョンを回避するためにスキップされます。データ・ポンプ方式では、Replicatは各表のエクスポートから一貫性のあるSCNに関する情報を保持しています。Replicatは、このSCNまでのトランザクションに属する変更を無視します。このSCNより後のトランザクションが適用されます。これらの方法では、初期ロードOracle GoldenGateプロセスは不要です。
自動的な表ごとのインスタンス化の使用方法
ソース・データベースの場合
Oracle Data Pumpを使用するOracle Databaseで、表ごとのCSNフィルタリングを自動的にインスタンス化して、すべての表が同じSCNに配置されるのを防ぐことができます。
-
ADD TRANDATA
およびADD SCHEMATRANDATA
を使用します。ADD TRANDATA/SCHEMATRANDATA.PREPARECSN
は、ソースで表を自動的に準備し、Oracle Data Pumpのエクスポート・ダンプ・ファイルにインスタンス化CSNが含まれるようにします。Replicatは、(インポート時に) Oracle Data Pumpによって設定された表ごとのインスタンス化CSNを使用して、証跡レコードをフィルタ処理で除外します。PREPARECSN
の詳細は、GGSCI 18.1のコマンド・インタフェース・ヘルプを参照してください。INFO TRANDATA
を使用して、表のインスタンス化の準備ができていることと、それが実行されたポイントを確認します。次に、レポート・ファイルのサンプルを示します。2016-09-29 15:30:00 INFO OGG-10154 Schema level PREPARECSN set to mode NOWAIT on schema SCOTT
-
ターゲット・データベースでReplicatを停止します。
-
適切な
TABLE
文でExtractを起動します。
EXPORT datapump
オプションFLASHBACK_SCN
は、表が以前に準備されているため必要ありません。
ターゲット・データベースの場合
-
Oracleデータ・ポンプを使用して、エクスポートされた表をインポートします。これにより、システム表とビューにインスタンス化SCNおよび指定された表データが移入されます。
-
次のいずれかを使用してReplicatを起動します。
Replicatパラメータ・ファイルに
DBOPTIONS ENABLE_INSTANTIATION_FILTERING
パラメータを設定して、表レベルのインスタンス化フィルタリングを有効にします。インスタンス化SCNを超えたすべてのトランザクションがReplicatによって処理されたら、このパラメータを削除できます。
他のすべてのReplicatでは、Replicatパラメータ・ファイルに
DBOPTIONS
source_dbase_name
global_name
パラメータを設定します(global_name
は、証跡の取得元のOracleソース・データベースのグローバル名です)。注意:
ソースに
DOMAIN
がないときは、ダウンストリーム・データベースにDOMAIN
を指定しないでください。Replicatは設定に従って新しいマッピングおよびフィルタ・レコードのインスタンス化SCNを問い合せますたとえば、次のレポート・ファイル出力を参照してください。2015-06-29 17:12:39 INFO OGG-10155 Oracle GoldenGate Delivery for Oracle, r1.prm: Instantiation CSN filtering is enabled on table SCOTT.EMP at CSN 1,851,797.
詳細は、『Oracle GoldenGateリファレンスfor Windows and UNIX』を参照してください。
create table
をselect
コマンドまたはRMANとして使用します。手順は次のとおりです。
-
次のコマンドを使用して、
create table
をat SCN of
パラメータとともに使用します。SET_INSTANTIATION_CSN SCN for object from global_name
次に例を示します。SET_INSTANTIATION_CSN 1 FOR u1.t1 FROM DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM
- 後でインスタンス化CSNの手動設定を削除する場合は、次のコマンドを使用します。
CLEAR_INSTANTIATION_CSN for object from global_name
親トピック: Oracle Data Pumpを使用したデータのロード
Classic Architectureでの初期ロード
Classic Architectureでは、様々なオプションを使用してデータをロードできます。このトピックでプロセスおよび手順について説明します。
内容は次のとおりです。
データベース・ユーティリティを使用したデータのロード
データベース・コピー・ユーティリティを使用してターゲット・データを構築するには、データベース・ユーティリティでデータの静的コピーを作成および適用しながら、変更同期Extractグループを起動して進行中のデータ変更を抽出します。コピーが終了したら、変更同期Replicatグループを起動して、コピーの適用中に変更された行を再同期します。これ以降、ExtractとReplicatの両方が継続的に実行され、データ同期が維持されます。この方法では、初期ロード用の特別なExtractプロセスまたはReplicatプロセスを使用しません。
注意:
この方法でロードされるオブジェクトとデータ型は、使用するデータベース用のOracle GoldenGateおよび使用するデータベース・ユーティリティでサポートされている必要があります。データベースに対してサポートされているアイテムについては、そのデータベースに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントを参照してください。データベース・ユーティリティでサポートされているアイテムについては、そのデータベース・ベンダーのドキュメントを参照してください。
親トピック: Classic Architectureでの初期ロード
ファイルからReplicatへのデータのロード
Replicatを使用してターゲット・データを構築するには、初期ロードExtractを使用してソース表からソース・レコードを抽出し、それらのレコードを正規形式で抽出ファイルに書き込みます。初期ロードReplicatは、データベース・インタフェースを使用してこのファイルからデータをロードします。ロード中、変更同期グループは、増分変更を抽出してレプリケートします。その後、これらの変更は、ロードの結果に応じて調整されます。
ロード中、レコードは、1つずつターゲット・データベースに適用されるため、この方法は他の初期ロード方式と比較して非常に低速です。この方法では、ソース・システムとターゲット・システムのいずれかでデータ変換を実行できます。
Microservices Architectureを使用して、ファイルからReplicatにデータをロードすることもできます。「Microservices ArchitectureでのファイルからReplicatへのデータのロード」を参照してください。
ファイルからReplicatにデータをロードする手順
親トピック: Classic Architectureでの初期ロード
Oracle GoldenGateダイレクト・ロードを使用したデータのロード
Oracle GoldenGateダイレクト・ロードを使用するには、Oracle GoldenGateの初期ロードExtractを実行してソース・レコードを抽出し、それらのレコードを初期ロードReplicatタスクに直接送信します。タスクは、Managerプロセスによって動的に起動されるため、Collectorプロセスやファイルを使用する必要はありません。初期ロードReplicatタスクによって、ターゲット・データベースに対するロードがサイズの大きいブロック単位で行われます。変換およびマッピングは、ExtractまたはReplicat、あるいはその両方で実行できます。ロード中、変更同期グループは、増分変更を抽出してレプリケートします。その後、これらの変更は、ロードの結果に応じて調整されます。
Replicatで使用するポートを制御し、検索およびバインドのプロセスを高速化するには、Managerのパラメータ・ファイルでDYNAMICPORTLIST
パラメータを指定します。Managerは、このパラメータで指定されたポート番号のリストをReplicatタスク・プロセスに渡します。Replicatはまずこのリストのポートを検索し、リストのポートが使用できない場合にのみ、デフォルトのManagerポート番号からスキャンを開始して、使用可能なポートが見つかるまで昇順でスキャンを続けます。
このメソッドは、標準的な文字、数字、日時データ型の他に、CLOB
、NCLOB
、BLOB
、LONG
、XML
、および次の属性とともに埋め込まれているユーザー定義データ型(UDT
)もサポートします: CHAR
、NCHAR
、VARCHAR
、NVARCHAR
、RAW
、NUMBER
、DATE
、FLOAT
、TIMESTAMP
、CLOB
、BLOB
、XML
およびUDT
。必要に応じて、ソースとターゲットの間でキャラクタ・セットが変換されます。
このメソッドはOracle内部表をサポートしていますが、ロード時に、ソースとターゲットのキャラクタ・セットを変換しません。
Oracle GoldenGateダイレクト・ロードを使用してデータをロードする手順
親トピック: Classic Architectureでの初期ロード
ダイレクト・バルク・ロードを使用したSQL*Loaderへのデータのロード
Oracle SQL*Loaderユーティリティを使用してターゲット・データを構築するには、Oracle GoldenGateの初期ロードExtractを実行してソース・レコードを抽出し、それらのレコードを初期ロードReplicatタスクに直接送信します。タスクは、Managerプロセスによって動的に起動されるプロセスであり、Collectorプロセスやファイルを使用する必要はありません。初期ロードReplicatタスクは、SQL*LoaderのAPIとのインタフェースになり、ダイレクト・パス・バルク・ロードとしてデータをロードします。データ・マッピングと変換は、初期ロードExtractまたは初期ロードReplicat、あるいはその両方で行えます。ロード中、変更同期グループは、増分変更を抽出してレプリケートします。その後、これらの変更は、ロードの結果に応じて調整されます。
Replicatで使用するポートを制御し、検索およびバインドのプロセスを高速化するには、Managerのパラメータ・ファイルでDYNAMICPORTLIST
パラメータを指定します。Managerは、このパラメータで指定されたポート番号のリストをReplicatタスク・プロセスに渡します。Replicatはまずこのリストのポートを検索し、リストのポートが使用できない場合にのみ、デフォルトのManagerポート番号からスキャンを開始して、使用可能なポートが見つかるまで昇順でスキャンを続けます。
このメソッドは、標準的な文字、数字、日時データ型の他に、CLOB
、NCLOB
、BLOB
、LONG
、XML
、および次の属性とともに埋め込まれているユーザー定義データ型(UDT
)もサポートします: CHAR
、NCHAR
、VARCHAR
、NVARCHAR
、RAW
、NUMBER
、DATE
、FLOAT
、TIMESTAMP
、CLOB
、BLOB
、XML
およびUDT
。VARRAYS
はサポートされていません。必要に応じて、ソースとターゲットの間でキャラクタ・セットが変換されます。
このメソッドはOracle内部表をサポートしていますが、ロード時に、ソースとターゲットのキャラクタ・セットを変換しません。
ダイレクト・バルク・ロードを使用してSQL*Loaderにデータをロードする手順
親トピック: Classic Architectureでの初期ロード