iSeriesでのOracle GoldenGate: DB/400からDB/400への一方向レプリケーション
概要
- Manager:
- ソース・ホストとターゲット・ホストの両方で他のプロセスを開始および停止します。
- Initial Load:
- オプション。 ターゲット表を1回移入するために使用します。 ソース表から直接読み取ることも、ログから読み取ることもできます。 このOBEでは、Initial Loadは使用しません。
- Extract:
- トランザクション・データを証跡ファイルに取得するために、ソース上で実行します。
- Data Pump:
- オプションですが、強くお勧めします。 IPネットワーク経由で証跡ファイルをソースからターゲットに送信します。 技術的には、セカンダリのExtractです。
- Replicat:
- ターゲット・データベースにデータを提供します。 Replicatは通常ターゲット上で実行されますが、iSeriesを使用する場合は中間ホスト上で実行されます。
- 2台のiSeriesホスト:1台はソース、もう1台はターゲットです。 ソースとターゲットを同じホスト上に配置することもできますが、この場合、何が起こっているかを把握するのが概念的に難しくなります。 ホストが1つのみの場合は、/etc/hostsファイルを変更して、hosta.example.comとhostc.example.comのエイリアスを作成すると便利です。
- 1台のLinuxホスト。 この例では、Oracle Enterprise Linux OEL 5.7(64ビット)を使用しています。
- iSeriesでのOracle GoldenGate (Oracle Software Delivery Cloud)、バージョン11.2.1.0.2、部品番号V34025-1。
- iSeries for Linux-64でのOracle GoldenGate、バージョン11.2.1.0.2、部品番号V34007-01。
- UNIX用のODBC(The unixODBC Project home page)。 unixODBC-binを参照するyumリポジトリまたはRPMリポジトリがすでに存在する場合もあります。
- iSeries for Linux(Installationの横にある右矢印>をクリックします)。
- Linuxソフトウェアへのrootアクセスを設定する(/etcへの書込みアクセス)
- iSeries上にユーザーIDとライブラリを作成する
- Webにアクセスしてソフトウェアとドキュメントをダウンロードする
- Some_Command
- コマンドまたは値として入力します。 例:
./ggsciと入力して、コマンドライン・インタプリタを開始します。
- Some_Prompt
- システムがプロンプトまたは応答としてこれに対応します。 例:
ウェルカム・スプラッシュ・バナーの後、GGSCI (hostA) 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)。
- nn=number=
- 01、02、03、共通プロジェクトに関連するすべてのファイルはnn。
- hh=host-to-host=
- AC、CA、AB、BC、ソース、中間、ターゲットのホスト名で指定。
- ext=extension=
- prm=parameter(dirprm/に保存)、dsc=discard、rpt=report(dirrpt/に保存)、def=definition(dirdef/に保存)、oby=obey(インストール・ディレクトリに保存)、sql=SQL(dirsql/に保存)。
目的
このOracle By Example(OBE)チュートリアルでは、1組のiSeries DB/400データベースでのOracle GoldenGateバージョン11.2.1.0.2のインストール、構成、および管理について説明します。
所要時間
約3時間
はじめに
Oracle GoldenGateはトランザクション・ログ(iSeriesでは"ジャーナル"と呼ばれる)を読み取り、1つまたは複数のターゲット・データベースに変更を書き込むことで、異種データベースのレプリケーションを非常に高速に実行します。 一般的な環境では、次の5つのプロセスを使用します。
シナリオ
HostA(赤)とHostC(緑)という2つのiSeriesホストでDB/400が実行されています。 HostAには、パスワードpswdaを持つユーザー/スキーマogguserAが含まれており、HostCには、パスワードpswdcを持つユーザー/スキーマoggusercが含まれています。 HostAには、HostCにレプリケートする必要がある表(tcustmerおよびtcustord)が存在します。 Oracle GoldenGateではこのレプリケーションを直接実行できないため、中間にWindowsホストまたはLinuxホストが存在する必要があります。 HostB(黄)は64ビットのLinuxを実行しており、パスワードpswdbを持つユーザーogguserbを含んでいます。 画面のバナーの色に注意して、どのコマンドがどのホストに対して実行されるのかを把握するようにしてください。 また、GGSCIコマンド、SQLコマンド、OSコマンドのいずれを入力するのか(プロンプトに表示されます)に注意してください。
環境の概要は次のとおりです。
| ホスト名 | 色 | OS | ユーザー | パスワード | ポート | インストール・ディレクトリ |
|---|---|---|---|---|---|---|
| hostA | 赤 | iSeries | oggusera | pswda | 15001 | ˜/ogg_i_400_A |
| hostB | 黄 | Linux | ogguserb | pswdb | 15002 | ˜/ogg_linux_400_BC |
| hostC | 緑 | iSeries | ogguserc | pswdc | 15003 | ˜/ogg_i_400_C |
ハードウェアおよびソフトウェア要件
ハードウェアとソフトウェアの要件リストは、以下のとおりです。
ハードウェア
ソフトウェア
hostBにはデータベースが配置されておらず、ターゲットにはOracle GoldenGateソフトウェアが配置されていない点に注意します。 つまり、このOBEの一方向セクションでは、hostCにOracleソフトウェアをインストールする必要はありません。
前提条件
このチュートリアルを始める前に、以下のことを確認してください。
hostA、hostB、hostCという3つのホストがあり、各ホストに3つの環境プロンプト(OS、GGSCI、SQL.)がある点に注意してください。 入力個所が9つあるため、 どのコマンドをどの場所に入力するのかに、特に注意してください。 誤ったコンテキストでの誤ったコマンドの使用が、もっともよくあるエラーです。
表記規則
指示と画面のテキストの色およびフォントは、次のように解釈します。
ファイルとプロセスのネーミング規則
ファイルとプロセスのネーミング規則が役立つことがあります。 次に、このOBEで使用している規則の例を示します。
pnnhh.ext
ここで、それぞれの変数は次のような意味を持ちます。
1. ソフトウェアのインストール
ソフトウェアをインストールするには、Webからzipファイルを取得して解凍するだけです。 Oracle GoldenGateソフトウェアをインストールするには、以下の手順を実行します。
1.1 iSeriesへのOracle GoldenGateのインストール
ドキュメント・ライブラリにアクセスします。
Webブラウザを使用して、http://www.oracle.com/technetwork/middleware/goldengate/documentation/index.htmlにアクセスします。 ドキュメントをオンラインで参照するのか、PDFまたはHTML形式でローカルのワークステーションにライブラリをダウンロードするのかを選択できます。
「View Library」をクリックします。
DB2 for iのインストール・ガイドを読みます。
「DB2 for i Installation and Setup Guide」をクリックします。
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 = IBM i on POWER Systems」を選択します。
「Go」をクリックします。
「Oracle GoldenGate for Non Oracle Database v11.2.1 Media Pack for IBM i on Power Systems」を選択します。
「Continue」をクリックします。
部品番号V34025-01が表示されていることを確認します。
「Download」をクリックします。
ソフトウェアをソースであるhostA(赤)のディレクトリにアンパックします。
Oracle GoldenGateソフトウェアを受け取るインストール・ディレクトリを作成します。
| HostA - iSeries |
[/] cd ~ [/home/oggusera] mkdir ogg_i_400_A [/home/oggusera] cd ogg_i_400_A [/home/oggusera/ogg_i_400_A] |
ダウンロードしたzipをダウンロードした場所からogg_i_400_A/にコピーします。 zipを解凍して展開(抽出)します。 copyコマンドの末尾にターゲットとしてドットを指定してください。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] cp ~/Downloads/V34025-01.zip . [/home/oggusera/ogg_i_400_A] unzip V34025-01.zip Archive: V34025-01.zip inflating: ggs_OS400_ppc_DB2400_64bit.tar inflating: Oracle_GoldenGate_11.2.1.0.2_README.doc inflating: Oracle_GoldenGate_11.2.1.0.2_README.txt inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.2.pdf [/home/oggusera/ogg_i_400_A] tar -xvpf ggs_OS400_ppc_DB2400_64bit.tar x . x ./mgr, 4373077 bytes, 8542 tape blocks ... many lines omitted for clarity ... x ./ggos400install, 3191 bytes, 7 tape blocks x ./rundb2.sh, 1646 bytes, 4 tape blocks [/home/oggusera/ogg_i_400_A] |
GoldenGate Software Command Interface(GGSCI)を開始します。 デフォルトの空のサブディレクトリを作成します。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./ggsci Oracle GoldenGate Command Interpreter for DB2 for i Version 11.2.1.0.2 OGGCORE_11.2.1.0.3_PLATFORMS_120724.2205 IBM i, ppc, 64bit (optimized), IBM DB2 for i on Jul 26 2012 00:43:51 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (hostA) 1> Create SubDirs Creating subdirectories under current directory /QOpenSys/home/oggusera/ogg_i_40 0_A Parameter files /QOpenSys/home/oggusera/ogg_i_400_A/dirprm: already e xists Report files /QOpenSys/home/oggusera/ogg_i_400_A/dirrpt: created Checkpoint files /QOpenSys/home/oggusera/ogg_i_400_A/dirchk: created Process status files /QOpenSys/home/oggusera/ogg_i_400_A/dirpcs: created SQL script files /QOpenSys/home/oggusera/ogg_i_400_A/dirsql: created Database definitions files /QOpenSys/home/oggusera/ogg_i_400_A/dirdef: created Extract data files /QOpenSys/home/oggusera/ogg_i_400_A/dirdat: created Temporary files /QOpenSys/home/oggusera/ogg_i_400_A/dirtmp: created Stdout files /QOpenSys/home/oggusera/ogg_i_400_A/dirout: created GGSCI (hostA) 2> Exit [/home/oggusera/ogg_i_400_A] |
ディレクトリが存在する場合、コンテンツはそのまま残されます。
ggos400installユーティリティを実行します。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ls -l ggo* -r--r--r-- 1 oggusera 0 3191 Jun 28 16:41 ggos400install [/home/oggusera/ogg_i_400_A] chmod +x ggos400install [/home/oggusera/ogg_i_400_A] ls -l ggo* -r-xr-xr-x 1 oggusera 0 3191 Jun 28 16:41 ggos400install [/home/oggusera/ogg_i_400_A] ./ggos400install Installation library for the native object is: OGGUSERA ------------------------------------------------ The native object has been restored to library OGGUSERA. ------------------------------------------------ [/home/oggusera/ogg_i_400_A] |
このユーティリティは、ネイティブのジャーナル・リーダー・オブジェクトへのシンボリック・リンクを作成します。このオブジェクトはネイティブ・オブジェクトOGGPRCJRNを探す場所を決定するために、ExtractおよびGGSCIプログラムによって使用されます。
ターゲットのhostC(緑)に対して、ステップ3~5を繰り返します。
ソフトウェアをターゲットであるhostC(緑)のディレクトリにアンパックします。
Oracle GoldenGateソフトウェアを受け取るインストール・ディレクトリを作成します。
| HostC - iSeries |
[/] cd ~ [/home/ogguserc] mkdir ogg_i_400_C [/home/ogguserc] cd ogg_i_400_C [/home/ogguserc/ogg_i_400_C] |
ダウンロードしたzipをダウンロードした場所からogg_i_400_C/にコピーします。 zipを解凍して展開(抽出)します。 copyコマンドの末尾にターゲットとしてドットを指定してください。
| HostC - iSeries |
[/home/ogguserc/ogg_i_400_C] cp ~/Downloads/V34025-01.zip . [/home/ogguserc/ogg_i_400_C] unzip V34025-01.zip Archive: V34025-01.zip inflating: ggs_OS400_ppc_DB2400_64bit.tar inflating: Oracle_GoldenGate_11.2.1.0.2_README.doc inflating: Oracle_GoldenGate_11.2.1.0.2_README.txt inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.2.pdf [/home/ogguserc/ogg_i_400_C] tar -xvpf ggs_OS400_ppc_DB2400_64bit.tar x . x ./mgr, 4373077 bytes, 8542 tape blocks ... many lines omitted for clarity ... x ./ggos400install, 3191 bytes, 7 tape blocks x ./rundb2.sh, 1646 bytes, 4 tape blocks [/home/ogguserc/ogg_i_400_C] |
GoldenGate Software Command Interface(GGSCI)を開始します。 デフォルトの空のサブディレクトリを作成します。
| HostC - iSeries |
[/home/ogguserc/ogg_i_400_C] ./ggsci Oracle GoldenGate Command Interpreter for DB2 for i Version 11.2.1.0.2 OGGCORE_11.2.1.0.3_PLATFORMS_120724.2205 IBM i, ppc, 64bit (optimized), IBM DB2 for i on Jul 26 2012 00:43:51 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (hostA) 1> Create SubDirs Creating subdirectories under current directory /QOpenSys/home/ogguserc/ogg_i_40 0_C Parameter files /QOpenSys/home/ogguserc/ogg_i_400_C/dirprm: already e xists Report files /QOpenSys/home/ogguserc/ogg_i_400_C/dirrpt: created Checkpoint files /QOpenSys/home/ogguserc/ogg_i_400_C/dirchk: created Process status files /QOpenSys/home/ogguserc/ogg_i_400_C/dirpcs: created SQL script files /QOpenSys/home/ogguserc/ogg_i_400_C/dirsql: created Database definitions files /QOpenSys/home/ogguserc/ogg_i_400_C/dirdef: created Extract data files /QOpenSys/home/ogguserc/ogg_i_400_C/dirdat: created Temporary files /QOpenSys/home/ogguserc/ogg_i_400_C/dirtmp: created Stdout files /QOpenSys/home/ogguserc/ogg_i_400_C/dirout: created GGSCI (hostA) 2> Exit [/home/ogguserc/ogg_i_400_C] |
ディレクトリが存在する場合、コンテンツはそのまま残されます。
ggos400installユーティリティを実行します。
| HostC - iSeries |
[/home/ogguserc/ogg_i_400_C] ls -l ggo* -r--r--r-- 1 ogguserc 0 3191 Jun 28 16:41 ggos400install [/home/ogguserc/ogg_i_400_C] chmod +x ggos400install [/home/ogguserc/ogg_i_400_C] ls -l ggo* -r-xr-xr-x 1 ogguserc 0 3191 Jun 28 16:41 ggos400install [/home/ogguserc/ogg_i_400_C] ./ggos400install Installation library for the native object is: OGGUSERC ------------------------------------------------ The native object has been restored to library OGGUSERC. ------------------------------------------------ [/home/ogguserc/ogg_i_400_C] |
このユーティリティは、ネイティブのジャーナル・リーダー・オブジェクトへのシンボリック・リンクを作成します。このオブジェクトはネイティブ・オブジェクトOGGPRCJRNを探す場所を決定するために、ExtractおよびGGSCIプログラムによって使用されます。
ソースのhostAとターゲットのhostCの両方で、iSeriesでのOracle GoldenGateのインストールが完了しました。
1.2 LinuxでのODBCのインストール
yumなどのパッケージ・マネージャを使用して、ODBC RPMを取得してインストールします。
RPMのインストールはrootユーザーを使用して実行する必要があります。 WebからRPMをダウンロードするか、もしくはyumまたはRPMリポジトリからアクセスします。 すでにインストールされているかどうかを、はじめにチェックします。
次の例ではODBC RPMがあらかじめインストールされているため、何も実行する必要はありません。
| HostB - Linux |
[ogguserb@hostB /]$ su - root Password: ******** [root@hostB /]# yum list unixodbc Loaded plugins: rhnplugin, security This system is not registered with ULN. ULN support will be disabled. Installed Packages unixODBC.i386 2.2.11-7.1 installed unixODBC.x86_64 2.2.11-7.1 installed [root@hostB /]# |
次の例ではODBC RPMがインストールされていないため("Available Packages"に表示される)、事前定義されたリポジトリからインストールを実行します。
| HostB - Linux |
[root@hostB /]# yum list unixODBC Loaded plugins: rhnplugin, security This system is not registered with ULN. ULN support will be disabled. Available Packages unixODBC.i386 2.2.11-7.1 ol5_u7_base unixODBC.x86_64 2.2.11-7.1 ol5_u7_base [root@hostB /]# yum install unixODBC Loaded plugins: rhnplugin, security This system is not registered with ULN. ULN support will be disabled. Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package unixODBC.i386 0:2.2.11-7.1 set to be updated ---> Package unixODBC.x86_64 0:2.2.11-7.1 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: unixODBC i386 2.2.11-7.1 ol5_u7_base 830 k unixODBC x86_64 2.2.11-7.1 ol5_u7_base 835 k Transaction Summary ================================================================================ Install 2 Package(s) Upgrade 0 Package(s) Total download size: 1.6 M Is this ok [y/N]: y Downloading Packages: (1/2): unixODBC-2.2.11-7.1.i386.rpm | 830 kB 00:00 (2/2): unixODBC-2.2.11-7.1.x86_64.rpm | 835 kB 00:00 ------------------------------------------------------------------------------- Total 2.5 MB/s | 1.6 MB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : unixODBC 1/2 Installing : unixODBC 2/2 Installed: unixODBC.i386 0:2.2.11-7.1 unixODBC.x86_64 0:2.2.11-7.1 Complete! [root@hostB /]# |
iSeries AccessのRPMを取得します。
ソフトウェアをダウンロードするには、IBMへの登録とダウンロードに使用するユーザー・アカウントの作成が必要となる場合があります。 iSeries Accessダウンロードの一部(5250エミュレータ)はIBMによってライセンス提供されています。
Webブラウザを使用して、http://www-03.ibm.com/systems/power/software/i/access/linux/guide.html#installへアクセスし、「Installation」をクリックします。
Downloadリンクが正しく動作しない場合がありますが、 その場合はhttp://www-03.ibm.com/systems/power/software/i/access/linux_resources.htmlへアクセスしてください。
最新のダウンロード(例:7.1)を選択し、「Download」をクリックします。
最新のダウンロード(例:V7R1)を選択し、「Continue」をクリックします。
好みに合わせてプライバシ設定を変更し、Licenseセクションで「I agree」を選択して「I confirm」をクリックします。
IBM Download Directorを持っていない場合は、「Download using http」タブをクリックします。 使用するLinux環境に合った"no 5250 emulator"バージョンをダウンロードします(5250エミュレータのライセンスを購入済みの場合を除く)。 ブラウザで.RPMが音楽の種類と関連付けられている場合、「Download now」をクリックしてもダウンロードは開始されません。 その場合は、ブラウザ下部のステータス行に表示された実際のファイル名を確認します。 「Download now」を右クリックすると、リンク・コンテンツを開く代わりに保存するためのオプション(「Save as」など)が表示されます。
以上で、指定したダウンロード・ロケーションにiSeriesAccess-xxxxx.rpmファイルが保存されました。
iSeries Access RPMをインストールします。
Linux hostBでrootとしてサインオンします。 ダウンロード・ロケーション(ブラウザに定義されたロケーション)に移動します。 iSeries RPMの「localinstall」を実行します。
| HostB - Linux |
[ogguserb@hostB /]$ su - root Password: ******** [root@hostB /]# cd Downloads [root@hostB Downloads]# ls -l iSeriesAccess* -rw-r--r-- 1 oracle all 1906385 Aug 24 15:42 iSeriesAccess-7.1.0-1.0.x86_64.rpm [root@hostB Downloads]# yum localinstall iSeriesAccess* --nogpgcheck Loaded plugins: rhnplugin, security This system is not registered with ULN. ULN support will be disabled. Setting up Local Package Process Examining iSeriesAccess-7.1.0-1.0.x86_64.rpm: iSeriesAccess-7.1.0-1.0.x86_64 Marking iSeriesAccess-7.1.0-1.0.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package iSeriesAccess.x86_64 0:7.1.0-1.0 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: iSeriesAccess x86_64 7.1.0-1.0 /iSeriesAccess-7.1.0-1.0.x86_64 8.8 M Transaction Summary ================================================================================ Install 1 Package(s) Upgrade 0 Package(s) Total size: 8.8 M Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : iSeriesAccess 1/1 post install processing for iSeriesAccess 1.0...1 iSeries Access ODBC Driver has been deleted (if it existed at all) because its usage count became zero odbcinst: Driver installed. Usage count increased to 1. Target directory is /etc odbcinst: Driver installed. Usage count increased to 1. Target directory is /etc Installed: iSeriesAccess.x86_64 0:7.1.0-1.0 Complete! [root@hostB Downloads]# |
--nogpgcheckを省略すると、Package iSeriesAccess-7.1.0-1.0.x86_64.rpm is not signedというエラーが発生する場合があります。 iSeriesは/etcにインストールされている点に注意します。
インストールが正しく完了したことを確認します。
| HostB - Linux |
[root@hostB Downloads]# yum list iSeriesAccess
Loaded plugins: rhnplugin, security
This system is not registered with ULN.
ULN support will be disabled.
Installed Packages
iSeriesAccess.x86_64 7.1.0-1.0 installed
[root@hostB Downloads]#
|
ODBCに対して何らかの開始または停止処理を行わなくても、ODBCはすでに使用できる状態にあります。
/etcにあるODBCファイルの設定を行います。
/etcにあるODBCファイルをバックアップし、 ファイルの内容を確認します。 [64-bit]というラベルが最後に付く1節を探します。
| HostB - Linux |
[root@hostB /]# cd /etc [root@hostB etc]# ls -l odbc* -rw-r--r-- 1 root root 0 Jun 7 2007 odbc.ini -rw-r--r-- 1 root root 907 Aug 31 16:38 odbcinst.ini [root@hostB etc]# cp odbcinst.ini odbcinst.ini.ORIG [root@hostB etc]# more odbcinst.ini [PostgreSQL] Description = ODBC for PostgreSQL Driver = /usr/lib/libodbcpsql.so Setup = /usr/lib/libodbcpsqlS.so FileUsage = 1 [iSeries Access ODBC Driver] Description = iSeries Access for Linux ODBC Driver Driver = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so NOTE1 = If using unixODBC 2.2.11 or later and you want the 32 and 64-b it ODBC drivers to share DSN's, the NOTE2 = following Driver64/Setup64 keywords will provide that support. Driver64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so Threading = 2 DontDLClose = 1 UsageCount = 1 [iSeries Access ODBC Driver 64-bit] Description = iSeries Access for Linux 64-bit ODBC Driver Driver = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so Threading = 2 DontDLClose = 1 UsageCount = 1 [root@hostB etc]# |
viまたはgedit、もしくは同等のエディタを使用して、odbcinst.iniテキスト・ファイルを編集します。最後に[64-bit]の付いた1節を2回コピーしてHOSTAとHOSTCを追加します。 括弧で囲まれた名前を変更し、System = hostx.example.comとDefaultPkgLibrary = QGPLという行をこの1節に追加します。 実際のホスト・アドレスはこの例とは異なる場合があります。 ファイルは次のようになります。
| HostB - Linux |
[root@hostB etc]# gedit odbcinst.ini [root@hostB etc]# more odbcinst.ini [PostgreSQL] Description = ODBC for PostgreSQL Driver = /usr/lib/libodbcpsql.so Setup = /usr/lib/libodbcpsqlS.so FileUsage = 1 [iSeries Access ODBC Driver] Description = iSeries Access for Linux ODBC Driver Driver = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so NOTE1 = If using unixODBC 2.2.11 or later and you want the 32 and 64-b it ODBC drivers to share DSN's, the NOTE2 = following Driver64/Setup64 keywords will provide that support. Driver64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so Threading = 2 DontDLClose = 1 UsageCount = 1 [iSeries Access ODBC Driver 64-bit] Description = iSeries Access for Linux 64-bit ODBC Driver Driver = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so Threading = 2 DontDLClose = 1 UsageCount = 1 [HOSTA] Description = iSeries Access for Linux 64-bit ODBC Driver added by me Driver = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so Threading = 2 DontDLClose = 1 UsageCount = 1 System = hosta.example.com DefaultPkgLibrary = QGPL [HOSTC] Description = iSeries Access for Linux 64-bit ODBC Driver added by me Driver = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so Threading = 2 DontDLClose = 1 UsageCount = 1 System = hostc.example.com DefaultPkgLibrary = QGPL [root@hostB etc]# |
[64-bit]のコピーで最後に2つの節が追加されています。これらの節では、最後の2行には括弧内に対応するホスト名とデフォルトのパッケージ・ライブラリが指定されています。
rootユーザーを終了し、ogguserbユーザーとしてサインオンします。
ホーム・ディレクトリにあるODBCファイルの設定を行います。
odbcinstを使用して.odbc.iniファイル(最初のドットに注意)を作成します。
| HostB - Linux |
[ogguserb@hostB /]$ cd ~ [ogguserb@hostB ~]$ whoami ogguserb [ogguserb@hostB ~]$ ls -l .odbc* ls: .odbc*: No such file or directory [ogguserb@hostB ~]$ odbcinst -i -s -f /etc/odbcinst.ini [ogguserb@hostB ~]$ ls -l .odbc* -rw-r--r-- 1 ogguserb oinstall 1469 Aug 31 18:26 .odbc.ini [ogguserb@hostB ~]$ tail -20 .odbc.ini [HOSTA] Description = iSeries Access for Linux 64-bit ODBC Driver Driver = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so Threading = 2 DontDLClose = 1 UsageCount = 1 System = hosta.example.com DefaultPkgLibrary = QGPL [HOSTC] Description = iSeries Access for Linux 64-bit ODBC Driver Driver = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so Threading = 2 DontDLClose = 1 UsageCount = 1 System = hostc.example.com DefaultPkgLibrary = QGPL [ogguserb@hostB ~]$ |
ODBCConfigオプションをインストールしている場合は、グラフィカルな方法で同じ作業を実行できます。
isqlを使用して、HOSTAおよびHOSTCに対するODBC接続をテストします。
hostAおよびhostCで問合せを実行するには、ジャンク表を作成する必要があります。 hostAおよびhostC上にすでにサンプル表がある場合は、次の2つのステップをスキップしてODBCのテストに進みます。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] rundb2.sh DB2> create table myjunka (this integer, that varchar(40)) **** CLI ERROR ***** SQLSTATE: 01567 NATIVE ERROR CODE: 7905 Table MYJUNKA in OGGUSERA created but was not journaled. DB2> insert into myjunka values (10, 'Sample row on A') DB20000I THE SQL COMMAND COMPLETED SUCCESSFULLY. DB2> select * from myjunka THIS THAT ----------- ---------------------------------------- 10 Sample row on A 1 RECORD(S) SELECTED. DB2> |
NATIVE ERROR CODE: 7905は無視します。後でAdd TranDataを実行すると、このエラーは修正されます。
同じ処理をhostCに対しても実行します (hostCにOracle GoldenGateソフトウェアをインストールしていない場合、rundb2.shユーティリティを使用できない場合があります。 任意のDB2ツールを使用してサンプル表を作成するか、またはこのステップをスキップします)。
| HostC - iSeries |
[/home/ogguserc/ogg_i_400_C] rundb2.sh DB2> create table myjunkc (foobar integer, whizbang varchar(40)) **** CLI ERROR ***** SQLSTATE: 01567 NATIVE ERROR CODE: 7905 Table MYJUNKC in OGGUSERC created but was not journaled. DB2> insert into myjunkc values (20, 'Sample row on C') DB20000I THE SQL COMMAND COMPLETED SUCCESSFULLY. DB2> select * from myjunkc FOOBAR WHIZBANG ----------- ---------------------------------------- 20 Sample row on C 1 RECORD(S) SELECTED. DB2> |
NATIVE ERROR CODE: 7905は無視します。後でAdd TranDataを実行すると、このエラーは修正されます。
Linux hostBで、ODBCが単独で動作していることを確認します。
| HostB - Linux |
[ogguserb@hostB ~]$ odbcinst --version unixODBC 2.2.11 [ogguserb@hostB ~]$ which isql /usr/bin/isql [ogguserb@hostB ~]$ |
hostAとhostCの新しい表に対して問合せを実行します (どの表でも構いません)。
| HostB - Linux |
[oracle@hostB ~]$ isql hosta oggusera pswda +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select * from myjunka +------------+-----------------------------------------+ | THIS | THAT | +------------+-----------------------------------------+ | 10 | Sample row on A | +------------+-----------------------------------------+ SQLRowCount returns -1 1 rows fetched SQL> quit [oracle@hostB ~]$ isql hostc ogguserc pswdc +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select * from myjunkc +------------+-----------------------------------------+ | FOOBAR | WHIZBANG | +------------+-----------------------------------------+ | 20 | Sample row on C | +------------+-----------------------------------------+ SQLRowCount returns -1 1 rows fetched SQL> quit [ogguserb@hostB ~] |
ホスト名では大文字と小文字を区別する必要はありません。
以上でODBCのインストールと構成が完了したため、Linux hostBから両方のiSeriesホスト(hostAおよびhostC)への通信を実行できます。
1.3 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 for Non Oracle Database v11.2.1 Media Pack for Linux x86-64」を選択します。
「Continue」をクリックします。
"DB2/400 on Linux"の部品番号としてV34007-01が表示されていることを確認します。
「Download」をクリックします。
ソフトウェアを中間のhostB(黄)のディレクトリにアンパックします。
Oracle GoldenGateソフトウェアを受け取るインストール・ディレクトリを作成します。
| HostB - Linux |
[ogguserb@hostB /]$ cd ~ [ogguserb@hostB /home/ogguserb]$ mkdir ogg_linux_400_BC [ogguserb@hostB /home/ogguserb]$ cd ogg_linux_400_BC/ [ogguserb@hostB ogg_linux_400_BC]$ |
このディレクトリの接尾辞が_Bではなく_BCになっている理由は、双方向セクションを構成する際に、別の中間ホスト・インスタンスが必要になるためです。このインスタンスを同じマシン上に作成する場合、hostCへレプリケートするインスタンスの接尾辞は_BCとなり、hostAへレプリケートするインスタンスの接尾辞は_BAとなります。
ダウンロードしたzipをダウンロードした場所からogg_linux_400_BCにコピーします。 このzipは、iSeries用にダウンロードしたファイルとは異なります。 zipを解凍して展開(抽出)します。 copyコマンドの末尾にターゲットとしてドットを指定してください。
| HostB - Linux |
[ogguserb@hostB ogg_linux_400_BC]$ cp ~/Downloads/V34007-01.zip . [ogguserb@hostB ogg_linux_400_BC]$ unzip V34007-01.zip Archive: V34007-01.zip inflating: ggs_Linux_x64_DB2400_64bit.tar inflating: Oracle_GoldenGate_11.2.1.0.2_README.doc inflating: Oracle_GoldenGate_11.2.1.0.2_README.txt inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.2.pdf [ogguserb@hostB ogg_linux_400_BC]$ tar -xvpf ggs_Linux_x64_DB2400_64bit.tar ./ ./server ... many lines omitted for clarity ... ./dirprm/jagent.prm ./demo_db2400_create.sql [ogguserb@hostB ogg_linux_400_BC]$ |
GoldenGate Software Command Interface(GGSCI)を開始します。 デフォルトの空のサブディレクトリを作成します。
| HostB - Linux |
[ogguserb@hostB ogg_linux_400_BC]$ ./ggsci Oracle GoldenGate Command Interpreter for DB2 for i Version 11.2.1.0.2 OGGCORE_11.2.1.0.2T3_PLATFORMS_120724.2205 Linux, x64, 64bit (optimized), IBM DB2 for i Remote on Jul 25 2012 02:02:16 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (hostB) 1> Create Subdirs Creating subdirectories under current directory /home/ogguserb/ogg_linux_400_BC Parameter files /home/ogguserb/ogg_linux_400_BC/dirprm: already exis ts Report files /home/ogguserb/ogg_linux_400_BC/dirrpt: created Checkpoint files /home/ogguserb/ogg_linux_400_BC/dirchk: created Process status files /home/ogguserb/ogg_linux_400_BC/dirpcs: created SQL script files /home/ogguserb/ogg_linux_400_BC/dirsql: created Database definitions files /home/ogguserb/ogg_linux_400_BC/dirdef: created Extract data files /home/ogguserb/ogg_linux_400_BC/dirdat: created Temporary files /home/ogguserb/ogg_linux_400_BC/dirtmp: created Stdout files /home/ogguserb/ogg_linux_400_BC/dirout: created GGSCI (hostB) 2> Exit [ogguserb@hostB ogg_linux_400_BC]$ |
プラットフォームの説明から、これはi Remote用であることが分かります。 ディレクトリが存在する場合、コンテンツはそのまま残されます。
Linux hostBでのOracle GoldenGateのインストールが完了しました。
2. 環境の設定
- DBLogin:
- 指定されたuserid/passwordを使用してODBC経由でDBに接続します。 ODBC名には大文字を使用します(例:HOSTA)。
- Start Mgr:
- Managerがすでに開始されている場合、再度開始しようとしても問題ありません。 これはセッション間で保持されます。
- Info Mgr:
- Managerが正常に開始されたかどうか、および正常に開始された場合は使用されているポート番号を通知します。
- DefaultJournal:
- ジャーナル機能はほとんどの場合に必要とされます。 このスキーマ/ファイル名をオーバーライドして、表ごとに異なるジャーナルを指定することができます。 oggjrnファイルはOracleによって提供されており、テストまたは概念実証(PoC)での使用のみを想定しています。本番での使用は想定されていません。
- Info CheckpointTable:
- チェックポイント表(Replicatで使用される)が検出されたかどうかを通知します。
- 3つの表に対して、前述したネイティブのSTRJRNPFコマンドを使用します。
- ターゲットにOracle GoldenGateコードがインストールされていることを確認し、ソース上で実行したものと同じコマンドを実行します。
環境を設定するには、ASCIIファイルを編集してOSユーティリティを実行します。 環境を設定するには、以下の手順を実行します。
2.1 スタートアップ・ファイルとManagerの作成
任意のテキスト・エディタを使用して、hostAのOracle GoldenGateインストール・ディレクトリにGLOBALSファイルを作成します。
名前の前に"./"を追加すると、GGSCIを使ってGLOBALSファイルを作成したり編集したりできます。 例:
GGSCI> Edit Param ./GLOBALS
これを適用する場合を除き、GGSCIを終了して再起動する必要があります。つまり、GGSCIを初めて開始する前にGGSCIを使わずに編集することもできます。
GLOBALSファイルの名前はすべて大文字にする必要があります。また、チェックポイント表のスキーマと名前を定義する1行(および--comments)のみが含まれます。 任意のスキーマと名前を使用できます。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] vi GLOBALS
-- Created by Joe Admin 10/11/2012 on hostA
CheckpointTable oggusera.oggchkpt
[/home/oggusera/ogg_i_400_A]
|
チェックポイント表はReplicatでのみ使用されるため、双方向のセクションまで使用されません。 チェックポイント表を配置して使用せずにいても、問題ありません。
hostBのOracle GoldenGateインストール・ディレクトリにGLOBALSファイルを作成します。
| HostB - Linux |
[ogguserb@hostB ogg_linux_400_BC]$ vi GLOBALS
-- Created by Joe Admin 10/11/2012 on hostC
CheckpointTable ogguserc.oggchkpt
[ogguserb@hostB ogg_linux_400_BC]$
|
GLOBALSファイルは中間となるhostB上に存在しますが、ターゲットのhostC上のスキーマを参照している点に注意してください。
hostAのOracle GoldenGateインストール・ディレクトリに、オプションのstartup.oby(Obey)ファイルを作成します。
以下は、GGSCIの開始時にほぼ毎回入力するGGSCIコマンドです。これらのコマンドはセッション間で保持されず、何度も入力する必要があるため、スタートアップobeyファイルを作成しておくと便利です。
定期的にログインする複数の異なるデータベースやスキーマがある場合は、startup01.oby、startup02.oby、startup03.obyなどのようにできます。 これについては、後ほど、プロセス・ファイルのネーミング規則で再度説明します。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] vi startup.oby
-- Created by Joe Admin 10/11/2012 on hostA
DBLogin SourceDB HOSTA, UserID oggusera, Password pswda
Start Mgr
Info Mgr
DefaultJournal oggusera/oggjrn
Info CheckpointTable
[/home/oggusera/ogg_i_400_A]
|
hostBのOracle GoldenGateインストール・ディレクトリに、オプションのstartup.oby(Obey)ファイルを作成します。
| HostB - Linux |
[ogguserb@hostB ogg_linux_400_BC]$ vi startup.oby
-- Created by Joe Admin 10/11/2012 on hostB
DBLogin SourceDB HOSTC, UserID ogguserc, Password pswdc
Start Mgr
Info Mgr
--DefaultJournal ogguserc/oggjrn
Info CheckpointTable
Set Editor gedit
[ogguserb@hostB ogg_linux_400_BC]$
|
DefaultJournalコマンドをLinuxマシンで実行することはできません。このコマンドはターゲットのiSeriesマシンで実行する必要があります。 いずれは実行する必要があることを覚えておくため、このコマンドはコメント・アウトされた状態でファイルに残されています。 ターゲットにOracle GoldenGateをインストールしていない場合、別の方法でジャーナル機能を使用する必要があります。 これについて、詳しくは後述します。
hostCのOracle GoldenGateインストール・ディレクトリに、オプションのstartup.oby(Obey)ファイルを作成します。
| HostC - iSeries |
[/home/ogguserc/ogg_i_400_C] vi startup.oby
-- Created by Joe Admin 10/11/2012 on hostC
DBLogin SourceDB HOSTC, UserID ogguserc, Password pswdc
-- Start Mgr
-- Info Mgr
DefaultJournal ogguserc/oggjrn
-- Info CheckpointTable
[/home/ogguserc/ogg_i_400_C]
|
hostCではDefaultJournalオプションが有効化されています(iSeriesではgeditは使用できません)。 hostCではManagerやチェックポイント表は有効化されていませんが、有効化してもまったく問題はありません。また、双方向レプリケーションを有効化する場合はManagerが必要です。 このため、忘れないように、Managerとチェックポイント表に関する行をコメントのまま残しておきます。
hostAのdirprm/にManagerパラメータ(mgr.prm)ファイルを作成します。
GGSCIを開始します。 拡張子のないファイルを編集します。 2行(およびコメント)を追加します。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./ggsci Oracle GoldenGate Command Interpreter for DB2 for i Version 11.2.1.0.2 OGGCORE_11.2.1.0.3_PLATFORMS_120724.2205 IBM i, ppc, 64bit (optimized), IBM DB2 for i on Jul 26 2012 00:43:51 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (hostA) 1> Edit Param mgr -- Created by Joe Admin 10/11/2012 on hostA Port 15001 PurgeOldExtracts ./dirdat/*, UseCheckpoints GGSCI (hostA) 2> Info mgr Manager is DOWN! GGSCI (hostA) 3> |
注: 上記を正しく実行すると、GGSCIによって自動的に拡張子.prmが追加されて、ファイルがdirprm/ディレクトリに保存されます。 ユーザーが誤って拡張子を追加した場合は、GGSCIによってファイル名が大文字に変換され、ファイルがインストール・ディレクトリに保存されて実質的に使用できなくなります。
hostBのdirprm/にManagerパラメータ(mgr.prm)ファイルを作成します。
| HostB - Linux |
[ogguserb@hostB ogg_linux_400_BC]$ ./ggsci Oracle GoldenGate Command Interpreter for DB2 for i Version 11.2.1.0.2 OGGCORE_11.2.1.0.2T3_PLATFORMS_120724.2205 Linux, x64, 64bit (optimized), IBM DB2 for i Remote on Jul 25 2012 02:02:16 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (hostB) 1> Edit Param mgr -- Created by Joe Admin 10/11/2012 on hostB Port 15002 PurgeOldExtracts ./dirdat/*, UseCheckpoints GGSCI (hostB) 2> Info mgr Manager is DOWN! GGSCI (hostB) 3> |
hostA、hostB、hostC間では、ポート番号が異なることに注意してください。
Obeyファイルを使用してhostAでManagerを開始します。 または、GGSCIを開始するたびに各行を入力することもできます。
| HostA - iSeries |
GGSCI (hostA) 3> Obey startup.oby
GGSCI (hostA) 4> DBLogin SourceDB HOSTA, UserID oggusera, Password pswda
2012-09-03 14:51:38 INFO OGG-03036 Database character set identified as
UTF-8. Locale: en_US_POSIX.
2012-09-03 14:51:38 INFO OGG-03037 Session character set identified as
UTF-8.
Successfully logged into database.
GGSCI (hostA) 5> Start mgr
Manager started.
GGSCI (hostA) 6> Info mgr
Manager is running (IP port hosta.example.com.15001).
GGSCI (hostA) 7> DefaultJournal oggusera/oggjrn
DEFAULTJOURNAL has been set to OGGUSERA/OGGJRN
GGSCI (hostA) 8> Info CheckpointTable
No checkpoint table specified, using GLOBALS specification (oggusera.oggchkpt).
Checkpoint table oggusera.oggchkpt does not exist.
GGSCI (hostA) 9>
|
以下の手順でチェックポイント表を作成します。
Obeyファイルを使用してhostBでManagerを開始します。
| HostB - Linux |
GGSCI (hostB) 3> Obey startup.oby
GGSCI (hostB) 4> DBLogin SourceDB HOSTC, UserID ogguserc, Password pswdc
2012-09-04 16:03:04 INFO OGG-03036 Database character set identified as
UTF-8. Locale: en_US.
2012-09-04 16:03:04 INFO OGG-03037 Session character set identified as
UTF-8.
Successfully logged into database.
GGSCI (hostB) 5> start mgr
Manager started.
GGSCI (hostB) 6> info mgr
Manager is running (IP port hostb.example.com.15002).
GGSCI (hostB) 7> --DefaultJournal ogguserc/oggjrn
GGSCI (hostB) 8> Info CheckpointTable
No checkpoint table specified, using GLOBALS specification (ogguserc.oggchkpt).
Checkpoint table ogguserc.oggchkpt does not exist.
GGSCI (hostB) 9> Set Editor gedit
GGSCI (hostB) 10>
|
これにより、ODBC接続の動作も確認されました。 次のステップでチェックポイント表を作成します。
グローバル・ファイルとスタートアップ・ファイルがすべて作成されると、バックグラウンドのManagerプロセスが開始されます。 以下のコマンドを入力すると、どのプロセスが実行されているのか、いつでも確認できます。
GGSCI (host) > Info All
2.2 表の作成
hostAでチェックポイント表を作成します
| HostA - iSeries |
GGSCI (hostA) 9> Add CheckpointTable No checkpoint table specified, using GLOBALS specification (oggusera.oggchkpt). Successfully created checkpoint table oggusera.oggchkpt. GGSCI (hostA) 10> Exit [/home/oggusera/ogg_i_400_A] |
1つの表でスキーマ全体に十分に対応できます。
hostBでチェックポイント表を作成します
| HostB - Linux |
GGSCI (hostB) 10> Add CheckpointTable No checkpoint table specified, using GLOBALS specification (ogguserc.oggchkpt). Successfully created checkpoint table ogguserc.oggchkpt. GGSCI (hostB) 11> Exit [ogguserb@hostB ogg_linux_400_BC]$ |
実際には表はhostCに作成されますが、コマンドはhostBから実行されます。
hostAのスキーマogguseraに空のソース・サンプル表を作成します。
サンプル表をすでに作成している場合は、作成したものを使用できます。 サンプル表をまだ作成していない場合、Oracle GoldenGateソフトウェアに、小規模な2つのサンプル表tcustmerとtcustordを作成するためのスクリプトdemo_db2_create.sqlが付属しています。 任意のDB2ユーティリティを使用してスクリプトを実行できます。 特に好みがない場合、Oracle GoldenGateソフトウェアにはrundb2.shと呼ばれる非常に限定的なシェルが付属しています。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./rundb2.sh demo_db2_create.sql
... many lines omitted for clarity ...
* * * * * E N D O F S O U R C E * * * * *
5761SS1 V6R1M0 080215 Run SQL Statements DEMO_DB2_C
09/04/12 11:25:59 PAGE 003
Record *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 .
MSG ID SEV RECORD TEXT
SQL7953 0 1 Position 1 Drop of TCUSTMER in OGGUSERA complete.
SQL7960 0 21 Position 1 Commit completed.
SQ20367 0 30 Position 3 Clause DATA CAPTURE ignored.
SQL7905 20 23 Position 1 Table TCUSTMER in OGGUSERA created but was
not journaled.
SQL7960 0 32 Position 1 Commit completed.
SQL7953 0 34 Position 1 Drop of TCUSTORD in OGGUSERA complete.
SQL7960 0 36 Position 1 Commit completed.
SQ20367 0 48 Position 3 Clause DATA CAPTURE ignored.
SQL7905 20 38 Position 1 Table TCUSTORD in OGGUSERA created but was
not journaled.
SQL7960 0 50 Position 1 Commit completed.
SQL7960 0 Commit completed.
Message Summary
Total Info Warning Error Severe Terminal
11 9 0 2 0 0
20 level severity errors found in source
* * * * * E N D O F L I S T I N G * * * * *
[/home/oggusera/ogg_i_400_A]
|
重大度20のジャーナル"エラー"は問題ありません。これらには次のステップで対処します。
警告: スクリプトを2回実行すると、表が削除されます。
hostCのスキーマoggusercに空のターゲット・サンプル表を作成します。 これは中間ホストではなくターゲット上で直接実行する必要があります。
| HostC - iSeries |
[/home/ogguserc/ogg_i_400_C] ./rundb2.sh demo_db2_create.sql
... many lines omitted for clarity ...
* * * * * E N D O F S O U R C E * * * * *
5761SS1 V6R1M0 080215 Run SQL Statements DEMO_DB2_C
09/04/12 11:25:59 PAGE 003
Record *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 .
MSG ID SEV RECORD TEXT
SQL7953 0 1 Position 1 Drop of TCUSTMER in OGGUSERC complete.
SQL7960 0 21 Position 1 Commit completed.
SQ20367 0 30 Position 3 Clause DATA CAPTURE ignored.
SQL7905 20 23 Position 1 Table TCUSTMER in OGGUSERC created but was
not journaled.
SQL7960 0 32 Position 1 Commit completed.
SQL7953 0 34 Position 1 Drop of TCUSTORD in OGGUSERC complete.
SQL7960 0 36 Position 1 Commit completed.
SQ20367 0 48 Position 3 Clause DATA CAPTURE ignored.
SQL7905 20 38 Position 1 Table TCUSTORD in OGGUSERC created but was
not journaled.
SQL7960 0 50 Position 1 Commit completed.
SQL7960 0 Commit completed.
Message Summary
Total Info Warning Error Severe Terminal
11 9 0 2 0 0
20 level severity errors found in source
* * * * * E N D O F L I S T I N G * * * * *
[/home/ogguserc/ogg_i_400_C]
|
厳密に言うと、この時点ではターゲット上にOracle GoldenGateソフトウェアは必要ありません。ただし、GoldenGateソフトウェアは表の作成スクリプトとrundb2.shシェルを提供しています。 すでにサンプル表がある場合、ターゲット上でOracle GoldenGateソフトウェアは実際に必要ありませんが、サンプル表がない場合は、この部分の演習を実行するには、ソフトウェアをインストールする必要があります。 表を作成するためのターゲット・スクリプトは中間ホスト上にあるため、ターゲット・ホストにこれをftp送信します。
iSeriesでは、CREATE TABLEなどのDDLに対するレプリケーションがサポートされていないため、DMLレプリケーションの開始前に、ターゲット上に空の表が存在している必要があります。
以下のコマンドを入力すると、使用できる表をいつでも確認できます。
GGSCI (host) > List Tables *
2.3 ジャーナル機能の有効化(トランザクション・データの追加)
GGSCIを再起動し、スキーマ全体に対してAdd TranDataを実行します。
問合せを実行するためにジャーナル機能を有効化する必要はありませんが、 ReplicatでDML(INSERT、UPDATE、DELETE)を実行するには、ジャーナル・ファイルの場所を指定する必要があります。 給与や人事などのアプリケーションでは、多くの場合、アプリケーションの一部にジャーナル機能が含まれています。 (前述のステップでサンプル表やチェックポイント表を作成したように)独自の表を作成する場合、手動でジャーナル機能を有効化する必要があります。 実行するには、iSeriesのコマンドライン(CL)"Start Journal Physical File"(STRJRNPF)を使用します。 または、Add TranDataやstartup.obyに指定したDefaultJournalを使用して、GGSCI内で有効化することもできます。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./ggsci Oracle GoldenGate Command Interpreter for DB2 for i ... many lines omitted for clarity ... GGSCI (hostA) 1> Obey startup.oby ... many lines omitted for clarity ... but make sure everything started. GGSCI (hostA) > List Tables * OGGUSERA.MYJUNKA OGGUSERA.OGGCHKPT OGGUSERA.TCUSTMER OGGUSERA.TCUSTORD Found 3 tables matching list criteria. GGSCI (hostA) > Add TranData * DEFAULTJOURNAL has been set to OGGUSERA/OGGJRN Journaling for object OGGUSERA.MYJUNKA has been enabled to journal OGGUSERA/OGGJRN Journaling for object OGGUSERA.OGGCHKPT has been enabled to journal OGGUSERA/OGGJRN Journaling for object OGGUSERA.TCUSTMER has been enabled to journal OGGUSERA/OGGJRN Journaling for object OGGUSERA.TCUSTORD has been enabled to journal OGGUSERA/OGGJRN GGSCI (hostA) > Info TranData * Journaling for object OGGUSERA.MYJUNKA is enabled to journal OGGUSERA/OGGJRN. Journaling for object OGGUSERA.OGGCHKPT is enabled to journal OGGUSERA/OGGJRN. Journaling for object OGGUSERA.TCUSTMER is enabled to journal OGGUSERA/OGGJRN. Journaling for object OGGUSERA.TCUSTORD is enabled to journal OGGUSERA/OGGJRN. GGSCI (hostA) xx> |
チェックポイント表とサンプル表に対してジャーナル機能を有効化する必要があることに注意してください。
同じ処理をhostCに対しても実行します。
Add TranDataは中間ホストでは実行できないため、hostCで直接コマンドを実行する必要があります。 次のいずれかの方法を使用できます。
| HostC - iSeries |
[/home/ogguserc/ogg_i_400_C] ./ggsci Oracle GoldenGate Command Interpreter for DB2 for i ... many lines omitted for clarity ... GGSCI (hostC) 1> Obey startup.oby ... many lines omitted for clarity ... but make sure everything started. GGSCI (hostC) > List Tables * OGGUSERC.MYJUNKC OGGUSERC.OGGCHKPT OGGUSERC.TCUSTMER OGGUSERC.TCUSTORD Found 3 tables matching list criteria. GGSCI (hostC) > Add TranData * DEFAULTJOURNAL has been set to OGGUSERC/OGGJRN Journaling for object OGGUSERC.MYJUNKC has been enabled to journal OGGUSERC/OGGJRN Journaling for object OGGUSERC.OGGCHKPT has been enabled to journal OGGUSERC/OGGJRN Journaling for object OGGUSERC.TCUSTMER has been enabled to journal OGGUSERC/OGGJRN Journaling for object OGGUSERC.TCUSTORD has been enabled to journal OGGUSERC/OGGJRN GGSCI (hostC) > Info TranData * Journaling for object OGGUSERC.MYJUNKC is enabled to journal OGGUSERC/OGGJRN. Journaling for object OGGUSERC.OGGCHKPT is enabled to journal OGGUSERC/OGGJRN. Journaling for object OGGUSERC.TCUSTMER is enabled to journal OGGUSERC/OGGJRN. Journaling for object OGGUSERC.TCUSTORD is enabled to journal OGGUSERC/OGGJRN. GGSCI (hostC) xx> |
トランザクション・データの収集とジャーナル機能が、Oracle GoldenGateに関連するすべてのユーザー表およびシステム表に対して有効になりました。
2.4 列定義の作成(defgen)
OSユーティリティを使用して、ソース表からターゲット表への列マッピングを作成します。
このユーティリティは、表の構造が異なる(異種)場合に必要ですが、表の構造が同じ(同種)場合でも、このユーティリティを使用することを強くお勧めします。 表の構造が同じである場合は、SourceDefsパラメータの代わりにAssumeTargetDefsパラメータを使用することもできます。 これについては、後で説明します。
概要のファイルとプロセスのネーミング規則を確認してください。
| HostA - iSeries |
GGSCI (hostA) > Edit Param d01ab -- defgen column defs for tcust* from hostA to hostC -- Created by Joe Admin on 10/11/2012 DefsFile dirdef/d01ab.def, Purge SourceDB HOSTA, UserID oggusera, Password pswda Table oggusera.tcust*; GGSCI (hostA) > Shell ./defgen paramfile dirprm/d01ab.prm *********************************************************************** Oracle GoldenGate Table Definition Generator for DB2 for i ... many lines omitted for clarity ... Expanding wildcard oggusera.tcust*: Retrieving definition for OGGUSERA.TCUSTMER Retrieving definition for OGGUSERA.TCUSTORD Definitions generated for 2 tables in dirdef/d01ab.def GGSCI (hostA) > Exit [/home/oggusera/ogg_i_400_A] |
単一の表、複数の表(ワイルド・カードを使用)、1つのスキーマ全体、または複数のスキーマに同時に定義を作成できます。 ファイルに"余分な"(Oracle GoldenGateで使用されない)定義が含まれていても、問題ありません。 hostBに送信する前に、dirdef/d01ab.defの内容を確認します。
ソースのhostAから中間のhostBにファイルをコピーします。
.defファイルをターゲットのdirdefディレクトリにコピーする際、カット・アンド・ペースト、scp、ftpなどの任意の方法を使用できます。 この例では、Secure Shell Copy(scp)を使用します。 ogguserb/の後でコマンドラインを中断しないでください。scpコマンドはすべて1行で入力してください。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] scp dirdef/d01ab.def ogguserb@hostb:/home/ogguserb/ ogg_linux_400_BC/dirdef The authenticity of host 'hostb (10.0.0.2)' 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 'hostb' (RSA) to the list of known hosts. ogguserb@hostb's password: ******** d01ab.def 100% 1877 1.8KB/s 00:00 [/home/oggusera/ogg_i_400_A] |
アスタリスクをパスワード(pswdbなど)に置き換えます。
hostBの適切な場所にファイルがそのまま配置されていることを確認します。
| HostB - Linux |
[ogguserb@hostB ogg_linux_400_BC]$ ls -l dirdef
total 4
-rw-r--r-- 1 ogguserb oinstall 1877 Aug 29 13:43 d01ab.def
[ogguserb@hostB ogg_linux_400_BC]$
|
以上で、列定義の作成とコピーが完了しました。 言うまでもなく、表の構造に変更があった場合はこの手順を再度実行する必要があります。
3. Extractを使用したデータ取得の設定
データ取得(Extractとも呼ばれます)は、ソース側で実行します。 プライマリのExtractは必須です。セカンダリのExtract(Data Pumpとも呼ばれます)はオプションですが、強くお勧めします。 データ取得を設定するには、次の手順を実行します。
3.1 プライマリのExtractの設定
ソースのhostAで、プライマリExtractパラメータ・ファイルを作成します。
概要で説明しているネーミング規則を使用して、path/filename.extをdirprm/e01ab.prmに変更します。 パスと拡張子は自動的に追加されます
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./ggsci Oracle GoldenGate Command Interpreter for DB2 for i ... many lines omitted for clarity ... GGSCI (hostA) 1> Obey startup.oby ... many lines omitted for clarity ... but make sure everything started. GGSCI (hostA) > Edit Param e01ab -- Primary Extract from HostA thru HostB, then on to HostC -- Created by Joe Admin on 10/11/2012 Extract e01ab ExtTrail ./dirdat/ab SourceDB HOSTA, UserID oggusera, Password pswda TranLogOptions ExcludeUser ogguserc Table oggusera.tcust*; GGSCI (hostA) > |
ファイル内のパスワードを暗号化できますが、この演習の範囲外になります。
View Param e01abと入力すると、作業内容をいつでも確認できます。
ExtractグループとローカルのExtract証跡ファイルを作成します。
| HostA - iSeries |
GGSCI (hostA) > Add Extract e01ab, TranLog, Begin Now EXTRACT added. GGSCI (hostA) > Add ExtTrail ./dirdat/ab, Extract e01ab, Megabytes 5 EXTTRAIL added. GGSCI (hostA) > |
Megabytes 5はオプションです。 デフォルトは100メガバイトです。
作成される証跡ファイルにはdirdat/ab000000という名前が付与され、この証跡ファイルがいっぱいになると、次の証跡ファイルはdirdat/ab000001という名前になり、その次はdirdat/ab000002となります。
プライマリのExtractが作成および設定されましたが、開始されていません。 次の手順のために、GGSCIを実行したままにします。
3.2 Data Pumpの設定
セカンダリExtract(Data Pump)パラメータ・ファイルを作成します。
概要で説明しているネーミング規則を使用して、path/filename.extをdirprm/p01ab.prmに変更します。 パスと拡張子は自動的に追加されます
| HostA - iSeries |
GGSCI (hostA) > Edit Param p01ab
-- Data pump (secondary Extract) from HostA thru HostB, then on to HostC
-- Created by Joe Admin on 10/11/2012
Extract p01ab
RmtHost hostb, MgrPort 15002, Compress
RmtTrail ./dirdat/bc
Passthru
Table oggusera.tcust*;
GGSCI (hostA) >
|
このTableスキーマはソースです。
View Param p01abと入力すると、作業内容をいつでも確認できます。
Data PumpグループとリモートのExtract証跡ファイルを作成します。
| HostA - iSeries |
GGSCI (hostA) > Add Extract p01ab, ExtTrailSource ./dirdat/ab EXTRACT added. GGSCI (hostA) > Add RmtTrail ./dirdat/bc, Extract p01ab, Megabytes 5 RMTTRAIL added. GGSCI (hostA) > |
Megabytes 5はオプションです。 デフォルトは100メガバイトです。
Data Pumpでは、ローカルの証跡ファイルabからの読取りとリモートの証跡ファイルbcへの書込みが実行されます。 作成されるリモートの証跡ファイルにはdirdat/bc000000という名前が付与され、この証跡ファイルがいっぱいになると、次の証跡ファイルはdirdat/bc000001という名前になり、その次はdirdat/bc000002となります。 2セットの証跡ファイルは異なるホストに配置されるため(同じ名前のディレクトリに配置される場合でも)、同じ名前(abなど)になる可能性があります。 異なるファイル名が選択されるのは、単にパラメータRmtTrailで別の証跡ファイルが作成されることを示すためです。
セカンダリのExtractが作成および設定されましたが、開始されていません。 次の手順のために、GGSCIを実行したままにします。
3.3 Extractプロセスの検証(オプション)
Extractプロセスが正しく作成および登録されていることを確認します。
| HostA - iSeries |
GGSCI (hostA) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED E01AB 00:00:00 00:03:24
EXTRACT STOPPED P01AB 00:00:00 00:01:22
GGSCI (hostA) >
|
Manager以外はまだ何も開始されていないため、ExtractのステータスはSTOPPEDと表示されます。
証跡ファイルが正しく作成および登録されていることを確認します。
| HostA - iSeries |
GGSCI (hostA) > Info ExtTrail *
Extract Trail: ./dirdat/ab
Extract: E01AB
Seqno: 0
RBA: 0
File Size: 5M
Extract Trail: ./dirdat/bc
Extract: P01AB
Seqno: 0
RBA: 0
File Size: 5M
GGSCI (hostA) >
|
まだ何も開始されていないため、順序番号(Seqno)と相対バイト・アドレス(RBA)は0と表示されます。
次の手順のために、GGSCIを実行したままにします。
4. Replicatを使用したデータ配信の設定
Replicat("e"は意図的に削除されています)と呼ばれるデータ配信は、中間のhostB(プロセス用)とターゲットのhostC(表およびジャーナル用)を組み合わせて実行されます。 データ配信を設定するには、次の手順を実行します。
4.1 Replicatの設定
中間のhostBで、Replicatパラメータ・ファイルを作成します。
| HostB - Linux |
[ogguserb@hostB ogg_linux_400_BC]$ ./ggsci Oracle GoldenGate Command Interpreter for DB2 for i ... many lines omitted for clarity ... GGSCI (hostB) 1> Obey startup.oby ... many lines omitted for clarity ... but make sure everything started. GGSCI (hostB) > Edit Param r01bc -- Delivery from HostA thru HostB, on to HostC -- Created by Joe Admin on 10/11/2012 Replicat r01bc SourceDB HOSTC, UserID ogguserc, password pswdc -- Cannot use AssumeTargetDefs, must use SourceDefs (long story) -- AssumeTargetDefs SourceDefs dirdef/d01ab.def DiscardFile dirrpt/r01bc.dsc, Append Map oggusera.tcustmer, Target ogguserc.tcustmer; Map oggusera.*, Target ogguserc.*; GGSCI (hostB) > |
Map文は、列とフィールドを変換して、(ここに示すように)シンプルにすることも非常に複雑にすることもできます。 たとえば、3つのソース列first_name、middle_init、last_nameを組み合わせて1つのターゲット列full_nameにすることができます。
Replicatはワイルドカードを使用して、ogguseraスキーマに含まれるすべての表(チェックポイント表oggusera.oggchkptを含む)をマップすると考えられているかもしれませんが、 Extractが送信するのはtcust*表のみであり、チェックポイント表はレプリケートされません。
Replicatプロセスを作成します。
| HostB - Linux |
GGSCI (hostB) > Add Replicat r01bc, ExtTrail ./dirdat/bc
REPLICAT added.
GGSCI (hostB) >
|
View Param r01bcと入力すると、作業内容をいつでも確認できます。
Replicatプロセスが正しく作成および登録されていることを確認します。
| HostB - Linux |
GGSCI (hostB) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT STOPPED R01BC 00:00:00 00:00:33
GGSCI (hostB) >
|
Manager以外はまだ何も開始されていないため、ReplicatのステータスはSTOPPEDと表示されます。
4.2 すべてのプロセスを開始する
ソースですべてのExtractプロセスを開始します。
| HostA - iSeries |
GGSCI (hostA) > Start Extract *
Sending START request to MANAGER ...
EXTRACT E01AB starting
Sending START request to MANAGER ...
EXTRACT P01AB starting
GGSCI (hostA) >
|
Start *と入力するか、 Start e01*およびStart p01*と入力することもできます。
ターゲットですべてのReplicatプロセスを開始します。
| HostB - Linux |
GGSCI (hostB) > Start Replicat *
Sending START request to MANAGER ...
REPLICAT R01BC starting
GGSCI (hostB) >
|
Start *またはStart r01*と入力することもできます。
ターゲットのすべてのプロセスに関する情報を表示します。
概要情報を表示します。
| HostB - Linux |
GGSCI (hostB) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING R01BC 00:00:00 00:00:03
GGSCI (hostB) >
|
何か問題がある場合、STATUSがSTOPPEDまたはABENDEDになります (STATUSがFAILEDと表示される方が便利かもしれませんが、そのようには表示されず、通常、STOPPEDとだけ表示され、試行が失敗したことは通知されません)。 この場合、View Report r01bc(または開始できなかったプロセス)を入力します。 レポートの下部に、障害の原因が記載されています。 エラーを修正してプロセスを再起動します。
詳しい情報を表示します。
| HostB - Linux |
GGSCI (hostB) > Info r01bc
REPLICAT R01BC Last Started 2012-09-06 15:01 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:04 ago)
Log Read Checkpoint File ./dirdat/bc000001
2012-09-06 14:56:45.768684 RBA 1487
GGSCI (hostB) >
|
もっとも詳しい情報を表示します。
| HostB - Linux |
GGSCI (hostB) > Info r01bc, Detail
REPLICAT R01BC Last Started 2012-09-06 15:01 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:00 ago)
Log Read Checkpoint File ./dirdat/bc000001
2012-09-06 14:56:45.768684 RBA 1487
Extract Source Begin End
./dirdat/bc000001 * Initialized * 2012-09-06 14:56
./dirdat/bc000000 * Initialized * First Record
Current directory /home/ogguserb/ogg_linux_400_BC
Report file /home/ogguserb/ogg_linux_400_BC/dirrpt/R01BC.rpt
Parameter file /home/ogguserb/ogg_linux_400_BC/dirprm/r01bc.prm
Checkpoint file /home/ogguserb/ogg_linux_400_BC/dirchk/R01BC.cpr
Checkpoint table ogguserc.oggchkpt
Process file /home/ogguserb/ogg_linux_400_BC/dirpcs/R01BC.pcr
Stdout file /home/ogguserb/ogg_linux_400_BC/dirout/R01BC.out
Error log /home/ogguserb/ogg_linux_400_BC/ggserr.log
GGSCI (hostB) >
|
どの場合にも、StatusがRUNNINGになり、前回の更新またはチェックポイントからの時間は10秒未満になります。
ソースのすべてのプロセスに関する情報を表示します。
概要情報を表示します。
| HostA - iSeries |
GGSCI (hostA) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING E01AB 00:00:00 00:00:04
EXTRACT RUNNING P01AB 00:00:00 00:00:05
GGSCI (hostA) >
|
詳細情報を表示します。
| HostA - iSeries |
GGSCI (hostA) > Info Extract * EXTRACT E01AB Last Started 2012-09-06 08:56 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:04 ago) VAM Read Checkpoint 2012-09-06 08:43:42.642195 Journal Receiver Timestamp (UTC) Seq uence Number OGGUSERA/OGGJRN | |Sep 06 2012 14:43:42.642195 | EOF System Sequence Number: 00000000000000000000 EXTRACT P01AB Last Started 2012-09-06 08:56 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:05 ago) Log Read Checkpoint File ./dirdat/ab000001 2012-09-06 08:56:45.753034 RBA 1315 GGSCI (hostA) > Exit [/home/oggusera/ogg_i_400_A] |
Replicatと同様に、StatusはRUNNINGになり、前回の更新またはチェックポイントからの時間は10秒未満になります。
どの場合でも、ステータスRUNNINGが表示されます。 ソース表は空のままです。 まだデータが配置されておらず、何もレプリケートされていません。
5. データの生成
Oracle GoldenGateソフトウェアには、サンプルのデータ・トラフィックを生成するためのSQLスクリプトが付属しています。 既存の表をレプリケートする方法(複雑)と新しい空の表を使って始める方法(簡単)は、異なります。 空の表セットにサンプル・データを生成するには、次の手順を実行します。
5.1 INSERTの生成(Initial Load)
DB2スクリプトを実行して行を挿入(INSERT)します。
ソースのhostAのOSプロンプトで、demo_db2_insert.sqlスクリプトをrundb2.shシェルで実行します。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./rundb2.sh demo_db2_insert.sql
... many lines omitted for clarity ...
MSG ID SEV RECORD TEXT
SQL7956 0 1 Position 1 1 rows inserted in TCUSTMER in OGGUSERA.
SQL7956 0 29 Position 1 1 rows inserted in TCUSTMER in OGGUSERA.
SQL7956 0 38 Position 1 1 rows inserted in TCUSTORD in OGGUSERA.
SQL7956 0 50 Position 1 1 rows inserted in TCUSTORD in OGGUSERA.
SQL7960 0 62 Position 1 Commit completed.
SQL7960 0 Commit completed.
Message Summary
Total Info Warning Error Severe Terminal
6 6 0 0 0 0
00 level severity errors found in source
* * * * * E N D O F L I S T I N G * * * * *
[/home/oggusera/ogg_i_400_A]
|
エラーは表示されないはずです。
ソース表に行が挿入されたことを確認します。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./rundb2.sh DB2> SELECT * FROM tcustmer CUST_CODE NAME CITY STATE ---------- ------------------------------ -------------------- ------ WILL BG SOFTWARE CO. SEATTLE WA JANE ROCKY FLYER INC. DENVER CO 2 RECORD(S) SELECTED. DB2> SELECT * FROM tcustord CUST_CODE ORDER_DATE PRODUCT_CODE ORDER_ID PRODUCT_PRICE P RODUCT_AMOUNT TRANSACTION_ID ---------- -------------------------- ------------- ----------- -------------- - -------------- ------------------------ WILL 1994-09-30-15.33.00.000000 CAR 144 17520.00 3 100 JANE 1995-11-11-13.52.00.000000 PLANE 256 133300.00 1 100 2 RECORD(S) SELECTED. DB2> exit [/home/oggusera/ogg_i_400_A] |
SQL7008エラーが表示される場合、ジャーナル機能を有効化していない可能性があります。
ソースのGGSCI Extractプロセスがまだ実行されていることを確認します。
ソースのhostAで、以下のコマンドを入力します。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./ggsci GGSCI (hostA) 1> Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING E01AB 00:00:00 00:00:00 EXTRACT RUNNING P01AB 00:00:00 00:00:06 GGSCI (hostA) 2> Exit [/home/oggusera/ogg_i_400_A] |
StatusにABENDEDと表示される場合は、プロセス・レポート(後述のトピックで説明)でエラーの内容を確認します。
中間にあるGGSCI Replicatプロセスがまだ実行されていることを確認します。
中間のhostBで、GGSCIはまだ実行されているはずです。 以下のコマンドを入力します。
| HostB - Linux |
GGSCI (hostB) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING R01BC 00:00:00 00:00:05
GGSCI (hostB) >
|
StatusにABENDEDと表示される場合は、プロセス・レポート(後述のトピックで説明)でエラーの内容を確認します。
ターゲット表に行が挿入されたことを確認します。
ターゲットのhostCでOSプロンプトを使用して、次のDB2問合せを実行します。
| HostC - iSeries |
[/home/ogguserc/ogg_i_400_C] ./rundb2.sh DB2> SELECT * FROM tcustmer CUST_CODE NAME CITY STATE ---------- ------------------------------ -------------------- ------ WILL BG SOFTWARE CO. SEATTLE WA JANE ROCKY FLYER INC. DENVER CO 2 RECORD(S) SELECTED. DB2> SELECT * FROM tcustord CUST_CODE ORDER_DATE PRODUCT_CODE ORDER_ID PRODUCT_PRICE P RODUCT_AMOUNT TRANSACTION_ID ---------- -------------------------- ------------- ----------- -------------- - -------------- ------------------------ WILL 1994-09-30-15.33.00.000000 CAR 144 17520.00 3 100 JANE 1995-11-11-13.52.00.000000 PLANE 256 133300.00 1 100 2 RECORD(S) SELECTED. DB2> exit [/home/ogguserc/ogg_i_400_C] |
ソース・データベースとターゲット・データベースのtcust*表が一致しているはずです。
ソース内にすでに行が含まれている場合は、ターゲットで別の方法を使って初期ロードを実行できますが、両方の表が最初に空の場合は、これがもっとも簡単な方法です。
5.2 UPDATE/DELETEの生成
DB2スクリプトを実行して行を更新(UPDATE)および削除(DELETE)します。
ソースのhostAのOSプロンプトで、demo_db2_misc.sqlスクリプトをrundb2.shシェルで実行します。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./rundb2.sh demo_db2_misc.sql
... many lines omitted for clarity ...
MSG ID SEV RECORD TEXT
SQL7956 0 1 Position 1 1 rows inserted in TCUSTMER in OGGUSERA.
SQL7956 0 29 Position 1 1 rows inserted in TCUSTMER in OGGUSERA.
SQL7956 0 38 Position 1 1 rows inserted in TCUSTMER in OGGUSERA.
SQL7960 0 47 Position 1 Commit completed.
SQL7956 0 49 Position 1 1 rows inserted in TCUSTORD in OGGUSERA.
SQL7956 0 61 Position 1 1 rows inserted in TCUSTORD in OGGUSERA.
SQL7956 0 73 Position 1 1 rows inserted in TCUSTORD in OGGUSERA.
SQL7960 0 85 Position 1 Commit completed.
SQL7957 0 87 Position 1 1 rows updated in TCUSTORD in OGGUSERA.
SQL7957 0 94 Position 1 1 rows updated in TCUSTORD in OGGUSERA.
SQL7957 0 101 Position 1 1 rows updated in TCUSTORD in OGGUSERA.
SQL7957 0 108 Position 1 1 rows updated in TCUSTMER in OGGUSERA.
SQL7960 0 113 Position 1 Commit completed.
SQL7955 0 115 Position 1 1 rows deleted from TCUSTORD in OGGUSERA.
SQL7955 0 121 Position 1 1 rows deleted from TCUSTORD in OGGUSERA.
SQL7960 0 127 Position 1 Commit completed.
SQL0088 0 129 Position 1 DELETE applies to entire table.
SQL7955 0 129 Position 1 3 rows deleted from TCUSTORD in OGGUSERA.
SQL7961 0 131 Position 1 Rollback completed.
SQL7960 0 Commit completed.
Message Summary
Total Info Warning Error Severe Terminal
20 20 0 0 0 0
00 level severity errors found in source
* * * * * E N D O F L I S T I N G * * * * *
[/home/oggusera/ogg_i_400_A]
|
エラーは表示されないはずです。
ソース表の行が更新および削除されたことを確認します。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./rundb2.sh DB2> 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 5 RECORD(S) SELECTED. DB2> SELECT * FROM tcustord CUST_CODE ORDER_DATE PRODUCT_CODE ORDER_ID PRODUCT_PRICE P RODUCT_AMOUNT TRANSACTION_ID ---------- -------------------------- ------------- ----------- -------------- - -------------- ------------------------ WILL 1994-09-30-15.33.00.000000 CAR 144 16520.00 3 100 BILL 1995-12-31-15.00.00.000000 CAR 765 14000.00 3 100 BILL 1996-01-01-00.00.00.000000 TRUCK 333 25000.00 15 100 3 RECORD(S) SELECTED. DB2> exit [/home/oggusera/ogg_i_400_A] |
tcustmerに3行挿入され、tcustordに3行挿入され、tcustordで4行更新され、tcustordから2行削除されました。
ソースのGGSCI Extractプロセスがまだ実行されていることを確認します。
ソースのhost01で、以下のコマンドを入力します。
| HostA - iSeries |
[/home/oggusera/ogg_i_400_A] ./ggsci GGSCI (hostA) 1> Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING E01AB 00:00:00 00:00:09 EXTRACT RUNNING P01AB 00:00:00 00:00:01 GGSCI (hostA) 2> |
最初のINSERTが機能する場合は、おそらくUPDATEとDELETEも機能するでしょう。
中間にあるGGSCI Replicatプロセスがまだ実行されていることを確認します。
中間のhostBで、GGSCIはまだ実行されているはずです。 以下のコマンドを入力します。
| HostB - Linux |
GGSCI (hostB) > Info All
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING R01BC 00:00:00 00:00:09
GGSCI (hostB) >
|
StatusはまだRUNNINGとなっているはずです。
ターゲット表の行が更新および削除されたことを確認します。
ターゲットのhostCで、次のDB2問合せを実行します。
| HostC - iSeries |
[/home/ogguserc/ogg_i_400_C] ./rundb2.sh DB2> 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 5 RECORD(S) SELECTED. DB2> SELECT * FROM tcustord CUST_CODE ORDER_DATE PRODUCT_CODE ORDER_ID PRODUCT_PRICE P RODUCT_AMOUNT TRANSACTION_ID ---------- -------------------------- ------------- ----------- -------------- - -------------- ------------------------ WILL 1994-09-30-15.33.00.000000 CAR 144 16520.00 3 100 BILL 1995-12-31-15.00.00.000000 CAR 765 14000.00 3 100 BILL 1996-01-01-00.00.00.000000 TRUCK 333 25000.00 15 100 3 RECORD(S) SELECTED. DB2> exit [/home/ogguserc/ogg_i_400_C] |
Oracle GoldenGateの基本的な一方向機能Extract、Data Pump、およびReplicatの構成と操作が完了しました。
6. Oracle GoldenGate環境の管理
プロセスの実行中と実行後にレポートが生成されます。 これらのレポートには、プロセスの実行に関連する情報、警告、およびエラー(発生した場合)が含まれています。 レポートを表示するには、次の手順を実行します。
6.1 レポートの表示
ソースのプロセス・レポートを表示します。
Extractのプロセス・レポートを表示します。
| HostA - iSeries |
GGSCI (hostA) 2> Send Extract e01ab, Report Sending REPORT request to EXTRACT E01AB ... Request processed. GGSCI (hostA) 3> View Report e01ab *********************************************************************** Oracle GoldenGate Capture for DB2 for i Version 11.2.1.0.2 OGGCORE_11.2.1.0.3_PLATFORMS_120724.2205 IBM i, ppc, 64bit (optimized), IBM DB2 for i on Jul 26 2012 01:08:48 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. Starting at 2012-09-06 08:56:43 *********************************************************************** Operating System Version: OS400 Version 6, Release 1 Node: HOSTA Machine: 0010000BD705 soft limit hard limit Address Space Size : unlimited unlimited Heap Size : unlimited unlimited File Size : unlimited unlimited CPU Time : unlimited unlimited Process id: 320447 Description: *********************************************************************** ** Running with the following parameters ** *********************************************************************** E01AB.rpt (25%) |
[Enter]を押すと、一度に1行ずつ移動できます。[Space]を押すと、一度に1ページずつ移動できます。 レポートの一番下に移動します。
| HostA - iSeries |
***********************************************************************
* ** Run Time Statistics ** *
***********************************************************************
Report at 2012-09-06 10:07:16 (activity since 2012-09-06 09:21:22)
Output to ./dirdat/ab:
From Table OGGUSERA.TCUSTMER:
# inserts: 5
# updates: 1
# deletes: 0
# discards: 0
From Table OGGUSERA.TCUSTORD:
# inserts: 5
# updates: 3
# deletes: 2
# discards: 0
***********************************************************************
** Run Time Warnings **
***********************************************************************
GGSCI (hostA) 4>
|
同じ手順を実行してData Pumpのp01abレポートを表示できます。
ターゲットのプロセス・レポートを表示します。
中間のhostBで、Replicatのプロセス・レポートを表示します
| HostB - Linux |
GGSCI (hostB) > Send Replicat r01bc, Report Sending REPORT request to REPLICAT R01BC ... Request processed. GGSCI (hostB)> View Report r01bc *********************************************************************** Oracle GoldenGate Delivery for DB2 for i Version 11.2.1.0.2 OGGCORE_11.2.1.0.2T3_PLATFORMS_120724.2205 Linux, x64, 64bit (optimized), IBM DB2 for i Remote on Jul 25 2012 02:09:35 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. Starting at 2012-09-06 15:36:07 *********************************************************************** Operating System Version: Linux Version #1 SMP Wed Jul 27 21:02:33 EDT 2011, Release 2.6.32-200.13.1.el5uek Node: hostb.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: 1233 Description: *********************************************************************** ** Running with the following parameters ** *********************************************************************** --More--(25%) |
[Enter]を押すと、一度に1行ずつ移動できます。[Space]を押すと、一度に1ページずつ移動できます。 レポートの一番下に移動します。
| HostB - Linux |
***********************************************************************
* ** Run Time Statistics ** *
***********************************************************************
Last record for the last committed transaction is the following:
___________________________________________________________________
Trail name : ./dirdat/bc000001
Hdr-Ind : E (x45) Partition : . (x04)
UndoFlag : . (x00) BeforeAfter: B (x42)
RecLength : 71 (x0047) IO Time : 2012-09-06 15:45:08.345869
IOType : 3 (x03) OrigNode : 255 (xff)
TransInd : . (x02) FormatType : R (x52)
SyskeyLen : 0 (x00) Incomplete : . (x00)
AuditRBA : 2 AuditPos : 0
Continued : N (x00) RecCount : 1 (x01)
2012-09-06 15:45:08.345869 Delete Len 71 RBA 4089
Name: OGGUSERA.TCUSTORD
___________________________________________________________________
Reading ./dirdat/bc000001, current RBA 4228, 16 records
Report at 2012-09-06 16:27:02 (activity since 2012-09-06 15:36:09)
From Table OGGUSERA.TCUSTMER to OGGUSERC.TCUSTMER:
# inserts: 5
# updates: 1
# deletes: 0
# discards: 0
From Table OGGUSERA.TCUSTORD to OGGUSERC.TCUSTORD:
# inserts: 5
# updates: 3
# deletes: 2
# discards: 0
***********************************************************************
** Run Time Warnings **
***********************************************************************
GGSCI (hostB) >
|
Replicatのinserts/updates/deletesの数が、Extractでの数と一致するはずです。 discardsがあった場合は、破棄された理由を確認する必要があります。
レポートは、ユーザーがレポートの送信を指定した(上記の操作)場合、またはプロセスが停止した場合に生成されます。 レポートの名前と番号は、最新のレポートにはprocessname.rptが付与され、最近のレポートはprocessname0.rpt、processname1.rpt、processname2.rptとなり、もっとも古いレポートはprocessname9.rptとなります。 新しいレポートが作成されるたびに、もっとも古いレポートが破棄されるまで、古いレポートはすべて名前/番号が変更されて"番号が1つ大きく"なります。 最大11のレポート(番号のない最新のレポートと、0~9の以前のレポート)が同時に保持されます。
6.2 統計情報の表示
ソースのExtractの統計情報を表示します。
| HostA - iSeries |
GGSCI (hostA) > Send Extract e01ab, Stats
Sending STATS request to EXTRACT E01AB ...
Start of Statistics at 2012-09-06 12:19:09.
Output to ./dirdat/ab:
Extracting from OGGUSERA.TCUSTMER to OGGUSERA.TCUSTMER:
*** Total statistics since 2012-09-06 09:21:22 ***
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-06 09:21:22 ***
Total inserts 5.00
Total updates 1.00
Total deletes 0.00
Total discards 0.00
Total operations 6.00
*** Hourly statistics since 2012-09-06 12:00:00 ***
No database operations have been performed.
*** Latest statistics since 2012-09-06 09:21:22 ***
Total inserts 5.00
Total updates 1.00
Total deletes 0.00
Total discards 0.00
Total operations 6.00
Extracting from OGGUSERA.TCUSTORD to OGGUSERA.TCUSTORD:
*** Total statistics since 2012-09-06 09:21:22 ***
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-06 09:21:22 ***
Total inserts 5.00
Total updates 3.00
Total deletes 2.00
Total discards 0.00
Total operations 10.00
*** Hourly statistics since 2012-09-06 12:00:00 ***
No database operations have been performed.
*** Latest statistics since 2012-09-06 09:21:22 ***
Total inserts 5.00
Total updates 3.00
Total deletes 2.00
Total discards 0.00
Total operations 10.00
End of Statistics.
GGSCI (hostA) >
|
コマンドStats e01abで、同じ処理が実行されます。 何らかの理由でプロセスが停止した場合は、統計情報はすべて失われます。
ターゲットのReplicatの統計情報を表示します。
| HostB - Linux |
GGSCI (hostB) > Send Replicat r01bc, Stats
Sending STATS request to REPLICAT R01BC ...
Start of Statistics at 2012-09-06 18:23:55.
Replicating from OGGUSERA.TCUSTMER to OGGUSERC.TCUSTMER:
*** Total statistics since 2012-09-06 15:36:09 ***
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-06 15:36:09 ***
Total inserts 5.00
Total updates 1.00
Total deletes 0.00
Total discards 0.00
Total operations 6.00
*** Hourly statistics since 2012-09-06 18:00:00 ***
No database operations have been performed.
*** Latest statistics since 2012-09-06 15:36:09 ***
Total inserts 5.00
Total updates 1.00
Total deletes 0.00
Total discards 0.00
Total operations 6.00
Replicating from OGGUSERA.TCUSTORD to OGGUSERC.TCUSTORD:
*** Total statistics since 2012-09-06 15:36:09 ***
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-06 15:36:09 ***
Total inserts 5.00
Total updates 3.00
Total deletes 2.00
Total discards 0.00
Total operations 10.00
*** Hourly statistics since 2012-09-06 18:00:00 ***
No database operations have been performed.
*** Latest statistics since 2012-09-06 15:36:09 ***
Total inserts 5.00
Total updates 3.00
Total deletes 2.00
Total discards 0.00
Total operations 10.00
End of Statistics.
GGSCI (hostB) >
|
プライマリExtractに対する以前の統計情報は、Data Pumpが関連していたため、スキーマOGGUSERAからOGGUSERAまでのものでした。 今回は、スキーマOGGUSERAからOGGUSERCまでになったため、より明確になりました。
他の種類の統計情報も利用できます。
6.3 プロセスの停止および削除
まだその必要はありませんが、個々のプロセスを停止することが必要になった場合は、単にStop Extract e01abと入力するか、またはStop *と入力してホスト上のすべてのプロセスを停止します。 e01abを停止するプロセス名に置き換えます。
まだその必要はありませんが、個々のプロセスを削除することが必要になった場合は、最初にデータベースに接続していることを確認してから(DBLogin)、Delete Extract e01abと入力するか、またはDelete ER *と入力してホスト上のすべてのプロセスを削除します。 GGSCIで"Are you sure?"と確認を求められたら、yと入力します。
まとめ
- 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
Oracle GoldenGateを使用すると、このサンプル演習で行ったよりもさらに多くのことを実行できます。
このチュートリアルで学習した内容は、次のとおりです。
参考資料
このチュートリアルのトピックに関連するヘルプ・トピック
著者
このOracle by Exampleをナビゲートする際、以下の機能を使用できます。
- ヘッダー・ボタンの非表示:
- ヘッダー内のボタンを非表示にするには、タイトルをクリックします。 ボタンを再表示するには、もう一度タイトルをクリックします。
- トピック一覧ボタン:
- すべてのトピックの一覧です。 いずれかのトピックをクリックすると、その項に移動します。
- すべてのトピックを開く/閉じる:
- すべての項に対する詳細を表示または非表示にします。 デフォルトでは、すべてのトピックが閉じられています。
- すべてのイメージを表示/非表示:
- すべてのスクリーンショットを表示または非表示にします。 デフォルトでは、すべてのイメージが表示されています。
- 印刷:
- コンテンツを印刷します。 現在表示または非表示にされているコンテンツが印刷されます。
このチュートリアルの特定の項に移動するには、一覧からトピックを選択してください。