10 初期ロードによるOracle GoldenGateのインスタンス化(Classic Architecture)
初期ロードはClassic ArchitectureおよびMicroservices Architectureで実行できます。
異機種環境での作業における従来の初期ロード方法とは異なり、OracleからOracleへのレプリケーション作業には最適化された方法があります。これは、インスタンス化によりSCN値に基づく最も高い精度が得られるためです。この場合、HANDLECOLLISIONS
パラメータは必要ありません。HANDLECOLLISIONS | NOHANDLECOLLISIONS
を参照してください。
10.1 初期ロード手順の概要
Oracle GoldenGate を使用して、次の処理を実行できます。
-
スタンドアロンのバッチ・ロードを実行して、移行などの目的でデータベース表にデータを移入できます。
-
Oracle GoldenGateとの変更同期に備えて、初期同期の実行の一環としてデータベース表にデータをロードできます。
10.1.1 初期ロードのパフォーマンスの向上
データベース・ユーティリティで実行される方法以外のすべての初期ロード方式では、Oracle GoldenGateのパラレル・プロセスを使用することで、大規模データベースをより高速にロードできます。パラレル処理を使用するには、次のステップを実行します。
- この章の指示に従って、使用するパラレル・プロセスの各セットに対して初期ロードExtractおよび初期ロードReplicatを作成します。
TABLE
パラメータおよびMAP
パラメータを使用して、ExtractプロセスとReplicatプロセスのペアごとに異なる表セットを指定します。または、TABLE
のSQLPREDICATE
オプションを使用して、異なるExtractプロセス間でサイズの大きい表の行を分割します。
すべての初期ロード方式で、RMTHOST
パラメータにTCPBUFSIZE
を使用する方が、これを使用しないロードよりスループットが3倍向上することがテストで示されています。ターゲット・システムがNonStopの場合は、このパラメータを使用しないでください。
親トピック: 初期ロード手順の概要
10.1.2 初期ロードの前提条件
次の項で説明している初期ロードの実行の前提条件に適合していることを検証します。
10.1.2.1 DDL処理の無効化
初期ロードを実行する前に、DDLの抽出およびレプリケーションを無効化します。DDL処理は、ExtractおよびReplicatのパラメータ・ファイルのDDL
パラメータによって制御されます。
親トピック: 初期ロードの前提条件
10.1.2.2 ターゲット表の準備
ロードを高速に行い、エラーが起こらないようにするための推奨事項は、次のとおりです。
-
データ: ターゲット表が空であることを確認します。そうでない場合、行の重複エラーや既存の行とロードされる行との間に競合が発生することがあります。
-
制約: 外部キー制約およびチェック制約を無効化します。外部キー制約ではエラーが発生する可能性があり、チェック制約ではロード・プロセスが低速化する可能性があります。制約は、ロードが正常に終了した後に再度有効化できます。
-
索引: ターゲット表から索引を削除します。索引は、挿入には必要ありません。索引によって、ロード・プロセスの速度が大幅に低下します。表に挿入される行ごとに、データベースではその表に対するすべての索引が更新されます。ロードの完了後、索引を再度追加できます。
ノート:
1次索引は、DB2 for z/OSのターゲット表にアクセスするすべてのアプリケーションに必要です。1次索引以外の他のすべての索引は、ターゲット表から削除できます。
-
キー: Oracle GoldenGateでレプリケート済の増分データ変更とロードの結果とを調整するには、各ターゲット表に主キーまたは一意キーが含まれている必要があります。アプリケーションを通じてキーを作成できない場合、
TABLEパラメータおよびMAP
パラメータのKEYCOLS
オプションを使用して、Oracle GoldenGate用の代替キーとなる列を指定します。キーは、処理対象の行の識別に役立ちます。キーを作成できない場合、ロードのためにソース・データベースを静止する必要があります。
親トピック: 初期ロードの前提条件
10.1.2.3 Managerプロセスの構成
ソース・システムとターゲット・システムで、Managerプロセスを構成して起動します。1つのManagerを、複数の初期ロード・プロセスと変更同期プロセスに使用できます。セキュリティを強化するために、ターゲットのManagerパラメータ・ファイルには、ターゲット上のReplicatにアクセスするために次のRMTTASK
のパラメータを含める必要があります。
ACCESSRULE, PROG *, IPADDR *, ALLOW
RMTTASK
は、Extractパラメータ・ファイルで一度のみ使用できます。
親トピック: 初期ロードの前提条件
10.1.2.4 データ定義ファイルの作成
データ定義ファイルは、ソース・データベースとターゲット・データベースに異なる定義が存在する場合に必要です。Oracle GoldenGateは、このファイルを使用して、データをターゲット・データベースで必要とされる形式に変換します。
親トピック: 初期ロードの前提条件
10.1.2.5 変更同期グループの作成
初期ロード中のトランザクション変更の取得およびレプリケーションに備えるため、オンラインのExtractグループおよびReplicatグループを作成します。これらのグループは、ロード手順の実行中に起動できます。詳細は、「オンライン変更同期の構成」を参照してください。
ノート:
静止されたソース・データベースからロードを実行し、続けて継続的な変更同期を実行しない場合、これらのグループは省略できます。
初期ロードの指示で要求されるまで、ExtractグループまたはReplicatグループは起動しないでください。変更同期によって、ロードが適用されている間にトランザクション変更が追跡され、その後ターゲット表がそれらの変更に応じて調整されます。
ノート:
Extractが新しいOracle GoldenGate構成で初めて起動されたとき、開いているトランザクションはスキップされます。Extractの起動後に開始されたトランザクションのみキャプチャされます。
親トピック: 初期ロードの前提条件
10.1.2.6 プロセス・グループ間でのパラメータの共有
変更同期パラメータ・ファイルで使用するパラメータの一部は、初期ロードのExtractおよびReplicatパラメータ・ファイルにも必要です。これらのパラメータは、あるパラメータ・ファイルから別のパラメータ・ファイルにコピーできます。または、これらのパラメータを中央ファイルに格納し、各パラメータ・ファイルでOBEY
パラメータを使用して取得できます。別の方法として、共有パラメータ用のOracle GoldenGateマクロを作成し、そのマクロをMACRO
パラメータを使用して各パラメータ・ファイルからコールできます。
OBEY
およびマクロの使用方法の詳細は、Oracle GoldenGateプロセス・インタフェースのスタート・ガイドを参照してください。
親トピック: 初期ロードの前提条件
10.2 Classic Architectureでの初期ロード
Classic Architectureでは、様々なオプションを使用してデータをロードできます。このトピックでプロセスおよびステップについて説明します。
内容は次のとおりです。
10.2.1 Oracle Data Pumpを使用したデータのロード
この方法では、Oracle Data Pumpユーティリティを使用して、ターゲット・データを構築します。コピーをターゲットに適用した後、コピーが停止したSCNを記録します。コピーに含まれているトランザクションは、整合性違反によるコリジョンを回避するためにスキップされます。データ・ポンプ方式では、Replicatは各表のエクスポートから一貫性のあるSCNに関する情報を保持しています。Replicatは、このSCNまでのトランザクションに属する変更を無視します。このSCNより後のトランザクションが適用されます。これらの方法では、初期ロードOracle GoldenGateプロセスは不要です。
10.2.1.1 自動的な表ごとのインスタンス化の使用方法
ソース・データベースの場合
Oracle Data Pumpを使用するOracle Databaseで、表ごとのCSNフィルタリングを自動的にインスタンス化して、すべての表が同じSCNに配置されるのを防ぐことができます。
-
ADD TRANDATA
およびADD SCHEMATRANDATA
を使用します。ADD TRANDATA/SCHEMATRANDATA.PREPARECSN
は、ソースで表を自動的に準備し、Oracle Data Pumpのエクスポート・ダンプ・ファイルにインスタンス化CSNが含まれるようにします。Replicatは、(インポート時に) Oracle Data Pumpによって設定された表ごとのインスタンス化CSNを使用して、証跡レコードをフィルタ処理で除外します。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.
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を使用したデータのロード
10.2.1.2 Oracle Data Pumpの表のインスタンス化の使用方法
Oracle Data Pumpでインスタンス化を実行するには、My Oracle Supportドキュメント1276058.1を参照してください。このドキュメントを入手するには、次のようにします。
- http://support.oracle.com.に移動します
- 「サインイン」の下部から言語を選択し、Oracleシングル・サインオン(SSO)でログインします。
- 「Dashboard」で、見出し「Knowledge Base」を展開します。
- 「Enter search terms」の下の箇所で、ドキュメントID「
1276058.1
」を貼り付けるか入力し、「検索」をクリックします。 - 検索結果で「Oracle GoldenGate Best Practices: Instantiation from an Oracle Source Database [Article ID 1276058.1]」を選択します。
- 「Attachments」の下のリンクをクリックして、記事を開きます。
親トピック: Oracle Data Pumpを使用したデータのロード
10.2.2 ファイルからReplicatへのデータのロード
Replicatを使用してターゲット・データを構築するには、初期ロードExtractを使用してソース表からソース・レコードを抽出し、それらのレコードを正規形式で抽出ファイルに書き込みます。初期ロードReplicatは、データベース・インタフェースを使用してこのファイルからデータをロードします。ロード中、変更同期グループは、増分変更を抽出してレプリケートします。その後、これらの変更は、ロードの結果に応じて調整されます。
ロード中、レコードは、1つずつターゲット・データベースに適用されるため、この方法は他の初期ロード方式と比較して非常に低速です。この方法では、ソース・システムとターゲット・システムのいずれかでデータ変換を実行できます。
Microservices Architectureを使用して、ファイルからReplicatにデータをロードすることもできます。unresolvable-reference.html#GUID-B9FD6A97-9CA0-456D-9489-A7683B04F5DEを参照してください。
ファイルからReplicatにデータをロードする手順
親トピック: Classic Architectureでの初期ロード
10.2.3 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での初期ロード
10.2.4 ダイレクト・バルク・ロードを使用した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での初期ロード