LinuxでのOracle GoldenGateの使用: Oracle 11g Release 2からOracle 11g Release 2への双方向レプリケーション
概要
- Manager:
- ソース・ホストとターゲット・ホストの両方で他のプロセスを開始および停止します。 一度ExtractまたはReplicatが実行されている場合は不要です。
- Initial Load:
- オプション。 ターゲット表を1回格納するために使用します。 ソース表から直接読み取ることも、ASCIIファイルから読み取ることもできます。 このOBEでは、Initial Loadは使用しません。
- Extract:
- トランザクション・データをTrailファイルに出力するために、ソースで実行されます。 Extractには、Classic(このOBE)とIntegratedの2つのバージョンがあります。
- Data Pump:
- オプションですが、強くお勧めします。 IPネットワーク経由でTrailファイルをソースからターゲットに送信します。 技術的には、セカンダリのExtractです。
- Replicat:
- ターゲット・データベースにデータを提供します。 通常、Replicatはターゲットで実行されます。
- 2つのLinuxホスト: 一方がソースでもう一方がターゲット。 この例では、Oracle Enterprise Linux OEL 5.7(64ビット)を使用しています。 Windowsまたは32ビットLinuxでも、Oracle GoldenGateソフトウェアの別のバージョンが動作します。 ソースとターゲットを同じホスト上に配置することもできますが、何が起こっているのかを把握するのが概念的に難しくなります。 ホストが1つのみの場合は、/etc/hostsファイルを変更して、host01.example.comとhost02.example.comのエイリアスを作成すると便利です。
- Oracle Linux 64ビットでのOracle GoldenGate(Oracle Software Delivery Cloud)、バージョン11.2.1.0.2、部品番号V34339-01。これは、64ビットLinux用の部品番号です。
- Oracle 11g Release 2 Database(両方のホストにインストールされていること)
- Linuxソフトウェアへのrootアクセスを設定する(/etcへの書込みアクセス)
- Webにアクセスしてソフトウェアとドキュメントをダウンロードする
- host01にSIDがorcl01のデータベース・インスタンスを作成し、host02にSIDがorcl02のデータベース・インスタンスを作成する
- 両方のホストがSIDによって相互に通信できるように、両方のホストのtnsnames.oraを変更する
- Some_Command
- コマンドまたは値として入力します。 例:
./ggsciと入力して、コマンドライン・インタプリタを開始します。
- Some_Prompt
- システムがプロンプトまたは応答としてこれに対応します。 例:
ウェルカム・スプラッシュ・バナーの後、GGSCI (host01) 1>プロンプトでコマンドを入力できます。
- Some_Button
- 画面に表示されるこのボタンをクリックします。 例:
必要なバージョンを選択したら、「Continue」をクリックしてダウンロードを開始します。
- Some_Variable
- 実際の値に置き換える変数。 例:
プロンプトで、userid/passwordを入力します。
- Some_Filename
- ファイル名、パス、またはフォルダ/ディレクトリ。 例:
/etcディレクトリのhostsファイルを編集します。
- Some_Code
- キーワードまたはコード要素。 例:
初期ロードの後で、パラメータHandleCollisionsをNoHandleCollisionsに変更します。
- p=process=
- e(xtract)、p(ump)、r(eplicat)、i(nitial)、d(efgen)、s(tartup)。
- xxxx=project=
- 共通のプロジェクトxxxxに関連するすべてのファイル。たとえば、hr、sales、engrなどがあります。
- hh=host-to-host=
- ソースとターゲットのホスト名で示され、a=host01およびb=host02の場合、aa、ab、ba、bb。 後で説明しますが、一部のファイル名には数字を含めることができないため、数字は使用しないことをお勧めします。
- ext=extension=
- prm=parameter(dirprm/に保存)、dsc=discard、rpt=report(dirrpt/に保存)、def=definition(dirdef/に保存)、oby=obey(インストール・ディレクトリに保存)、sql=SQL(dirsql/に保存)。
目的
このOracle By Example(OBE)チュートリアルでは、Linux Oracle 11g Release 2 DatabaseでのOracle GoldenGateバージョン11.2.1.0.2のインストール、構成、および管理について説明します。
所要時間
約3時間
はじめに
Oracle GoldenGateでは、トランザクション・ログの読取りと1つまたは複数のターゲット・データベースに対して変更の書込みを実行できるため、異種データベースのレプリケーションを非常に高速に実行できます。 一般的な環境では、次の5つのプロセスを使用します。
シナリオ
Oracle 11g Release 2を実行している2つのLinuxホストhost01(赤)とhost02(緑)があります。 host01には、パスワードがpswd1uのユーザー/スキーマogguser1と、パスワードがpswd1aのユーザー/スキーマoggadm1を持つ管理者が存在します。
host02には、パスワードがpswd2uのユーザー/スキーマogguser2と、パスワードがpswd2aのユーザー/スキーマoggadm2を持つ管理者が存在します。 host01には、host02にレプリケートする必要がある表(TCUSTMERとTCUSTORD)が存在します。 画面のバナーの色に注意して、どのコマンドがどのホストに対して実行されるのか把握するようにしてください。 また、GGSCIコマンド、SQLコマンド、OSコマンドのいずれを入力するのか(プロンプトに表示されます)に注意してください。
一方向レプリケーションを実行したら、双方向レプリケーションを実行することもできます。 その際、Oracle GoldenGateソフトウェアの追加のインスタンス(2番目のインストール・ディレクトリ)が必要になります。
環境の概要は次のとおりです。
| ホスト名 | 色 | OS | SID | ユーザー | パスワード | ポート | インストール・ディレクトリ |
|---|---|---|---|---|---|---|---|
| host01 | 赤 | Linux 64ビット | orcl01 | ogguser1 oggadm1 |
pswd1u pswd1a |
15001 | /u01/app/oracle/ogg01 |
| host02 | 緑 | Linux 64ビット | orcl02 | ogguser2 oggadm2 |
pswd2u pswd2a |
15002 | /u01/app/oracle/ogg02 |
ハードウェアとソフトウェアの要件
ハードウェアとソフトウェアの要件のリストは、以下のとおりです。
ハードウェア
ソフトウェア
前提条件
このチュートリアルを始める前に、以下のことを実行しておく必要があります。
host01とhost02の2つのホストがあり、各ホストでOS、GGSCI、およびSQLの3つの環境プロンプトを使用します。 そのため、6つの異なる場所に入力します。 どのコマンドをどの場所に入力するのかに、特に注意してください。 誤ったコンテキストで誤ったコマンドを使用するのが、もっともよくある誤りです。
表記規則
指示と画面のテキストの色とフォントは、次のように解釈します。
また、文字"o"(オー)と数字"0"(ゼロ)の違いに注意してください。 SIDはorcl01です(最初がoで最後が01)。
ファイルとプロセスのネーミング規則
ファイルとプロセスのネーミング規則が役立つことがあります。 次に、このOBEで使用している規則の例を示します。
pxxxxhh.ext
内訳は次のとおりです。
1. ソフトウェアのインストール
ソフトウェアをインストールするには、Webからzipファイルをダウンロードし解凍するだけです。Oracle GoldenGateソフトウェアをインストールするには、以下の手順を実行します。
1.1 Oracle GoldenGateドキュメントにアクセスする
ドキュメント・ライブラリにアクセスします。
Webブラウザを使用して、http://www.oracle.com/technetwork/middleware/goldengate/documentation/index.htmlにアクセスします。 ドキュメントをオンラインで参照するのか、PDFまたはHTML形式でローカルのワークステーションにライブラリをダウンロードするのか、選択できます。
「View Library」をクリックします。
「Oracle Installation and Setup Guide」をクリックします。 オラクルのインストレーション・ガイドを読みます。
ソフトウェアをインストールするための前提条件として、Oracle GoldenGateのドキュメントにアクセスしました。
1.2 LinuxにOracle GoldenGateをインストールする
Oracle Software Delivery Cloudからソフトウェアをコピーします。
Webブラウザを使用して、https://edelivery.oracle.comにアクセスし、「Sign In」をクリックします。 Terms and Conditionsページで、両方の契約について「Yes」を選択し、「Continue」をクリックします。
Media Pack Searchページで、「Product Pack = Oracle Fusion Middleware」と「Platform = Linux x86-64」を選択します。
「Go」をクリックします。
「Oracle GoldenGate on Oracle v11.2.1 Media Pack for Linux x86-64」を選択します。
「Continue」をクリックします。
"Oracle GoldenGate V11.2.1.0.3 for Oracle 11g on Linux x86-64"の部品番号V34339-01が表示されていることを確認します。
「Download」をクリックします。
ソフトウェアをhost01(赤)のディレクトリにアンパックします。
Oracle GoldenGateソフトウェアを受け取るインストール・ディレクトリを作成します。
| Host01 - Linux |
[oggadm1@host01 /]$ cd /u01/app/oracle [oggadm1@host01 oracle]$ mkdir ogg01 [oggadm1@host01 ogg01]$ cd ogg01/ [oggadm1@host01 ogg01]$ |
ダウンロードしたzipをダウンロードした場所からogg01/にコピーします。 zipを解凍して展開(抽出)します。
| Host01 - Linux |
[oggadm1@host01 ogg01]$ cp /stage/V34339-01.zip . [oggadm1@host01 ogg01]$ unzip V34339-01.zip Archive: V34339-01.zip inflating: fbo_ggs_Linux_x64_ora11g_64bit.tar inflating: Oracle_GoldenGate_11.2.1.0.3_README.doc inflating: Oracle GoldenGate_11.2.1.0.3_README.txt inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.3.pdf [oggadm1@host01 ogg01]$ tar -xvpf fbo_ggs_Linux_x64_ora11g_64bit.tar UserExitExamples/ UserExitExamples/ExitDemo_more_recs/ UserExitExamples/ExitDemo_more_recs/Makefile_more_recs.HPUX ... 見やすくするため、多くの行が省略されています ... ulg.sql usrdecs.h zlib.txt [oggadm1@host01 ogg01]$ |
コピー・コマンドの最後のドットに注意してください。
GoldenGate Software Command Interface(GGSCI)を開始します。 デフォルトの空のサブディレクトリを作成します。
| Host01 - Linux |
[oggadm1@host01 ogg01]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (host01) 1> Create Subdirs Creating subdirectories under current directory /u01/app/oracle/ogg01 Parameter files /u01/app/oracle/ogg01/dirprm: already exists Report files /u01/app/oracle/ogg01/dirrpt: created Checkpoint files /u01/app/oracle/ogg01/dirchk: created Process status files /u01/app/oracle/ogg01/dirpcs: created SQL script files /u01/app/oracle/ogg01/dirsql: created Database definitions files /u01/app/oracle/ogg01/dirdef: created Extract data files /u01/app/oracle/ogg01/dirdat: created Temporary files /u01/app/oracle/ogg01/dirtmp: created Stdout files /u01/app/oracle/ogg01/dirout: created GGSCI (host01) 2> Exit [oggadm1@host01 ogg01]$ |
ディレクトリがすでに存在する場合、インストールを実行しても、そのディレクトリのコンテンツはそのままの状態で残ります。
他のホストについて同じ手順を実行します。 ソフトウェアをhost02(緑)のディレクトリにアンパックします。
Oracle GoldenGateソフトウェアを受け取るインストール・ディレクトリを作成します。
| Host02 - Linux |
[oggadm2@host02 /]$ cd /u01/app/oracle [oggadm2@host02 oracle]$ mkdir ogg02 [oggadm2@host02 ogg02]$ cd ogg02/ [oggadm2@host02 ogg02]$ |
ダウンロードしたzipをダウンロードした場所からogg02/にコピーします。 zipを解凍して展開(抽出)します。
| Host02 - Linux |
[oggadm2@host02 ogg02]$ cp /stage/V34339-01.zip . [oggadm2@host02 ogg02]$ unzip V34339-01.zip Archive: V34339-01.zip inflating: fbo_ggs_Linux_x64_ora11g_64bit.tar inflating: Oracle_GoldenGate_11.2.1.0.3_README.doc inflating: Oracle GoldenGate_11.2.1.0.3_README.txt inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.3.pdf [oggadm2@host02 ogg02]$ tar -xvpf fbo_ggs_Linux_x64_ora11g_64bit.tar UserExitExamples/ UserExitExamples/ExitDemo_more_recs/ UserExitExamples/ExitDemo_more_recs/Makefile_more_recs.HPUX ... 見やすくするため、多くの行が省略されています ... ulg.sql usrdecs.h zlib.txt [oggadm2@host02 ogg02]$ |
GoldenGate Software Command Interface(GGSCI)を開始します。 デフォルトの空のサブディレクトリを作成します。
| Host02 - Linux |
[oggadm2@host02 ogg02]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (host02) 1> Create Subdirs Creating subdirectories under current directory /u01/app/oracle/ogg02 Parameter files /u01/app/oracle/ogg02/dirprm: already exists Report files /u01/app/oracle/ogg02/dirrpt: created Checkpoint files /u01/app/oracle/ogg02/dirchk: created Process status files /u01/app/oracle/ogg02/dirpcs: created SQL script files /u01/app/oracle/ogg02/dirsql: created Database definitions files /u01/app/oracle/ogg02/dirdef: created Extract data files /u01/app/oracle/ogg02/dirdat: created Temporary files /u01/app/oracle/ogg02/dirtmp: created Stdout files /u01/app/oracle/ogg02/dirout: created GGSCI (host02) 2> Exit [oggadm2@host02 ogg02]$ |
ディレクトリがすでに存在する場合、インストールを実行しても、そのディレクトリのコンテンツはそのままです。
Linuxホストhost01とhost02へのOracle GoldenGateのインストールが完了しました。
2. 環境の設定
- DBLogin:
- 指定のuserid@SID/passwordを使用してDBに接続します。 曖昧さがない場合は、@SIDはオプションです。
- Start Mgr:
- Managerがすでに開始されている場合、再度開始しようとしても問題ありません。 これはセッション間で保持されます。
- Info Mgr:
- Managerが正常に開始されたかどうか、および正常に開始された場合に使用されているポート番号をレポートします。
- Info CheckpointTable:
- チェックポイント表(Replicatで使用される)が検出されたかどうかをレポートします。
- Set Editor:
- デフォルトはviです。 このデフォルトをgeditなどのGUIエディタに一時的に変更できます。
- 問合せInfo TranData ogguser2.*を実行したときに表は表示されませんが、実際には表は有効になっています。
- スキーマに追加された新しい表は、サプリメンタル・ロギングが自動的に有効になります。(従来のTranDataコマンドを使用している場合には、手動でサプリメンタル・ロギングを有効化する必要があります)
- 他のすべてのOEMデータベースがSchemaTranDataをサポートしているわけではありません。
環境を設定するには、ASCIIファイルを編集してOSユーティリティを実行します。 環境を設定するには、以下の手順を実行します。
2.1 Oracle 11g Release 2 Databaseを設定する
このセクションでは、SQL*Plusをsysdbaとして使用する必要があります。
host01で、LOG_MODEがARCHIVELOGに設定されていることを確認します。
| Host01 - Linux |
[oggadm1@host01 ogg01] sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon Sep 17 17:19:01 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SELECT log_mode FROM v$database; LOG_MODE ------------ ARCHIVELOG SQL> |
結果はARCHIVELOGになるはずです。 その場合、次の手順にスキップします。 結果がNOARCHIVELOGの場合は、以下のコマンドを入力します。
| Host01 - Linux |
LOG_MODE ------------ NOARCHIVELOG SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 3340451840 bytes Fixed Size 2232960 bytes Variable Size 1811942784 bytes Database Buffers 1509949440 bytes Redo Buffers 16326656 bytes Database mounted. SQL> ALTER DATABASE ARCHIVELOG; Database altered. SQL> ALTER DATABASE OPEN; Database altered. SQL> SELECT log_mode FROM v$database; LOG_MODE ------------ ARCHIVELOG SQL> |
サプリメンタル・ロギングと強制ロギングが正しく設定されていることを確認します。
| Host01 - Linux |
SQL> SELECT force_logging, supplemental_log_data_min FROM v$database;
FOR SUPPLEME
--- --------
YES YES
SQL>
|
結果は両方ともYESになるはずです。 その場合、次の手順にスキップします。 いずれかの結果がNOの場合は、以下のコマンドを入力します。
| Host01 - Linux |
FOR SUPPLEME --- -------- NO NO SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Database altered. SQL> ALTER DATABASE FORCE LOGGING; Database altered. SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> SELECT force_logging, supplemental_log_data_min FROM v$database; FOR SUPPLEME --- -------- YES YES SQL> |
コマンドを2回入力しても問題はありません。
host01で管理者とユーザー/スキーマの所有者を作成します。
実際の環境では、ユーザー/スキーマの所有者にはより多くの権限が割り当てられており、管理者にはより少ない権限が割り当てられていることが多いです。 DBMS_GOLDENGATE_AUTHパッケージはこのOBEでは必要ありませんが、さらに高度な設定でよく使用されるため、ここでこのパッケージを確認することをお勧めします。 不思議に思われるかもしれませんが、高度なシナリオではDBAロールは十分でないため、DBMS_GOLDENGATE_AUTHパッケージを実行する必要があります。 DBMS_GOLDENGATE_AUTHコマンドの入力時に、EXECの後ろのすべての文字列にスペースや改行を含めないでください。
| Host01 - Linux |
SQL> CREATE USER ogguser1 IDENTIFIED BY pswd1u; User created. SQL> CREATE USER oggadm1 IDENTIFIED BY pswd1a; User created. SQL> GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO ogguser1; Grant succeeded. SQL> GRANT dba TO oggadm1; Grant succeeded. SQL> EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE (grantee=>'OGGADM1',privile ge_type=>'capture',grant_select_privileges=>true, do_grants=>TRUE); PL/SQL procedure successfully completed. SQL> exit [oggadm1@host01 ogg01]$ |
両方のデータベースが相互に通信できることを確認します。
tnspingを使用して、データベース間の通信をテストします。
| Host01 - Linux |
[oggadm1@host01 ogg01]$ tnsping orcl01 TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 17-SEP-2012 18:52 Copyright (c) 1997, 2011, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)( HOST = host01.example.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl01. example.com))) OK (0 msec) [oggadm1@host01 ogg01]$ tnsping orcl02; TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 17-SEP-2012 18:52 Copyright (c) 1997, 2011, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)( HOST = host02.example.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl02. example.com))) OK (10 msec) [oggadm1@host01 ogg01]$ |
結果はOKになるはずです。 その場合、次の手順にスキップします。 結果がOKでない場合は、以下のコマンドを入力してtnsnames.oraを調べます。
| Host01 - Linux |
[oggadm1@host01 ogg01]$ more $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_
1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL02 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = host02.example.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl02.example.com)
)
)
ORCL01 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = host01.example.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl01.example.com)
)
)
[oggadm1@host01 ogg01]$
|
tnsnames.oraにorcl01とorcl02を定義します。
host01のデータベースorcl01に対して行ったすべてのことを、host02のorcl02に対して行う必要があります。
host02で、LOG_MODEがARCHIVELOGに設定されていることを確認します。
| Host02 - Linux |
[oggadm2@host02 ogg02] sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon Sep 17 17:19:01 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SELECT log_mode FROM v$database; LOG_MODE ------------ ARCHIVELOG SQL> |
結果はARCHIVELOGになるはずです。 その場合、次の手順にスキップします。 結果がNOARCHIVELOGの場合は、以下のコマンドを入力します。
| Host02 - Linux |
LOG_MODE ------------ NOARCHIVELOG SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 3340451840 bytes Fixed Size 2232960 bytes Variable Size 1811942784 bytes Database Buffers 1509949440 bytes Redo Buffers 16326656 bytes Database mounted. SQL> ALTER DATABASE ARCHIVELOG; Database altered. SQL> ALTER DATABASE OPEN; Database altered. SQL> SELECT log_mode FROM v$database; LOG_MODE ------------ ARCHIVELOG SQL> |
サプリメンタル・ロギングと強制ロギングが正しく設定されていることを確認します。
| Host02 - Linux |
SQL> SELECT force_logging, supplemental_log_data_min FROM v$database;
FOR SUPPLEME
--- --------
YES YES
SQL>
|
結果は両方ともYESになるはずです。 その場合、次の手順にスキップします。 いずれかの結果がNOの場合は、以下のコマンドを入力します。
| Host02 - Linux |
FOR SUPPLEME --- -------- NO NO SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Database altered. SQL> ALTER DATABASE FORCE LOGGING; Database altered. SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> SELECT force_logging, supplemental_log_data_min FROM v$database; FOR SUPPLEME --- -------- YES YES SQL> |
コマンドを2回入力しても問題はありません。
host02で管理者とユーザー/スキーマの所有者を作成します。
| Host02 - Linux |
SQL> CREATE USER ogguser2 IDENTIFIED BY pswd2u; User created. SQL> CREATE USER oggadm2 IDENTIFIED BY pswd2a; User created. SQL> GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO ogguser2; Grant succeeded. SQL> GRANT dba TO oggadm2; Grant succeeded. SQL> EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE (grantee=>'OGGADM2',privile ge_type=>'capture',grant_select_privileges=>true, do_grants=>TRUE); PL/SQL procedure successfully completed. SQL> exit [oggadm2@host02 ogg02]$ |
両方のデータベースが相互に通信できることを確認します。
tnspingを使用して、データベース間の通信をテストします。
| Host02 - Linux |
[oggadm2@host02 ogg02]$ tnsping orcl01 TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 17-SEP-2012 18:52 Copyright (c) 1997, 2011, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)( HOST = host01.example.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl01. example.com))) OK (0 msec) [oggadm2@host02 ogg02]$ tnsping orcl02; TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 17-SEP-2012 18:52 Copyright (c) 1997, 2011, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)( HOST = host02.example.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl02. example.com))) OK (10 msec) [oggadm2@host02 ogg02]$ |
結果はOKになるはずです。 その場合、次の手順にスキップします。 結果がOKでない場合は、以下のコマンドを入力してtnsnames.oraを調べます。
| Host02 - Linux |
[oggadm2@host02 ogg02]$ more $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_
1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL02 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = host02.example.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl02.example.com)
)
)
ORCL01 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = host01.example.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl01.example.com)
)
)
[oggadm2@host02 ogg02]$
|
tnsnames.oraにorcl01とorcl02を定義します。
host01とhost02のデータベースは、Oracle Goldengateをサポートするように設定されています。 各データベースのユーザーは、ホストごとに1人(または複数)のユーザーと1人の管理者でプロビジョニングされています。
2.2 スタートアップ・ファイルとManagerを作成する
任意のテキスト・エディタを使用して、host01(赤)のOracle GoldenGateインストール・ディレクトリにGLOBALSファイルを作成します。
名前の前に"./"を追加すると、GGSCIを使ってGLOBALSファイルを作成したり編集したりできます。 例:
GGSCI> Edit Param ./GLOBALS
これを適用する場合を除き、GGSCIを終了して再起動する必要があります。つまり、GGSCIを初めて開始する前にGGSCIを使わずに編集することもできます。
GLOBALSファイルの名前はすべて大文字にする必要があります。また、チェックポイント表のスキーマと名前を定義する1行(および--comments)のみ含まれます。 任意のスキーマと名前を使用できます。 vi、geditなどの任意のテキスト・エディタを使用できます。
| Host01 - Linux |
[oggadm1@host01 ogg01] vi GLOBALS
-- Created by Joe Admin 10/11/2012 on host01
CheckpointTable oggadm1.oggchkpt
[oggadm1@host01 ogg01]
|
チェックポイント表はReplicatでのみ使用されるため、双方向のセクションまで使用されません。 チェックポイント表を配置して使用せずにいても、問題ありません。
host02(緑)のOracle GoldenGateインストール・ディレクトリにGLOBALSファイルを作成します。
| Host02 - Linux |
[oggadm2@host02 ogg02]$ vi GLOBALS
-- Created by Joe Admin 10/11/2012 on host02
CheckpointTable oggadm2.oggchkpt
[oggadm2@host02 ogg02]$
|
GLOBALSファイルを変更した場合は、GGSCIを再起動する必要があります。
host01(赤)のOracle GoldenGateインストール・ディレクトリに、オプションのstartup.oby(Obey)ファイルを作成します。
以下は、GGSCIの開始時にほぼ毎回入力するGGSCIコマンドです。これらのコマンドはセッション間で保持されず、何度も入力する必要があるため、スタートアップobeyファイルを作成しておくと便利です。
定期的にログインする複数の異なるデータベースやスキーマがある場合は、startup01.oby、startup02.oby、startup03.obyなどのようにできます。 これについては、後で、プロセス・ファイルのネーミング規則で再度説明します。
| Host01 - Linux |
[oggadm1@host01 ogg01] vi startup.oby
-- Created by Joe Admin 10/11/2012 on host01
DBLogin UserID oggadm1@orcl01, Password pswd1a
Start Mgr
Info Mgr
Info CheckpointTable
Set Editor gedit
[oggadm1@host01 ogg01]
|
host02(緑)のOracle GoldenGateインストール・ディレクトリにオプションのstartup.oby(Obey)ファイルを作成します。
| Host02 - Linux |
[oggadm2@host02 ogg02]$ vi startup.oby
-- Created by Joe Admin 10/11/2012 on host02
DBLogin UserID oggadm2@orcl02, Password pswd2a
Start Mgr
Info Mgr
Info CheckpointTable
Set Editor gedit
[oggadm2@host02 ogg02]$
|
host01のdirprm/にManagerパラメータ(mgr.prm)ファイルを作成します。
GGSCIを開始します。 拡張子のないファイルを編集します。 2行(およびコメント)を追加します。
| Host01 - Linux |
[oggadm1@host01 ogg01] ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (host01) 1> Edit Param mgr -- Created by Joe Admin 10/11/2012 on host01 Port 15001 PurgeOldExtracts ./dirdat/*, UseCheckpoints GGSCI (host01) 2> Info mgr Manager is DOWN! GGSCI (host01) 3> |
注: 上記を正しく実行すると、GGSCIによって自動的に拡張子.prmが追加されて、ファイルがdirprm/ディレクトリに保存されます。 ユーザーが誤って拡張子を追加した場合は、GGSCIによってファイル名が大文字に変換され、ファイルがインストール・ディレクトリに保存されて実質的に使用できなくなります。
host02のdirprm/にManagerパラメータ(mgr.prm)ファイルを作成します。
| Host02 - Linux |
[oggadm2@host02 ogg02]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (host02) 1> Edit Param mgr -- Created by Joe Admin 10/11/2012 on host02 Port 15002 PurgeOldExtracts ./dirdat/*, UseCheckpoints GGSCI (host02) 2> Info mgr Manager is DOWN! GGSCI (host02) 3> |
host01とhost02では、ポート番号が異なることに注意してください。 Oracle GoldenGateインスタンスが異なるポートにある場合、IPアドレスとポートの組合せが一意であれば、ポートを異なるものにする必要はありません。 ただし、これらのポートを一意のものにすることをお勧めします。
Obeyファイルを使用してhost01でManagerを開始します。 または、GGSCIを開始するたびに各行を入力することもできます。
| Host01 - Linux |
GGSCI (host01) 3> Obey startup.oby
GGSCI (host01) 4> -- Created by Joe Admin 10/11/2012 on host01
GGSCI (host01) 5> DBLogin UserID oggadm1@orcl01, Password pswd1a
Successfully logged into database.
GGSCI (host01) 6> Start Mgr
Manager started.
GGSCI (host01) 7> Info Mgr
Manager is running (IP port host01.example.com.15001).
GGSCI (host01) 8> Info CheckpointTable
No checkpoint table specified, using GLOBALS specification (oggadm1.oggchkpt)...
Checkpoint table oggadm1.oggchkpt does not exist.
GGSCI (host01) 9> Set Editor gedit
GGSCI (host01) 10>
|
以下の手順でチェックポイント表を作成します。
Obeyファイルを使用してhost02でManagerを開始します。
| Host02 - Linux |
GGSCI (host02) 3> Obey startup.oby
GGSCI (host02) 4> -- Created by Joe Admin 10/11/2012 on host02
GGSCI (host02) 5> DBLogin UserID oggadm2@orcl02, Password pswd2a
Successfully logged into database.
GGSCI (host02) 6> Start Mgr
Manager started.
GGSCI (host02) 7> Info Mgr
Manager is running (IP port host02.example.com.15002).
GGSCI (host02) 8> Info CheckpointTable
No checkpoint table specified, using GLOBALS specification (oggadm2.oggchkpt)...
Checkpoint table oggadm2.oggchkpt does not exist.
GGSCI (host02) 9> Set Editor gedit
GGSCI (host02) 10>
|
以下の手順でチェックポイント表を作成します。
グローバル・ファイルとスタートアップ・ファイルがすべて作成されると、バックグラウンドのManagerプロセスが開始されます。 以下のコマンドを入力すると、どのプロセスが実行されているのか、いつでも確認できます。
GGSCI (host) > Info All
2.3 表を作成する
host01でチェックポイント表を作成します (チェックポイント表はソースでは必要ありません。つまり、チェックポイント表は一方向レプリケーションには使用されません。ただし、host01がターゲットになった場合は、双方向レプリケーションに使用されます)。
| Host01 - Linux |
GGSCI (host01) 10> Add CheckpointTable No checkpoint table specified, using GLOBALS specification (oggadm1.oggchkpt). Successfully created checkpoint table oggadm1.oggchkpt. GGSCI (host01) 11> Exit [oggadm1@host01 ogg01] |
1つのチェックポイント表でスキーマ全体に十分です。
host02でチェックポイント表を作成します。
| Host02 - Linux |
GGSCI (host02) 10> Add CheckpointTable No checkpoint table specified, using GLOBALS specification (oggadm2.oggchkpt). Successfully created checkpoint table oggadm2.oggchkpt. GGSCI (host02) 11> Exit [oggadm2@host02 ogg02]$ |
host01のスキーマogguser1に空のソース・サンプル表を作成します。
サンプル表をすでに作成している場合は、作成したものを使用できます。 サンプル表をまだ作成していない場合、Oracle GoldenGateソフトウェアに、小規模なサンプル表tcustmerとtcustordを作成するためのスクリプトdemo_ora_create.sqlが付属しています。 任意のSQLユーティリティを使用してスクリプトを実行できます。 特に好んで使用しているユーティリティがない場合は、sqlplusを使用します。
| Host01 - Linux |
[oggadm1@host01 ogg01] sqlplus ogguser1@orcl01/pswd1u @demo_ora_create.sql SQL*Plus: Release 11.2.0.3.0 Production on Tue Sep 18 14:38:50 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options DROP TABLE tcustmer * ERROR at line 1: ORA-00942: table or view does not exist Table created. DROP TABLE tcustord * ERROR at line 1: ORA-00942: table or view does not exist Table created. SQL> exit [oggadm1@host01 ogg01] |
ORA-00942"エラー"は無視して構いません。 スクリプトを2回目に実行するときには、これらのエラーは表示されません。
警告: スクリプトを2回目に実行すると、表が削除されます。
host02のスキーマogguser2に空のターゲット・サンプル表を作成します。
| Host02 - Linux |
[oggadm2@host02 ogg02] sqlplus ogguser2@orcl02/pswd2u @demo_ora_create.sql SQL*Plus: Release 11.2.0.3.0 Production on Tue Sep 18 14:44:06 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options DROP TABLE tcustmer * ERROR at line 1: ORA-00942: table or view does not exist Table created. DROP TABLE tcustord * ERROR at line 1: ORA-00942: table or view does not exist Table created. SQL> exit [oggadm2@host02 ogg02]$ |
Oracle 11g Release 2では、CREATE TABLEなどのDDLのレプリケーションをサポートしています。そのため、DMLのレプリケーションを開始する前に、他の方法でターゲットに空の表を作成できます。
(Obey startup.obyを実行してデータベースにログインしてから)以下のコマンドを入力すると、GGSCIが実行されている使用可能な表をいつでも確認できます。
GGSCI (host) > List Tables * GGSCI (host) > List Tables ogguser1.*
2.4 トランザクション・データを追加する
GGSCIを再起動し、ユーザー・スキーマ全体に対してAdd TranDataを実行します。
| Host01 - Linux |
[oggadm1@host01 ogg01] ./ggsci Oracle GoldenGate Command Interpreter for Oracle ... 見やすくするため、多くの行が省略されています ... GGSCI (host01) 1> Obey startup.oby ... 見やすくするため、多くの行が省略されていますが、すべてのプロセスが起動していることを確認してください. GGSCI (host01) > List Tables * OGGADM1.OGGCHKPT OGGADM1.OGGCHKPT_LOX Found 2 tables matching list criteria. GGSCI (host01) > List Tables ogguser1.* OGGUSER1.TCUSTMER OGGUSER1.TCUSTORD Found 2 tables matching list criteria. GGSCI (host01) > Add TranData ogguser1.tcustmer Logging of supplemental redo data enabled for table OGGUSER1.TCUSTMER. GGSCI (host01) > Add TranData ogguser1.tcust* Logging of supplemental redo log data is already enabled for table OGGUSER1.TCUST MER. Logging of supplemental redo data enabled for table OGGUSER1.TCUSTORD. GGSCI (host01) > Info TranData ogguser1.* Logging of supplemental redo log data is enabled for table OGGUSER1.TCUSTMER. Columns supplementally logged for table OGGUSER1.TCUSTMER: CUST_CODE. Logging of supplemental redo log data is enabled for table OGGUSER1.TCUSTORD. Columns supplementally logged for table OGGUSER1.TCUSTORD: CUST_CODE, ORDER_DATE, PRODUCT_CODE, ORDER_ID. GGSCI (host01) xx> |
個々の表またはワイルド・カードにトランザクション・データを追加できます。 ワイルド・カードは1つのスキーマ全体にも使用できますが、複数のスキーマ全体に使用することをお勧めします。 トランザクション・データを2回追加しても、問題ありません。
host02でほぼ同じことを行います (これは、ターゲットには必要ありません。つまり、一方向レプリケーションには使用されません。ただし、host02がソースになった場合は、双方向レプリケーションに使用されます)。
TranDataの代わりにSchemaTranDataを使用します。
| Host02 - Linux |
[oggadm2@host02 ogg02] ./ggsci Oracle GoldenGate Command Interpreter for Oracle ... 見やすくするため、多くの行が省略されています ... GGSCI (host02) 1> Obey startup.oby ... 見やすくするため、多くの行が省略されていますが、すべてのプロセスが起動していることを確認してください. GGSCI (host02) > List Tables ogguser2.* OGGUSER2.TCUSTMER OGGUSER2.TCUSTORD Found 2 tables matching list criteria. GGSCI (host02) > Add SchemaTranData ogguser2 2012-09-18 15:18:34 INFO OGG-01788 SCHEMATRANDATA has been added on schema o gguser2. GGSCI (host02) > Info SchemaTranData ogguser2 2012-09-18 15:21:06 INFO OGG-01785 Schema level supplemental logging is enab led on schema OGGUSER2. GGSCI (host02) xx> |
レプリケーションの結果は同じですが、SchemaTranDataを使用した場合に、管理上の相違点がいくつかあります。
トランザクション・データが、Oracle GoldenGateに関連するすべてのユーザー表に対して有効になりました。
2.5 列定義を作成する(defgen)
OSユーティリティを使用して、ソース表からターゲット表への列マッピングを作成します。
このユーティリティは、表の構造が異なる(異種間レプリケーション)場合に必要ですが、表の構造が同じ(同種間レプリケーション)場合でも、このユーティリティを使用することを強くお勧めします。 表の構造が同じである場合は、SourceDefsパラメータの代わりにAssumeTargetDefsパラメータを使用することもできます。 これについては、後で説明します。
概要のファイルとプロセスのネーミング規則を確認してください。
| Host01 - Linux |
GGSCI (host01) > Edit Param dsalesab -- defgen column definitions for Sales: tcust* from host01 (a) to host02 (b) -- Created by Joe Admin on 10/11/2012 DefsFile dirdef/dsalesab.def, Purge UserID oggadm1@orcl01, Password pswd1a Table ogguser1.tcust*; GGSCI (host01) > Exit [oggadm1@host01 ogg01] ./defgen paramfile dirprm/dsalesab.prm *********************************************************************** Oracle GoldenGate Table Definition Generator for Oracle ... 見やすくするため、多くの行が省略されています ... Expanding wildcard ogguser1.tcust*: Retrieving definition for OGGUSER1.TCUSTMER Retrieving definition for OGGUSER1.TCUSTORD Definitions generated for 2 tables in dirdef/dsalesab.def [oggadm1@host01 ogg01] |
単一の表、複数の表(ワイルド・カードを使用)、1つのスキーマ全体、または複数のスキーマに同時に定義を作成できます。 ファイルに"余分な"(Oracle GoldenGateで使用されない)定義が含まれていても、問題ありません。 host02に送信する前に、dirdef/dsalesab.defの内容を確認できます。
ソースのhost01からターゲットのhost02にファイルをコピーします。
.defファイルをターゲットのdirdefディレクトリにコピーする際、カット・アンド・ペースト、scp、ftpなどの任意の方法を使用できます。 この例では、Secure Shell Copy(scp)を使用します。 /u01/app/oracle/ogの後でコマンドラインを中断しないでください。scpコマンドはすべて1行で入力してください。
| Host01 - Linux |
[oggadm1@host01 ogg01] scp dirdef/dsalesab.def oggadm2@host02:/u01/app/oracle/og g02/dirdef The authenticity of host 'host02 (192.0.2.29)' can't be established. RSA key fingerprint is 8e:60:d0:a7:fc:55:6e:d9:81:bb:c9:90:19:f4:a8:11. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'host02,192.0.2.29' (RSA) to the list of known hosts. oggadm2@host02's password: ******** dsalesab.def 100% 1877 1.8KB/s 00:00 [oggadm1@host01 ogg01] |
アスタリスクをパスワード(pswd2aなど)に置き換えます。
host02の適切なディレクトリにファイルがそのまま配置されていることを確認します。
| Host02 - Linux |
[oggadm2@host02 ogg02]$ ls -l dirdef
total 4
-rw-r--r-- 1 oggadm2 oinstall 1877 Sep 18 13:43 dsalesab.def
[oggadm2@host02 ogg02]$
|
列定義を作成してコピーしました。 表の構造に変更があった場合は、この手順を再度実行する必要があります。
3. Extractを使用したデータ取得の設定
- -- :
- コメント。
- SETENV:
- SID(データベース・システム識別子)を.profileファイルまたはUserIDパラメータのいずれかを使用して任意の場所に定義するか、SETENVパラメータを使用してここで定義する必要があります。 必要なのは1箇所のみですが、ここで定義すると、.profileファイル内の定義よりも優先されます。
- ExtTrail:
- Data Pumpを使用する場合は、"外部"(external)ではありません。
- aa:
- 順序番号が、このアルファベットの接頭辞に追加されます。 たとえば、Trailファイルにaa000000、aa000001、aa000002などの名前が付与されて、ファイルが指定のサイズ(デフォルトは100MB)よりも大きくなると、ロールオーバーされます。
- TranLogOptions:
- 双方向レプリケーション時のループを防ぐため、後の双方向レプリケーションで使用されます。
- Table:
- 複数のTableパラメータを設定でき、それぞれに1つの表名(ワイルド・カードも使用可能)を指定します。 スキーマ名にワイルド・カードを使用することはできません。
データ取得(Extractと呼ばれます)は、ソース側で実行します。 このプライマリのExtractは必須です。セカンダリのExtract(Data Pumpとも呼ばれます)はオプションですが、使用を強くお勧めします。 データ取得を設定するには、次の手順を実行します。
3.1 プライマリのExtractを設定する
ソースのhost01で、プライマリExtractパラメータ・ファイルを作成します。
概要で説明しているネーミング規則を使用して説明します。
パスと拡張子は自動的に追加されるため、ネーミング規則に従った場合のパスおよびファイル名は、dirprm/esalesaa.prmになります。 (プライマリのExtractは、証跡ファイルをターゲット・ホストに直接書き込むことができるため、その場合の接尾辞は"ab"になります。ただし、ソース・ホストから読み取られる前にローカルのData Pumpを使用するため、ここでは接尾辞は"aa"になります。 これはネーミング規則に従った例であり、プロセスには任意の名前を指定できます。)
| Host01 - Linux |
[oggadm1@host01 ogg01] ./ggsci Oracle GoldenGate Command Interpreter for Oracle ... 見やすくするため、多くの行が省略されています ... GGSCI (host01) 1> Obey startup.oby ... 見やすくするため、多くの行が省略されていますが、すべてのプロセスが起動していることを確認してください. GGSCI (host01) > Edit Param esalesaa -- Primary Extract from host01 to host02 -- Created by Joe Admin on 10/11/2012 -- SETENV(ORACLE_SID = "orcl01") Extract esalesaa ExtTrail ./dirdat/aa UserID oggadm1@orcl01, Password pswd1a -- TranLogOptions ExcludeUser oggadm1 Table ogguser1.tcust*; GGSCI (host01) > |
使用しているパラメータには、次のようなものがあります。
ファイル内のパスワードを暗号化できますが、このチュートリアルでは範囲外です。
View Param esalesaaと入力すると、作業内容をいつでも確認できます。
ExtractグループとローカルのExtractTrailファイルを作成します。
| Host01 - Linux |
GGSCI (host01) > Add Extract esalesaa, TranLog, Begin Now EXTRACT added. GGSCI (host01) > Add ExtTrail ./dirdat/aa, Extract esalesaa, Megabytes 5 EXTTRAIL added. GGSCI (host01) > |
Megabytes 5はオプションです。 デフォルトは100MBです。
プライマリExtractを設定し、作成しましたが、まだ起動はされていません。 次の手順のために、GGSCIは実行したままにします。
3.2 Data Pumpの設定
セカンダリExtract(Data Pump)パラメータ・ファイルを作成します。
概要で説明しているネーミング規則を使用して説明します。
パスと拡張子は自動的に追加されるため、ネーミング規則に従った場合のパスおよびファイル名は、dirprm/psalesab.prmになります。
| Host01 - Linux |
GGSCI (host01) > Edit Param psalesab
-- Data pump (secondary Extract) from host01 to host02
-- Created by Joe Admin on 10/11/2012
Extract psalesab
RmtHost host02, MgrPort 15002, Compress
RmtTrail ./dirdat/ab
Passthru
Table ogguser1.tcust*;
GGSCI (host01) >
|
このTableスキーマはソースです。
View Param psalesab と入力すると、作業内容をいつでも確認できます。
Data PumpグループとリモートのExtractTrailファイルを作成します。
| Host01 - Linux |
GGSCI (host01) > Add Extract psalesab, ExtTrailSource ./dirdat/aa EXTRACT added. GGSCI (host01) > Add RmtTrail ./dirdat/ab, Extract psalesab, Megabytes 5 RMTTRAIL added. GGSCI (host01) > |
Megabytes 5はオプションです。デフォルトは100MBです。指定したサイズで証跡ファイルがロールオーバーされます。
Data Pumpは、ローカルのTrailファイルaaを読取り、リモートのTrailファイルabへと書込みます。 リモートのTrailファイルはdirdat/ab000000という名前で作成され、いっぱいになると、次のTrailファイルはdirdat/ab000001、dirdat/ab000002と続きます。 このTrailファイルのセットは、異なるホストに配置されるため(同じ名前のディレクトリに配置される場合でも)、同じ名前(abなど)になる可能性もあります。 異なるファイル名としているのは、単にRmtTrailパラメータの値で異なるTrailファイルが作成されるということを示しています。
セカンダリExtractを設定し、作成しましたが、まだ起動はされていません。次の手順のために、GGSCIを実行したままにします。
3.3 Extractプロセスを検証する(オプション)
Extractプロセスが正しく作成および登録されていることを確認します。
| Host01 - Linux |
GGSCI (host01) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED ESALESAA 00:00:00 00:03:24
EXTRACT STOPPED PSALESAB 00:00:00 00:01:22
GGSCI (host01) >
|
Manager以外はまだ何も起動されていないため、ExtractのステータスはSTOPPEDと表示されます。
Trailファイルが正しく作成および登録されていることを確認します。
| Host01 - Linux |
GGSCI (host01) > Info ExtTrail *
Extract Trail: ./dirdat/aa
Extract: ESALESAA
Seqno: 0
RBA: 0
File Size: 5M
Extract Trail: ./dirdat/ab
Extract: PSALESAB
Seqno: 0
RBA: 0
File Size: 5M
GGSCI (host01) >
|
まだExtractが起動されていないため、順序番号(Seqno)と相対バイト・アドレス(RBA)は0と表示されます。
次の手順のために、GGSCIを実行したままにします。
4. Replicatを使用したデータ配信の設定
データ配信(Replicatとも呼ばれます。"e"は意図的に省略されています)は、ターゲット側で実行します。 データ配信を設定するには、次の手順を実行します。
4.1 Replicatを設定する
ターゲットのhost02で、Replicatパラメータ・ファイルを作成します。
| Host02 - Linux |
[oggadm2@host02 ogg02]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle ... 見やすくするため、多くの行が省略されています ... GGSCI (host02) 1> Obey startup.oby ... 見やすくするため、多くの行が省略されていますが、すべてのプロセスが起動していることを確認してください. GGSCI (host02) > Edit Param rsalesab -- Delivery from host01 to host02 -- Created by Joe Admin on 10/11/2012 Replicat rsalesab UserID oggadm2@orcl02, password pswd2a -- AssumeTargetDefs SourceDefs dirdef/dsalesab.def DiscardFile dirrpt/rsalesab.dsc, Append Map ogguser1.tcustmer, Target ogguser2.tcustmer; Map ogguser1.*, Target ogguser2.*; GGSCI (host02) > |
Map文は、列とフィールドを変換して、(ここに示すように)シンプルにも非常に複雑にもできます。 たとえば、3つのソース列first_name、middle_init、last_nameを組み合わせて1つのターゲット列full_nameにすることができます。
Replicatプロセスを作成します。
| Host02 - Linux |
GGSCI (host02) > Add Replicat rsalesab, ExtTrail ./dirdat/ab
REPLICAT added.
GGSCI (host02) >
|
View Param rsalesabと入力すると、作業内容をいつでも確認できます。
Replicatプロセスが正しく作成および登録されていることを確認します。
| Host02 - Linux |
GGSCI (host02) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT STOPPED RSALESAB 00:00:00 00:00:33
GGSCI (host02) >
|
Manager以外はまだ何も開始されていないため、ReplicatのステータスはSTOPPEDと表示されます。
4.2 すべてのプロセスを開始する
ソースですべてのExtractプロセスを開始します。
| Host01 - Linux |
GGSCI (host01) > Start Extract *
Sending START request to MANAGER ...
EXTRACT ESALESAA starting
Sending START request to MANAGER ...
EXTRACT PSALESAB starting
GGSCI (host01) >
|
Start *と入力するか、 Start e*および Start p*と入力することもできます。
ターゲットですべてのReplicatプロセスを開始します。
| Host02 - Linux |
GGSCI (host02) > Start Replicat *
Sending START request to MANAGER ...
REPLICAT RSALESAB starting
GGSCI (host02) >
|
Start *または Start rsales*と入力することもできます。
ターゲットのすべてのプロセスに関する情報を表示します。
概要情報を表示します。
| Host02 - Linux |
GGSCI (host02) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING RSALESAB 00:00:00 00:00:03
GGSCI (host02) >
|
さらに情報を表示します。
| Host02 - Linux |
GGSCI (host02) > Info rsalesab
REPLICAT RSALESAB Last Started 2012-09-19 19:13 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:04 ago)
Log Read Checkpoint File ./dirdat/bc000001
First Record RBA 0
GGSCI (host02) >
|
さらに詳細情報を表示します。
| Host02 - Linux |
GGSCI (host02) > Info rsalesab, Detail
REPLICAT RSALESAB Last Started 2012-09-19 19:13 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:09 ago)
Log Read Checkpoint File ./dirdat/ab000000
First Record RBA 0
Extract Source Begin End
./dirdat/ab000000 * Initialized * First Record
./dirdat/ab000000 * Initialized * First Record
Current directory /u01/app/oracle/ogg02
Report file /u01/app/oracle/ogg02/dirrpt/RSALESAB.rpt
Parameter file /u01/app/oracle/ogg02/dirprm/rsalesab.prm
Checkpoint file /u01/app/oracle/ogg02/dirchk/RSALESAB.cpr
Checkpoint table oggadm2.oggchkpt
Process file /u01/app/oracle/ogg02/dirpcs/RSALESAB.pcr
Stdout file /u01/app/oracle/ogg02/dirout/RSALESAB.out
Error log /u01/app/oracle/ogg02/ggserr.log
GGSCI (host02) >
|
どの場合にも、StatusがRUNNINGになり、前回の更新またはチェックポイントからの時間は10秒未満になります。
ソースのすべてのプロセスに関する情報を表示します。
概要情報を表示します。
| Host01 - Linux |
GGSCI (host01) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING ESALESAA 00:00:00 00:00:04
EXTRACT RUNNING PSALESAB 00:00:00 00:00:05
GGSCI (host01) >
|
詳細情報を表示します。
| Host01 - Linux |
GGSCI (host01) > Info Extract * EXTRACT ESALESAA Last Started 2012-09-19 19:12 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:08 ago) Log Read Checkpoint Oracle Redo Logs 2012-09-19 19:21:49 Seqno 18, RBA 29845504 SCN 0.1372459 (1372459) EXTRACT PSALESAB Last Started 2012-09-19 19:12 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:01 ago) Log Read Checkpoint File ./dirdat/ab000000 First Record RBA 0 GGSCI (host01) > Exit [oggadm1@host01 ogg01] |
Replicatと同様に、StatusはRUNNINGになり、前回の更新またはチェックポイントからの時間は10秒未満になります。
どの場合でも、ステータスRUNNINGが表示されます。 ソース表は空のままです。 まだデータが配置されておらず、何もレプリケートされていません。
5. データの生成
Oracle GoldenGateソフトウェアには、サンプルのデータ・トラフィックを生成するためのSQLスクリプトが付属しています。 既存の表をレプリケートする方法(複雑)と新しい空の表を使って始める方法(簡単)は、異なります。 空の表セットにサンプル・データを生成するには、次の手順を実行します。
5.1 INSERTを生成する(Initial Load)
SQLスクリプトを実行して行を挿入(INSERT)します。
ソースのhost01でOSプロンプトを使用して、sqlplusでdemo_ora_insert.sqlスクリプトを実行します。
| Host01 - Linux |
[oggadm1@host01 ogg01] sqlplus ogguser1@orcl01/pswd1u @demo_ora_insert.sql
SQL*Plus: Release 11.2.0.3.0 Production on Wed Sep 19 19:27:03 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
1 row created.
1 row created.
1 row created.
1 row created.
Commit complete.
SQL>
|
エラーは表示されないはずです。 次の手順のために、SQL*Plusを実行したままにします。
ソース表に行が挿入されたことを確認します。
| Host01 - Linux |
SQL> SELECT * FROM tcustmer; CUST_CODE NAME CITY STATE ---------- ------------------------------ -------------------- ------ WILL BG SOFTWARE CO. SEATTLE WA JANE ROCKY FLYER INC. DENVER CO SQL> SELECT * FROM tcustord; CUST ORDER_DAT PRODUCT_ ORDER_ID PRODUCT_PRICE PRODUCT_AMOUNT TRANSACTION_ID ---- --------- -------- ---------- ------------- -------------- -------------- WILL 30-SEP-94 CAR 144 17520 3 100 JANE 11-NOV-95 PLANE 256 133300 1 100 SQL> exit [oggadm1@host01 ogg01] |
ソースのGGSCI Extractプロセスがまだ実行されていることを確認します。
ソースのhost01で、以下のコマンドを入力します。
| Host01 - Linux |
[oggadm1@host01 ogg01] ./ggsci GGSCI (host01) 1> Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING ESALESAA 00:00:00 00:00:00 EXTRACT RUNNING PSALESAB 00:00:00 00:00:06 GGSCI (host01) 2> Exit [oggadm1@host01 ogg01] |
StatusにABENDEDと表示される場合は、プロセス・レポート(後述のトピックで説明)でエラーの内容を確認します。
ターゲットのGGSCI Replicatプロセスがまだ実行されていることを確認します。
ターゲットのhost02で、GGSCIはまだ実行されているはずです。 以下のコマンドを入力します。
| Host02 - Linux |
GGSCI (host02) > Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT RUNNING RSALESAB 00:00:00 00:00:05 GGSCI (host02) > Exit [oggadm2@host02 ogg02] |
StatusにABENDEDと表示される場合は、プロセス・レポート(後述のトピックで説明)でエラーの内容を確認します。
ターゲット表に行が挿入されたことを確認します。
ターゲットのhost02でOSプロンプトを使用して、次のSQL問合せを実行します。
| Host02 - Linux |
[oggadm2@host02 ogg02] sqlplus ogguser2@orcl02/pswd2u SQL> SELECT * FROM tcustmer; CUST_CODE NAME CITY STATE ---------- ------------------------------ -------------------- ------ WILL BG SOFTWARE CO. SEATTLE WA JANE ROCKY FLYER INC. DENVER CO SQL> SELECT * FROM tcustord; CUST ORDER_DAT PRODUCT_ ORDER_ID PRODUCT_PRICE PRODUCT_AMOUNT TRANSACTION_ID ---- --------- -------- ---------- ------------- -------------- -------------- WILL 30-SEP-94 CAR 144 17520 3 100 JANE 11-NOV-95 PLANE 256 133300 1 100 SQL> exit [oggadm2@host02 ogg02] |
ソース・データベースとターゲット・データベースのtcust*表が一致しているはずです。
ソース内にすでに行が含まれている場合は、ターゲットで別の方法を使ってInitial Loadを実行できますが、両方の表が最初に空の場合は、これがもっとも簡単な方法です。
5.2 UPDATE/DELETEを生成する
SQLスクリプトを実行して行を更新(UPDATE)および削除(DELETE)します。
ソースのhost01でOSプロンプトを使用して、sqlplusでdemo_ora_misc.sqlスクリプトを実行します。
| Host01 - Linux |
[oggadm1@host01 ogg01] sqlplus ogguser1@orcl01/pswd1u @demo_ora_misc.sql
... 見やすくするため、多くの行が省略されています ...
Commit complete.
3 rows deleted.
Rollback complete.
SQL>
|
エラーは表示されないはずです。
ソース表の行が更新および削除されたことを確認します。
| Host01 - Linux |
SQL> SELECT * FROM tcustmer; CUST_CODE NAME CITY STATE ---------- ------------------------------ -------------------- ------ WILL BG SOFTWARE CO. SEATTLE WA JANE ROCKY FLYER INC. DENVER CO DAVE DAVE'S PLANES INC. TALLAHASSEE FL BILL BILL'S USED CARS DENVER CO ANN ANN'S BOATS NEW YORK NY SQL> SELECT * FROM tcustord; CUST ORDER_DAT PRODUCT_ ORDER_ID PRODUCT_PRICE PRODUCT_AMOUNT TRANSACTION_ID ---- --------- -------- ---------- ------------- -------------- -------------- BILL 31-DEC-95 CAR 765 14000 3 100 BILL 01-JAN-96 TRUCK 333 25000 15 100 WILL 30-SEP-94 CAR 144 16520 3 100 SQL> exit [oggadm1@host01 ogg01] |
tcustmerに3行挿入され、tcustordに3行挿入され、tcustordで4行更新され、tcustordから2行削除されました。
ソースのGGSCI Extractプロセスがまだ実行されていることを確認します。
ソースのhost01で、以下のコマンドを入力します。
| Host01 - Linux |
[oggadm1@host01 ogg01] ./ggsci GGSCI (host01) 1> Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING ESALESAB 00:00:00 00:00:09 EXTRACT RUNNING PSALESAB 00:00:00 00:00:01 GGSCI (host01) 2> |
(このように単純な場合は、Obey startup.obyを実行する必要はありません。ただし、実行しても問題ありません)。 最初のINSERTが機能する場合は、UPDATEとDELETEも機能する可能性が高いです。
ターゲットのGGSCI Replicatプロセスがまだ実行されていることを確認します。
ターゲットのhost02で、GGSCIはまだ実行されているはずです。 以下のコマンドを入力します。
| Host02 - Linux |
GGSCI (host02) > Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT RUNNING RSALESAB 00:00:00 00:00:09 GGSCI (host02) > Exit [oggadm2@host02 ogg02] |
StatusはまだRUNNINGとなっているはずです。
ターゲット表の行が更新および削除されたことを確認します。
ターゲットのhost02で、次のSQL問合せを実行します。
| Host02 - Linux |
[oggadm2@host02 ogg02] sqlplus ogguser2@orcl02/pswd2u SQL> SELECT * FROM tcustmer; CUST_CODE NAME CITY STATE ---------- ------------------------------ -------------------- ------ WILL BG SOFTWARE CO. SEATTLE WA JANE ROCKY FLYER INC. DENVER CO DAVE DAVE'S PLANES INC. TALLAHASSEE FL BILL BILL'S USED CARS DENVER CO ANN ANN'S BOATS NEW YORK NY SQL> SELECT * FROM tcustord; CUST ORDER_DAT PRODUCT_ ORDER_ID PRODUCT_PRICE PRODUCT_AMOUNT TRANSACTION_ID ---- --------- -------- ---------- ------------- -------------- -------------- WILL 30-SEP-94 CAR 144 16520 3 100 BILL 31-DEC-95 CAR 765 14000 3 100 BILL 01-JAN-96 TRUCK 333 25000 15 100 SQL> exit [oggadm2@host02 ogg02] |
Oracle GoldenGateの基本的な一方向機能Extract、Data Pump、およびReplicatの構成と操作が完了しました。
6. Oracle GoldenGate環境の管理
プロセスの実行中と実行後にレポートが生成されます。 このレポートには、プロセスの実行に関連する情報、警告、およびエラー(発生した場合)が含まれています。 レポートを表示するには、次の手順を実行します。
6.1 レポートを表示する
ソースのプロセス・レポートを表示します。
Extractのプロセス・レポートを表示します。
| Host01 - Linux |
GGSCI (host01) 2> Send Extract esalesaa, Report Sending REPORT request to EXTRACT ESALESAA ... Request processed. GGSCI (host01) 3> View Report esalesaa *********************************************************************** Oracle GoldenGate Capture for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:32:12 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. Starting at 2012-09-19 19:12:33 *********************************************************************** Operating System Version: Linux Version #1 SMP Wed Jul 27 21:02:33 EDT 2011, Release 2.6.32-200.13.1.el5uek Node: host01.example.com Machine: x86_64 soft limit hard limit Address Space Size : unlimited unlimited Heap Size : unlimited unlimited File Size : unlimited unlimited CPU Time : unlimited unlimited Process id: 18569 Description: *********************************************************************** ** Running with the following parameters ** *********************************************************************** ESALESAA.rpt (25%) |
[Enter]を押すと、一度1行ずつ移動できます。[Space]を押すと、一度に1ページずつ移動できます。 レポートの一番下に移動します。
| Host01 - Linux |
***********************************************************************
* ** Run Time Statistics ** *
***********************************************************************
Report at 2012-09-19 19:42:10 (activity since 2012-09-19 19:27:05)
Output to ./dirdat/aa:
From Table OGGUSER1.TCUSTMER:
# inserts: 5
# updates: 1
# deletes: 0
# discards: 0
From Table OGGUSER1.TCUSTORD:
# inserts: 5
# updates: 3
# deletes: 2
# discards: 0
***********************************************************************
** Run Time Warnings **
***********************************************************************
GGSCI (host01) 4>
|
同じ手順を実行してpsalesabレポートを表示できます。
ターゲットのプロセス・レポートを表示します。
ターゲットのhost02で、Replicatのプロセス・レポートを表示します (このように単純な場合は、Obey startup.obyを実行する必要はありません。ただし、実行しても問題ありません)。
| Host02 - Linux |
[oggadm2@host02 ogg02]$ ./ggsci GGSCI (host02) > Send Replicat rsalesab, Report Sending REPORT request to REPLICAT RSALESAB ... Request processed. GGSCI (host02)> View Report rsalesab *********************************************************************** Oracle GoldenGate Delivery for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:37:31 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. Starting at 2012-09-19 19:49:13 *********************************************************************** Operating System Version: Linux Version #1 SMP Wed Jul 27 21:02:33 EDT 2011, Release 2.6.32-200.13.1.el5uek Node: host02.example.com Machine: x86_64 soft limit hard limit Address Space Size : unlimited unlimited Heap Size : unlimited unlimited File Size : unlimited unlimited CPU Time : unlimited unlimited Process id: 23557 Description: *********************************************************************** ** Running with the following parameters ** *********************************************************************** --More--(25%) |
[Enter]を押すと、一度1行ずつ移動できます。[Space]を押すと、一度に1ページずつ移動できます。 レポートの一番下に移動します。
| Host02 - Linux |
***********************************************************************
* ** Run Time Statistics ** *
***********************************************************************
Last record for the last committed transaction is the following:
___________________________________________________________________
Trail name : ./dirdat/ab000000
Hdr-Ind : E (x45) Partition : . (x04)
UndoFlag : . (x00) BeforeAfter: B (x42)
RecLength : 61 (x003d) IO Time : 2012-09-20 02:04:41.000792
IOType : 3 (x03) OrigNode : 255 (xff)
TransInd : . (x02) FormatType : R (x52)
SyskeyLen : 0 (x00) Incomplete : . (x00)
AuditRBA : 20 AuditPos : 6237080
Continued : N (x00) RecCount : 1 (x01)
2012-09-20 02:04:41.000792 Delete Len 61 RBA 3775
Name: OGGUSER1.TCUSTORD
___________________________________________________________________
Reading ./dirdat/ab000000, current RBA 3932, 16 records
Report at 2012-09-20 14:04:52 (activity since 2012-09-19 19:49:15)
From Table OGGUSER1.TCUSTMER to OGGUSER2.TCUSTMER:
# inserts: 5
# updates: 1
# deletes: 0
# discards: 0
From Table OGGUSER1.TCUSTORD to OGGUSER2.TCUSTORD:
# inserts: 5
# updates: 3
# deletes: 2
# discards: 0
***********************************************************************
** Run Time Warnings **
***********************************************************************
GGSCI (host02) >
|
Replicatのinserts/updates/deletesの数が、Extractでの数と一致するはずです。 discardsがあった場合は、破棄された理由を確認する必要があります。
レポートは、ユーザーがレポートの送信を指定した(上記の操作)場合、またはプロセスが停止した場合に生成されます。 レポートの名前と番号は、最新のレポートにはprocessname.rptが付与され、最近のレポートはprocessname0.rpt、processname1.rpt、processname2.rptとなり、もっとも古いレポートはprocessname9.rptとなります。 新しいレポートが作成されるたびに、もっとも古いレポートが破棄されるまで、古いレポートはすべて名前/番号が変更されて"番号が1つ大きく"なります。 最大11のレポート(番号のない最新のレポートと、0~9の以前のレポート)が同時に保持されます。
6.2 統計情報を表示する
ソースのExtractの統計情報を表示します。
| Host01 - Linux |
GGSCI (host01) > Send Extract esalesaa, Stats
Sending STATS request to EXTRACT ESALESAA ...
Start of Statistics at 2012-09-20 14:08:06.
Output to ./dirdat/aa:
Extracting from OGGUSER1.TCUSTMER to OGGUSER1.TCUSTMER:
*** Total statistics since 2012-09-19 19:27:05 ***
Total inserts 5.00
Total updates 1.00
Total deletes 0.00
Total discards 0.00
Total operations 6.00
*** Daily statistics since 2012-09-20 00:00:00 ***
Total inserts 3.00
Total updates 1.00
Total deletes 0.00
Total discards 0.00
Total operations 4.00
*** Hourly statistics since 2012-09-20 14:00:00 ***
No database operations have been performed.
*** Latest statistics since 2012-09-19 19:27:05 ***
Total inserts 5.00
Total updates 1.00
Total deletes 0.00
Total discards 0.00
Total operations 6.00
Extracting from OGGUSER1.TCUSTORD to OGGUSER1.TCUSTORD:
*** Total statistics since 2012-09-19 19:27:05 ***
Total inserts 5.00
Total updates 3.00
Total deletes 2.00
Total discards 0.00
Total operations 10.00
*** Daily statistics since 2012-09-20 00:00:00 ***
Total inserts 3.00
Total updates 3.00
Total deletes 2.00
Total discards 0.00
Total operations 8.00
*** Hourly statistics since 2012-09-20 14:00:00 ***
No database operations have been performed.
*** Latest statistics since 2012-09-19 19:27:05 ***
Total inserts 5.00
Total updates 3.00
Total deletes 2.00
Total discards 0.00
Total operations 10.00
End of Statistics.
GGSCI (host01) >
|
コマンドStats esalesaaで、同じ処理が実行されます。 何らかの理由でプロセスが停止した場合は、統計情報はすべて失われます。
ターゲットのReplicatの統計情報を表示します。
| Host02 - Linux |
GGSCI (host02) > Send Replicat rsalesab, Stats
Sending STATS request to REPLICAT RSALESAB ...
Start of Statistics at 2012-09-20 14:10:51.
Replicating from OGGUSER1.TCUSTMER to OGGUSER2.TCUSTMER:
*** Total statistics since 2012-09-19 19:49:15 ***
Total inserts 5.00
Total updates 1.00
Total deletes 0.00
Total discards 0.00
Total operations 6.00
*** Daily statistics since 2012-09-20 00:00:00 ***
Total inserts 3.00
Total updates 1.00
Total deletes 0.00
Total discards 0.00
Total operations 4.00
*** Hourly statistics since 2012-09-20 14:00:00 ***
No database operations have been performed.
*** Latest statistics since 2012-09-19 19:49:15 ***
Total inserts 5.00
Total updates 1.00
Total deletes 0.00
Total discards 0.00
Total operations 6.00
Replicating from OGGUSER1.TCUSTORD to OGGUSER2.TCUSTORD:
*** Total statistics since 2012-09-19 19:49:15 ***
Total inserts 5.00
Total updates 3.00
Total deletes 2.00
Total discards 0.00
Total operations 10.00
*** Daily statistics since 2012-09-20 00:00:00 ***
Total inserts 3.00
Total updates 3.00
Total deletes 2.00
Total discards 0.00
Total operations 8.00
*** Hourly statistics since 2012-09-20 14:00:00 ***
No database operations have been performed.
*** Latest statistics since 2012-09-19 19:49:15 ***
Total inserts 5.00
Total updates 3.00
Total deletes 2.00
Total discards 0.00
Total operations 10.00
End of Statistics.
GGSCI (host02) >
|
前のプライマリのExtractの統計情報は、Data Pumpが関連していたため(ソース・ホストに対してローカルに配置)、OGGUSER1からOGGUSER1まででした。 このReplicatでは、統計情報がスキーマOGGUSER1からOGGUSER2までであるのが、より明らかです。
他の種類の統計情報も利用できます。
6.3 プロセスを停止および削除する
まだその必要はありませんが、個々のプロセスを停止することが必要になった場合、単にStop Extract esalesaaまたはStop *と入力すれば、ホスト上のすべてのプロセスが停止します。 esalesaaを停止するプロセス名に置き換えます。
まだその必要はありませんが、個々のプロセスを削除することが必要になった場合、まず、データベースに接続していることを確認し(DBLogin)、Delete Extract esalesaaまたはDelete ER *と入力して、ホスト上のすべてのプロセスを削除する必要があります。 GGSCIでAre you sure?と確認を求められたら、yと入力します。 この確認をなくすには、コマンドの最後に感嘆符を追加します。 たとえば、Delete ER * !とすると、答えは「はい」であると見なされます。
7. 双方向のサポートの設定
一方向レプリケーションがすでに機能しています。 もっとも簡単な実装では、双方向レプリケーションは単なる2つの関連しない一方向レプリケーションです。 そのため、概要のネーミング/ナンバリング規則を使用し、一方の方向が"a"から"b"までの一連の"sales"ファイル(esalesaa、psalesab、dsalesab、rsalesab)で、もう一方の方向が"b"から"a"までの一連の"sales"ファイル(esalesbb、psalesba、dsalesba、rsalesba)になります。 双方向レプリケーションのサポートを設定するには、以下の手順を実行します。
7.1 Extractを設定する
ソースのhost02で、プライマリExtractパラメータ・ファイルを作成します。 この手順は、トピック3.1.1とほぼ同じです。補足情報については、トピック3.1.1を参照してください。
| Host02 - Linux |
[oggadm2@host02 ogg02] ./ggsci Oracle GoldenGate Command Interpreter for Oracle ... 見やすくするため、多くの行が省略されています ... GGSCI (host02) 1> Obey startup.oby ... 見やすくするため、多くの行が省略されています ... GGSCI (host02) > Edit Param esalesbb -- Primary Extract from host02 to host01 -- Created by Joe Admin on 10/11/2012 -- SETENV(ORACLE_SID = "orcl02") Extract esalesbb ExtTrail ./dirdat/bb UserID oggadm2@orcl02, Password pswd2a TranLogOptions ExcludeUser oggadm2 Table ogguser2.tcust*; GGSCI (host02) > |
このExtractパラメータ・ファイルとhost01上のファイルの違い(明らかな名前変更以外)は、TranLogOptionsがここではアクティブ(コメント解除済み)になっていることです。
ExtractグループとローカルのExtractTrailファイルを作成します。
| Host02 - Linux |
GGSCI (host02) > Add Extract esalesbb, TranLog, Begin Now EXTRACT added. GGSCI (host02) > Add ExtTrail ./dirdat/bb, Extract esalesbb, Megabytes 5 EXTTRAIL added. GGSCI (host02) > |
セカンダリExtract(Data Pump)パラメータ・ファイルを作成します。 この手順は、トピック3.2.1とほぼ同じです。補足情報については、トピック3.2.1を参照してください。
| Host02 - Linux |
GGSCI (host02) > Edit Param psalesba
-- Data pump (secondary Extract) from host02 to Host01
-- Created by Joe Admin on 10/11/2012
Extract psalesba
RmtHost host01, MgrPort 15001, Compress
RmtTrail ./dirdat/ba
Passthru
Table ogguser2.tcust*;
GGSCI (host02) >
|
Data PumpグループとリモートのExtractTrailファイルを作成します。
| Host02 - Linux |
GGSCI (host02) > Add Extract psalesba, ExtTrailSource ./dirdat/bb EXTRACT added. GGSCI (host02) > Add RmtTrail ./dirdat/ba, Extract psalesba, Megabytes 5 RMTTRAIL added. GGSCI (host02) > |
Extractプロセスが正しく作成および登録されていることを確認します。 この手順は、トピック3.3.1とほぼ同じです。補足情報については、トピック3.3.1を参照してください。
| Host02 - Linux |
GGSCI (host02) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED ESALESBB 00:00:00 00:03:35
EXTRACT STOPPED PSALESBA 00:00:00 00:00:15
REPLICAT RUNNING RSALESAB 00:00:00 00:00:05
GGSCI (host02) >
|
host02からhost01へのExtract(双方向ソリューションの戻り方向)の設定が完了しました。
7.2 Replicatを設定する
ターゲットのhost01で、Replicatパラメータ・ファイルを作成します。 この手順は、トピック4.1.1とほぼ同じです。
| Host01 - Linux |
[oggadm1@host01 ogg01]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle ... 見やすくするため、多くの行が省略されています ... GGSCI (host01) 1> Obey startup.oby ... 見やすくするため、多くの行が省略されていますが、すべてのプロセスが起動していることを確認してください. GGSCI (host01) > Edit Param rsalesba -- Delivery from host02 to host01 -- Created by Joe Admin on 10/11/2012 Replicat rsalesba UserID oggadm1@orcl01, password pswd1a AssumeTargetDefs -- SourceDefs dirdef/dsalesab.def DiscardFile dirrpt/rsalesba.dsc, Append Map ogguser2.tcustmer, Target ogguser1.tcustmer; Map ogguser2.*, Target ogguser1.*; GGSCI (host01) > |
SourceDefsを再度定義してhost02からhost01にコピーできますが、同じ表構造であるため、AssumeTargetDefsを使用できます。 実際に、rsalesabにAssumeTragetDefsを使用することもできます。
Replicatプロセスを作成します。
| Host01 - Linux |
GGSCI (host01) > Add Replicat rsalesba, ExtTrail ./dirdat/ba
REPLICAT added.
GGSCI (host01) >
|
双方向レプリケーションに対応するように、既存のExtractプロセスを修正します。 ExcludeUser機能を使用して、ループバックを防ぎます。
この機能を有効にする行をコメント解除します。 host02でも同じです。
| Host01 - Linux |
GGSCI (host01) > Stop esalesaa Sending STOP request to EXTRACT ESALESAA ... Request processed. GGSCI (host01) > edit param esalesaa -- Primary Extract from host01 to host02 -- Created by Joe Admin on 10/11/2012 -- SETENV(ORACLE_SID = "orcl01") Extract esalesaa ExtTrail ./dirdat/aa UserID oggadm1@orcl01, Password pswd1a TranLogOptions ExcludeUser oggadm1 Table ogguser1.tcust*; GGSCI (host01) > |
Replicatプロセスが正しく作成および登録されていることを確認します。
| Host01 - Linux |
GGSCI (host01) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED ESALESAA 00:00:00 00:04:22
EXTRACT RUNNING PSALESAB 00:00:00 00:00:02
REPLICAT STOPPED RSALESBA 00:00:00 00:06:57
GGSCI (host01) >
|
StatusがSTOPPEDの場合は、Time Since Chkptが10秒を超えても問題ありませんが、StatusがRUNNINGの場合は、10秒未満になっている必要があります。
ターゲットのhost01ですべてのプロセスを開始します。
| Host01 - Linux |
GGSCI (host01) > Start * Sending START request to MANAGER ... EXTRACT ESALESAA starting EXTRACT PSALESAB is already running. Sending START request to MANAGER ... REPLICAT RSALESBA starting GGSCI (host01) > Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING ESALESAA 00:00:00 00:00:00 EXTRACT RUNNING PSALESAB 00:00:00 00:00:02 REPLICAT RUNNING RSALESBA 00:00:00 00:00:01 GGSCI (host01) > Exit [oggadm1@host01 ogg01] |
ソースのhost02ですべてのプロセスを開始します。
| Host02 - Linux |
GGSCI (host02) > Start * Sending START request to MANAGER ... EXTRACT ESALESBB starting Sending START request to MANAGER ... EXTRACT PSALESBA starting REPLICAT RSALESAB is already running. GGSCI (host02) > Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING ESALESBB 00:00:00 00:00:01 EXTRACT RUNNING PSALESBA 00:00:00 00:00:02 REPLICAT RUNNING RSALESAB 00:00:00 00:00:04 GGSCI (host02) > |
すべてのExtractプロセスとReplicatプロセスがhost02からhost01に設定されて、開始されました。 host01からhost02への前のExtractとReplicatは、まだ実行されています。
7.3 トラフィックを生成する
host01で新しい行を挿入(INSERT)します。
| Host01 - Linux |
[oggadm1@host01 ogg01] sqlplus ogguser1@orcl01/pswd1u SQL> INSERT INTO tcustmer VALUES ('WHIZ','WHIZBANG CORP','HOSTA','AA'); 1 row created. SQL> SELECT * FROM tcustmer; CUST NAME CITY ST ---- ------------------------------ -------------------- -- DAVE DAVE'S PLANES INC. TALLAHASSEE FL BILL BILL'S USED CARS DENVER CO ANN ANN'S BOATS NEW YORK NY WHIZ WHIZBANG CORP HOSTA AA WILL BG SOFTWARE CO. SEATTLE WA JANE ROCKY FLYER INC. DENVER CO 6 rows selected. SQL> commit; Commit complete. SQL> exit [oggadm1@host01 ogg01] |
host02でGGSCIプロセスがまだ実行されていることを確認します。
| Host02 - Linux |
GGSCI (host02) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING ESALESBB 00:00:00 00:00:05
EXTRACT RUNNING PSALESBA 00:00:00 00:00:05
REPLICAT RUNNING RSALESAB 00:00:00 00:00:06
GGSCI (host02) >
|
Whizbang行がhost02にレプリケートされたことを確認します。
| Host02 - Linux |
GGSCI (host02) > Exit [oggadm2@host02 ogg02] sqlplus ogguser2@orcl02/pswd2u SQL> SELECT * FROM tcustmer; CUST NAME CITY ST ---- ------------------------------ -------------------- -- WILL BG SOFTWARE CO. SEATTLE WA JANE ROCKY FLYER INC. DENVER CO DAVE DAVE'S PLANES INC. TALLAHASSEE FL BILL BILL'S USED CARS DENVER CO ANN ANN'S BOATS NEW YORK NY WHIZ WHIZBANG CORP HOSTA AA 6 rows selected. SQL> |
行の順序が異なっていても、問題ありません。 次の手順のために、SQL*Plusを実行したままにします。
host02で新しい行を挿入(INSERT)します。
| Host02 - Linux |
SQL> INSERT INTO tcustmer VALUES ('FOO','FOOBAR INC','HOSTB','CC'); 1 row created. SQL> SELECT * FROM tcustmer; CUST NAME CITY ST ---- ------------------------------ -------------------- -- WILL BG SOFTWARE CO. SEATTLE WA JANE ROCKY FLYER INC. DENVER CO DAVE DAVE'S PLANES INC. TALLAHASSEE FL BILL BILL'S USED CARS DENVER CO ANN ANN'S BOATS NEW YORK NY WHIZ WHIZBANG CORP HOSTA AA FOO FOOBAR INC HOSTB CC 7 rows selected. SQL> commit; Commit complete. SQL> exit [oggadm2@host02 ogg02] |
host02でGGSCIプロセスがまだ実行されていることを確認します。
| Host02 - Linux |
[oggadm2@host02 ogg02] ./ggsci GGSCI (host02) > Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING ESALESBB 00:00:00 00:00:06 EXTRACT RUNNING PSALESBA 00:00:00 00:00:03 REPLICAT RUNNING RSALESAB 00:00:00 00:00:04 GGSCI (host02) > |
Foobar行がhost01にレプリケートされたことを確認します。
| Host01 - Linux |
[oggadm1@host01 ogg01] sqlplus ogguser1@orcl01/pswd1u SQL> SELECT * FROM tcustmer; CUST NAME CITY ST ---- ------------------------------ -------------------- -- DAVE DAVE'S PLANES INC. TALLAHASSEE FL BILL BILL'S USED CARS DENVER CO ANN ANN'S BOATS NEW YORK NY WHIZ WHIZBANG CORP HOSTA AA FOO FOOBAR INC HOSTB CC WILL BG SOFTWARE CO. SEATTLE WA JANE ROCKY FLYER INC. DENVER CO 7 rows selected. SQL> exit [oggadm1@host01 ogg01] |
host01とhost02の両方に同じ行があるはずです (行の順序が異なるのは、挿入した2つの行が、前の削除とロールバックで残った、レプリケートされない"穴"に入ったためです)。
ここで、競合の検出と解消(CDR)の可能性は考慮しません。これは、このOBEの範囲外になります。
まとめ
- Oracle GoldenGateソフトウェアをインストールおよび設定する
- Extractプロセス、Data Pumpプロセス、およびReplicatプロセスを設定および開始する
- サンプル・データを生成してレプリケーションの有効性をテストする
- プロセスで生成されるレポートを管理する
- Oracle GoldenGateの製品ドキュメント・バージョン11.2.1(E35209-01)およびその他の旧バージョン
- Oracle Universityのコース
- 関連情報が記載された外部Webサイト
- Oracle GoldenGateの詳細については、Oracle Learning Libraryの他のOBEを参照してください。
- カリキュラム主要開発者: Steve Friedberg。
- 共著者: Richard Johnston、Hadi Koesnodihardjo、Simon Whitworth、Joe deBuzna、Chris Lawless。
Oracle GoldenGateを使用すると、このサンプル演習で行ったよりもさらに多くのことを実行できます。
このチュートリアルで学習した内容は、以下のとおりです。
参考資料
このチュートリアルのトピックに関連するヘルプ・トピック
著者
このOracle by Exampleをナビゲートする際、以下の機能を使用できます。
- ヘッダー・ボタンの非表示:
- ヘッダー内のボタンを非表示にするには、タイトルをクリックします。 ボタンを再表示するには、もう一度タイトルをクリックします。
- トピック一覧ボタン:
- すべてのトピックの一覧です。 いずれかのトピックをクリックすると、その項に移動します。
- すべてのトピックを開く/閉じる:
- すべての項に対する詳細を表示または非表示にします。 デフォルトでは、すべてのトピックが閉じられています。
- すべてのイメージを表示/非表示:
- すべてのスクリーンショットを表示または非表示にします。 デフォルトでは、すべてのイメージが表示されています。
- 印刷:
- コンテンツを印刷します。 現在表示または非表示にされているコンテンツが印刷されます。
このチュートリアルの特定の項に移動するには、一覧からトピックを選択してください。