ExadataでのOracle GoldenGate: Oracle 11gR2からOracle 11gR2へのレプリケーション
概要
- Oracle GoldenGateプロセスの構成に合わせた環境の準備
- データベース操作の変更取得の構成および開始
- データベース操作の変更配信の構成および開始
- Manager:
- ソース・ホスト上に1つのManagerが配置され、ターゲット・ホストには別のMangerが配置されます。 Managerはソース・インスタンスとターゲット・インスタンス上でその他のプロセスを開始および停止します。 ExtractまたはReplicatがいったん実行中になると、Managerがトラフィックを送信する必要はなくなります。
- Initial Load:
- オプション。 ターゲット表を1回移入するために使用します。 ソース表から直接読み取ることも、ASCIIファイルから読み取ることもできます。 このOBEではInitial Loadは使用しません。 使用法については、その他のOBEを参照してください。
- Extract:
- トランザクション・データを証跡ファイルに取得するためにソース上で実行します。 Extractには、Classic(このOBEで使用)とIntegratedという2つのバージョンがあります。
- Data Pump:
- オプションですが、強くお勧めします。 Data Pumpは、IPネットワーク経由でソース・インスタンスからターゲット・インスタンスに証跡ファイルを送信します。 技術的には、Data PumpはセカンダリのExtractです。
- Replicat:
- ターゲット・データベースにデータを提供します。 通常、Replicatはターゲットで実行されます。 末尾の"e"がないのはスペルミスではありません(長い話です)。
- Initial Loadや統計情報の表示などの"通常"のタスクについては、OracleからOracleへのOracle GoldenGateの基本OBEを参照すること。 このOBEでは、Exadataに固有の観点についてのみ説明します。 詳しくは、末尾の関連情報セクションを参照してください。
- こちらのホワイト・ペーパー、特にMy Oracle Support(MOS、参照にはアカウントが必要)Note 1054431.1のセクションを参照していること。
- ソース・ホストのOracle 11gR2データベースにサンプル・スキーマがインストールされており、実行中であること。
- 64ビットLinux向けOracle GoldenGateのzipディストリビューションが、ソースおよびターゲットの
/home/user/ディレクトリに配置されていること。 このファイルはOracle Software Delivery Cloudからダウンロードできます。 - Exadataクラスタ・サービスがインストールされており、実行中であること。
- 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、testなどがあります。
- 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)チュートリアルでは、Oracle GoldenGate(OGG)を使用して、2つの異種データベース間(ここではLinux Oracle 11gR2データベースからExadata 11gR2データベース)で同期を維持する方法について説明します。
このチュートリアルで学習する内容は、次のとおりです。
所要時間
約2時間
はじめに
ExadataでのOracle GoldenGate: Oracle 11gR2からOracle 11gR2へのレプリケーション
Oracle GoldenGateでは、トランザクション・ログを読み取り、1つまたは複数のターゲット・データベースに変更を書き込むことで、異種データベースのレプリケーションを非常に高速に実行します。 一般的な環境では、次の5つのプロセスを使用します。
Linux OracleからExadataへの構成(一方向)
この図は、プライマリのExtractプロセスを使用して、ターゲットでリモート証跡を作成する構成を示しています。 Replicatプロセスによって、リモート証跡の変更がターゲットのRACデータベースが適用されます。 ソースのhost01はLinuxである必要はなく、64ビットである必要もありません。
環境の概要は次のとおりです。
| ホスト名 | 画面の色 | OS | ハードウェア | データベース | SID | OGGのソース/ターゲット | プライマリ・コンソール |
|---|---|---|---|---|---|---|---|
| host01 | 赤 | Linux 64ビット | 単一CPUのPC | Oracle 11gR2 | orcl | ソース | 32ビットおよび64ビット |
| qr01db02(Node02) | 黄 | Linux64ビット | Exadata DBノード | Oracle 11gR2 RAC | dbm2 | ターゲット | GGSCI |
| qr01db01(Node01) | 緑 | Linux 64ビット | Exadata DBノード | Oracle 11gR2 RAC | dbm1 | ターゲット | SQL*Plus |
前提条件
このOBEの前提条件は次のとおりです。
host01とhost02の2つのホストがあり、各ホストでOS、GGSCI、およびSQLの3つの環境プロンプトを使用します。 入力個所が6つあるため、 どのコマンドをどの場所に入力するのかに、特に注意してください。 誤ったコンテキストでの誤ったコマンドの使用が、もっともよくあるエラーです。
タスクの概要
環境の準備
このOBEを実行するには、ソース・システムとターゲット・システムの両方にGoldenGateアプリケーションをインストールする必要があります。 インストールには、サンプル・データベースと、初期データおよび後続の更新処理を生成するスクリプトが含まれます。 ソース表とターゲット表は初期データと一緒に作成され、ロードされます。 また、GoldenGateのManagerプロセスが起動され、その他のプロセスを構成および開始できるようになります。 最後に、ソース定義が生成され、ターゲット・システムに送信されます。
変更取得(Extract)の構成
監査の対象となる表に対してはExtractプロセスが構成され、変更データがTMF監査証跡から直接取得されて、GoldenGateのローカル証跡ファイルと呼ばれるデータ・キューに変更が格納されます。
変更配信(Replicat)の構成
表に対するデータの初期ロードが完了し、Extractプロセスがすべての処理を取得し始めたら、Replicatプロセスを構成して、取得した処理をターゲット・データベースに配信します。
表記規則
指示と画面のテキストの色とフォントは、次のように解釈します。
ファイルとプロセスのネーミング規則
ファイルとプロセスのネーミング規則が役立つことがあります。 次に、このOBEで使用している規則の例を示します。
pxxxxhh.ext
ここで、それぞれの変数は次のような意味を持ちます
1. 環境の準備
- オペレーティング・システム(OS)の環境変数を
.profileまたは.bash_profileなどに定義する。 - アプリケーションのVIPアドレスを構成する。
- 後でsqlplus接続を使用できるようにするため、
tnspingのテストを行う。 - OGG管理ユーザーを作成し、データベース・パラメータを変更することで、Oracle Database 11gR2を準備する。
目的
ここでの目的は次のとおりです。
ユーザーが入力するコマンドは、青の等幅フォントで示されており、 システムの応答は黒の等幅フォントで示されています。
1.1 OS環境変数の設定
ここでは、環境変数用の.profileと、ホスト・エイリアス用の/etc/hostsファイルの構成を行います。 この設定は、3つのホスト(ソース・ノードと2つのターゲット・ノード)すべてで実行します。 既存プロファイルにはすでに行が含まれているかもしれませんが、このステップでは追加する行に焦点を合わせて説明します。
好みのエディタを使用し、ターゲット・ホスト・ノード1にあるプロファイルの初期状態を確認します。 変数ORACLE_BASE、ORACLE_HOME、OGG_HOME、LD_LIBRARY_PATHを追加します。 その他の行はそのままにします。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db01 ~]$ vi .bash_profile 1 # .bash_profile 2 3 # Get the aliases and functions 4 if [ -f ~/.bashrc ]; then 5 . ~/.bashrc 6 fi 7 8 # User specific environment and startup programs 9 10 PATH=$PATH:$HOME/bin 11 12 export PATH 13 export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 14 export ORACLE_SID=dbm1 15 ORAENV_ASK=NO;. /usr/local/bin/oraenv > /dev/null 2<&1 16 alias gogrid='export ORACLE_HOME=/u01/app/11.2.0/grid;export ORACLE_SID=+ASM1;. /usr/local/bin/oraenv > /dev/null 2<&1;env |grep ORA|grep -v BASE' 17 alias godb='export ORACLE_HOME=/u01/app/oracle/product/11.2.0 /dbhome_1;export ORACLE_SID=dbm1;. /usr/local/bin/oraenv > /d ev/null 2<&1;env|grep ORA|grep -v BASE' [oracle@qr01db01 ~]$ vi .bash_profile 1 # .bash_profile 2 3 # Get the aliases and functions 4 if [ -f ~/.bashrc ]; then 5 . ~/.bashrc 6 fi 7 8 # User specific environment and startup programs 9 10 PATH=$PATH:$HOME/bin 11 12 export PATH 13 export ORACLE_BASE=/u01/app/oracle 14 export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 15 export OGG_HOME=$ORACLE_BASE/ogg 16 export LD_LIBRARY_PATH=$ORACLE_HOME/lib 17 export ORACLE_SID=dbm1 18 ORAENV_ASK=NO;. /usr/local/bin/oraenv > /dev/null 2<&1 19 alias gogrid='export ORACLE_HOME=/u01/app/11.2.0/grid;export ORACLE_SID=+ASM1;. /usr/local/bin/oraenv > /dev/null 2<&1;env |grep ORA|grep -v BASE' 20 alias godb='export ORACLE_HOME=/u01/app/oracle/product/11.2.0 /dbhome_1;export ORACLE_SID=dbm1;. /usr/local/bin/oraenv > /d ev/null 2<&1;env|grep ORA|grep -v BASE' [oracle@qr01db02 ~]$ |
alias gogridとalias godbは別のデモのために追加されたものであり、デフォルトのプロファイルには含まれていません。 これらの変数は、Grid InfrastructureとDB環境間の切替えを容易にします。 それぞれのエイリアスは数行にわたっています。 これらの行に余分な改行を挿入しないよう注意してください。
rootユーザーに切り替え、/etc/hostsファイルを編集してhost01用のエイリアスを追加します。 使用する環境に合ったIPアドレスを使用します。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db02 ~]$ su - root Password: [root@qr01db02 ~]# vi /etc/hosts 127.0.0.1 localhost.localdomain localhost (...rest of file not shown, too many possibilities...) [root@qr01db02 ~]# tail -1 /etc/hosts 192.0.2.16 host01.example.com host01 [root@qr01db02 ~]# exit [oracle@qr01db02 ~]$ |
tailコマンドは、host01アドレスがファイルの末尾に追加されたことを前提としています。 編集が完了したら、rootを終了します。
まったく同じ処理を、もう一方のターゲット・ノード2に対して実行します。 行は表示されていませんが、qr01db01およびqr01db02と同じです。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 ~]$ vi .bash_profile (REPEAT ON OTHER QR01db02) [oracle@qr01db02 ~]$ su - root [root@qr01db02 ~]# vi /etc/hosts (REPEAT ON OTHER QR01db02) [root@qr01db02 ~]# exit [oracle@qr01db02 ~]$ |
2つのノードのプロファイルが一致し、/etc/hostsファイルはほぼ等しくなりました。
ソース・ホストに対しても同じ手順を実行します。 インストール・ディレクトリに若干の違いがある場合がありますが、ここでは、ORACLE_BASE、ORACLE_HOME、OGG_HOME、LD_LIBRARY_PATHという4つの同じ環境変数を定義します。 /etc/hostsはExadataのアドレスを指しています。
| Host01 - Linux(ソース) |
[oracle@host01 ~]$ vi .bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_home1 OGG_HOME=$ORACLE_BASE/ogg ORACLE_SID=orcl PATH=$PATH:$HOME/bin:$ORACLE_HOME:$ORACLE_HOME/bin LD_LIBRARY_PATH=$ORACLE_HOME/lib export PATH LD_LIBRARY_PATH export ORACLE_HOME ORACLE_BASE ORACLE_SID OGG_HOME [oracle@host01 ~]$ su - root Password: [root@host01 ~]# vi /etc/hosts 127.0.0.1 localhost.localdomain localhost (...rest of file not shown, too many possibilities...) [root@host01 ~]# tail -1 /etc/hosts 192.0.2.99 qr01-vip.example.com qr01-vip [root@host01 ~]# exit [oracle@host01 ~]$ |
今回/etc/hostsへ追加したのは、Exadata上のアプリケーションの"vip"アドレス用です。このアドレスは次のステップで定義します。 ここでは、行の入力のみを行います。
以上で、OS環境の準備が整いました。
1.2 アプリケーション仮想IP(VIP)アドレスの構成
アプリケーションの仮想IP(VIP)は、Oracle Cluster Ready Services(Oracle CRS)に含まれています。 VIPを使用すると、1つのアドレスを新しく定義して、複数のノードで共有することができます。 この目的は、処理を行うターゲット・ノードに関係なく、ソースから1つのターゲット・アドレスを参照できるようにすることです。 これは、Oracle Real Application Clusters(Oracle RAC)のSingle Client Access Name(SCAN)アドレス機能とよく似ていますが、SCANはデータベースからのみ使用できるのに対し、VIPはどのようなアプリケーション(この例ではGoldenGate)からでも使用できます。
ターゲット・ノード2で、指示に合わせてrootまたはoracleを使用して、次のタスクを実行します。 VIPの作成にはrootを使用しますが、実行にはoracleを使用します。 VIPアドレスには、クラスタ用のパブリック・ネットワークとして構成されているサブネットに含まれる任意の未使用アドレスを使用します。 この例では、192.0.2.99を使用しています。これは、grepでサブネット192.0.2.0が返されたことから、このサブネットでは.99が未使用であるためです。 これは、前のステップで設定したソース上の/etc/hostsファイルと一致している必要があります。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 ogg]$ su - root Password: [root@qr01db02 ~]# cd /u01/app/11.2.0/grid/bin [root@qr01db02 bin]# ./crsctl stat res -p | grep -ie .network -ie subnet | grep -ie name -ie subnet NAME=ora.net1.network USR_ORA_SUBNET=192.0.2.0 [root@qr01db02 bin]# ./appvipcfg create -network=1 -ip=192.0.2.99 -vipname=gg_vip_trg -user=root Production Copyright 2007, 2008, Oracle.All rights reserved 2013-02-27 14:06:52: Creating Resource Type 2013-02-27 14:06:52: Executing /u01/app/11.2.0/grid/bin/crsctl add type app.appvip_net1.type -basetype ora.cluster_vip_net1.type -file /u01/app/11.2.0/grid/crs/template/appvip.type 2013-02-27 14:06:52: Executing cmd: /u01/app/11.2.0/grid/bin/crsctl add type app.appvip_net1.type -basetype ora.cluster_vip_net1.type -file /u01/app/11.2.0/grid/crs/template/appvip.type 2013-02-27 14:06:55: Create the Resource 2013-02-27 14:06:55: Executing /u01/app/11.2.0/grid/bin/crsctl add resource gg_v ip_trg -type app.appvip_net1.type -attr "USR_ORA_VIP=192.0.2.99,START_DEPENDEN CIES=hard(ora.net1.network) pullup(ora.net1.network),STOP_DEPENDENCIES=hard(or a.net1.network),ACL='owner:root:rwx,pgrp:root:r-x,other::r--,user:root:r-x',HO STING_MEMBERS=qr01db02.example.com,APPSVIP_FAILBACK=" 2013-02-27 14:06:55: Executing cmd: /u01/app/11.2.0/grid/bin/crsctl add resource gg_vip_trg -type app.appvip_net1.type -attr "USR_ORA_VIP=192.0.2.99,START_DEPE NDENCIES=hard(ora.net1.network) pullup(ora.net1.network),STOP_DEPENDENCIES=har d(ora.net1.network),ACL='owner:root:rwx,pgrp:root:r-x,other::r--,user:root:r-x ',HOSTING_MEMBERS=qr01db02.example.com,APPSVIP_FAILBACK=" [root@qr01db02 bin]# ./crsctl setperm resource gg_vip_trg -u user:oracle:r-x [root@qr01db02 bin]# exit [oracle@qr01db02 ogg]$ cd /u01/app/11.2.0/grid/bin [oracle@qr01db02 bin]$ ./crsctl start resource gg_vip_trg CRS-2672: Attempting to start 'gg_vip_trg' on 'qr01db01' CRS-2676: Start of 'gg_vip_trg' on 'qr01db01' succeeded [oracle@qr01db02 bin]$ ./crsctl status resource gg_vip_trg NAME=gg_vip_trg TYPE=app.appvip_net1.type TARGET=ONLINE STATE=ONLINE on qr01db01 [oracle@qr01db02 bin]$ |
処理が成功したかどうかを確認するには、STATE=ONLINEを探します。 VIPが1つのIPアドレス(のみ)に関連付けられています。 アプリケーションVIPの場合、1度(任意のクラスタ・ノードで)定義すると、デフォルトで、どのクラスタ・ノードでも実行できるようになります。
以上で、アプリケーションのVIPアドレスの構成は完了です。
1.3 接続のテスト
pingおよびtnspingを使用して、両方のホストから互いにアクセスできることを確認します。
アプリケーションVIPアドレスを介して、ソースからターゲットにアクセスできることを確認します。
| Host01 - Linux(ソース) |
[oracle@host01 ogg]$ ping qr01-vip
PING qr01-vip.example.com (192.0.2.99) 56(84) bytes of data.
64 bytes from qr01-vip.example.com (192.0.2.99): icmp_seq=1 ttl=64 time=0.145 ms
64 bytes from qr01-vip.example.com (192.0.2.99): icmp_seq=2 ttl=64 time=0.143 ms
64 bytes from qr01-vip.example.com (192.0.2.99): icmp_seq=3 ttl=64 time=0.107 ms
64 bytes from qr01-vip.example.com (192.0.2.99): icmp_seq=4 ttl=64 time=0.109 ms
^C
--- qr01-vip.example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.107/0.126/0.145/0.018 ms
[oracle@host01 ogg]$
|
pingが数回成功したら、[Ctrl]キーを押しながら[C]を押します。
tnspingを使用して、ターゲット・ノード2からデータベースにアクセスできることを確認します。 tnsnames.oraに定義されたこれらのエイリアスは、後からsqlplusで使用します。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 ~]$ 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. DBM = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = qr01-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dbm.example.com) ) ) [oracle@qr01db02 ~]$ tnsping dbm TNS Ping Utility for Linux: Version 11.2.0.2.0 - Production on 06-MAR-2013 13:45 Copyright (c) 1997, 2010, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = qr01-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dbm.example.com))) OK (0 msec) [oracle@qr01db02 ~]$ tnsping dbm1 TNS Ping Utility for Linux: Version 11.2.0.2.0 - Production on 06-MAR-2013 13:45 Copyright (c) 1997, 2010, Oracle. All rights reserved. Used parameter files: TNS-03505: Failed to resolve name [oracle@qr01db02 ~]$ |
tnspingの結果が"failed"と表示されていることから、tnspingを使用してdbm1などの個別インスタンスにアクセスできないことが分かります。しかし、sqlplus user/pswd@dbmを使用してクラスタ化されたデータベースにアクセスすることはできます。 どのインスタンスにアクセスしているかを確認するには、sqlplus> show parameter instance_nameを使用します。 ORACLE_SID=dbm1またはその他の個別のインスタンス名を設定し、エクスポートすると、特定のインスタンスにアクセスできます。
同じtnsnameを使用して、ターゲット・ノード1から同じデータベースにアクセスできることを確認します。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db01 ~]$ tnsping dbm
TNS Ping Utility for Linux: Version 11.2.0.2.0 - Production on 06-MAR-2013 13:45
Copyright (c) 1997, 2010, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =
qr01-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME =
dbm.example.com)))
OK (0 msec)
[oracle@qr01db01 ~]$
|
qr01-scanは両方のRACインスタンス(両方のノード)を指している点に注意します。
以上で、データベースとIP接続のテストは完了です。
1.4 GoldenGate向けのデータベースの準備
ここでの作業は、Exadata、RAC、または単一ノードのいずれを使用した場合もほとんど同じです。
ソースのhost01で、OGG管理者oggadm1を作成します。
| Host01 - Linux(ソース) |
[oracle@host01 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Wed Feb 27 10:08:24 2013 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> set sqlprompt 'host01_SQL> ' host01_SQL> SELECT log_mode, force_logging, supplemental_log_data_min FROM v$database; LOG_MODE FOR SUPPLEME ------------ --- -------- ARCHIVELOG YES YES host01_SQL> CREATE USER oggadm1 IDENTIFIED BY pswd1a; User created. host01_SQL> GRANT dba TO oggadm1; Grant succeeded. host01_SQL> EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('OGGADM1','capture',TRUE); PL/SQL procedure successfully completed. host01_SQL> |
SELECTを実行してARCHIVELOG YES YESが返された場合、データベースを変更する必要はありません。 SELECTの結果がNOARCHIVELOG NO NOである場合は、変更方法について次のステップを参照し、ソース・データベース上で処理を実行します。
デフォルトでは、データベースはNOARCHIVELOGおよびforce_logging=NOに設定されています。 GoldenGateを使用するには、ARCHIVELOGおよびforce_logging=YESを設定する必要があります。 この変更を実施するには、データベース(両ノード)を停止する必要があります。 はじめにターゲット・ノード2を停止します。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Wed Feb 27 09:59:04 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL> set sqlprompt 'qr01db_SQL> ' qr01db_SQL> SELECT log_mode, force_logging, supplemental_log_data_min FROM v$database; LOG_MODE FOR SUPPLEME ------------ --- -------- NOARCHIVELOG NO NO qr01db_SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. qr01db_SQL> |
set sqlpromptの使用は必須ではありませんが、どの画面がどの機能に接続されているかを把握するために役立ちます。
ターゲット・ノード1を停止します。 必要に応じて、データベースおよびシステムを変更します。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db01 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Wed Feb 27 09:56:12 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL> set sqlprompt 'qr01db_SQL> ' qr01db_SQL> SELECT log_mode, force_logging, supplemental_log_data_min FROM v$database; LOG_MODE FOR SUPPLEME ------------ --- -------- NOARCHIVELOG NO NO qr01db_SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. qr01db_SQL> startup mount ORACLE instance started. Total System Global Area 939495424 bytes Fixed Size 2232088 bytes Variable Size 637534440 bytes Database Buffers 293601280 bytes Redo Buffers 6127616 bytes Database mounted. qr01db_SQL> ALTER DATABASE ARCHIVELOG; ALTER DATABASE ARCHIVELOG * ERROR at line 1: ORA-01126: database must be mounted in this instance and not open in any instance qr01db_SQL> ALTER DATABASE ARCHIVELOG; Database altered. qr01db_SQL> ALTER DATABASE OPEN; Database altered. qr01db_SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Database altered. qr01db_SQL> ALTER DATABASE FORCE LOGGING; Database altered. qr01db_SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. qr01db_SQL> SELECT log_mode, force_logging, supplemental_log_data_min FROM v$database; LOG_MODE FOR SUPPLEME ------------ --- -------- ARCHIVELOG YES YES qr01db_SQL> COMMIT; Commit complete. qr01db_SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. qr01db_SQL> |
画面中央にあるERROR ORA-01126に注目してください。 もう一方のノードを先に停止していない場合、このエラーが表示されます。 当分は、ターゲット・ノード1を停止したままにしておきます。
ターゲット・ノード2に対して同様の手順を実行します。
| Exadata - ノード2(ターゲット) |
ORACLE instance shut down. SQL> set sqlprompt 'qr01db_SQL> ' qr01db_SQL> startup mount ORACLE instance started. Total System Global Area 939495424 bytes Fixed Size 2232088 bytes Variable Size 641728744 bytes Database Buffers 289406976 bytes Redo Buffers 6127616 bytes Database mounted. qr01db_SQL> ALTER DATABASE ARCHIVELOG; Database altered. qr01db_SQL> ALTER DATABASE OPEN; Database altered. qr01db_SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Database altered. qr01db_SQL> ALTER DATABASE FORCE LOGGING; ALTER DATABASE FORCE LOGGING * ERROR at line 1: ORA-12920: database is already in force logging mode qr01db_SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. qr01db_SQL> SELECT log_mode, force_logging, supplemental_log_data_min FROM v$database; LOG_MODE FOR SUPPLEME ------------ --- -------- ARCHIVELOG YES YES qr01db_SQL> |
どの処理がインスタンスに適用され(インスタンスは2つ)、どの処理がデータベースに適用されるのか(データベースは1つのみ)に注目します。 たとえば、各インスタンスにALTER DATABASE ADD SUPPLEMENTAL LOG DATAを設定する必要がありますが、単一データベースにはすでに、FORCE LOGGINGが前のインスタンスから設定されています。
処理が成功すると、SELECTの結果としてARCHIVELOG YES YESが返されます。
データベースの変更が完了したため、起動を行います。 ノード2はすでに実行中であるため、ノード1でデータベースを起動します。 Exadata向けのOGG管理ユーザー/スキーマを作成します(このユーザーにはノードdbm1またはdbm2のいずれからもアクセスできます)。
| Exadata - ノード1(ターゲット) |
ORACLE instance shut down. qr01db_SQL> startup ORACLE instance started. Total System Global Area 939495424 bytes Fixed Size 2232088 bytes Variable Size 637534440 bytes Database Buffers 293601280 bytes Redo Buffers 6127616 bytes Database mounted. Database opened. qr01db_SQL> sho parameter name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_file_name_convert string db_name string dbm db_unique_name string dbm global_names boolean FALSE instance_name string dbm1 lock_name_space string log_file_name_convert string processor_group_name string service_names string dbm.example.com qr01db_SQL> CREATE USER oggadm2 IDENTIFIED BY pswd2a; User created. qr01db_SQL> GRANT dba TO oggadm2; Grant succeeded. qr01db_SQL> EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('OGGADM2','capture',TRUE); PL/SQL procedure successfully completed. qr01db_SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options [oracle@qr01db01 ~]$ |
OGG管理者へDBA権限を付与することは、おそらく行きすぎですが、この例では便利です。 本番環境で付与する権限はもっと少ないでしょう。
ここまでで、両方のノードで個別に実施する必要のある作業は完了しました。 ここからは、ノード1のみを使用して、すべてのsqlplus操作を実行します。
以上で、Oracle GoldenGate向けのデータベースの準備は完了です。
1.5 DBFS向けのデータベースの準備
2つのDBFSを格納するため、2つの表領域(大きいものと小さいもの)を作成します。 将来的に、これら2つの表領域のキャッシング特性は異なります。
ターゲット・ノード1またはターゲット・ノード2のいずれで処理を実行するかに関係なく、すべての処理は同じ共有ストレージ領域に適用されます。 dbfs_ogg_bigに指定するサイズは、おそらく、本番環境よりずっと大きいものになります。 すべての証跡ファイルを格納できるだけのサイズが必要です。 dbfs_ogg_smallに指定するサイズはそれほど変わらないでしょう。 小さいDBFSに格納されるのは、非常に小さいチェックポイント・ファイルのみです。
| Exadata - ノード2(ターゲット) |
qr01db_SQL> CREATE bigfile TABLESPACE dbfs_ogg_big datafile '+DBFS_DG' SIZE 100M autoextend ON NEXT 10M MAXSIZE 200M LOGGING EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO; Tablespace created. qr01db_SQL> CREATE bigfile TABLESPACE dbfs_ogg_small datafile '+DBFS_DG' SIZE 10M autoextend ON NEXT 1M MAXSIZE 20M LOGGING EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO; Tablespace created. qr01db_SQL> SELECT tablespace_name, logging, bigfile FROM dba_tablespaces WHERE tablespace_name like 'DBFS%'; TABLESPACE_NAME LOGGING BIG --------------------------- --------- --- DBFS_OGG_BIG LOGGING YES DBFS_OGG_SMALL LOGGING YES qr01db_SQL> SELECT table_name, segment_name, cache, logging FROM dba_lobs WHERE tablespace_name like 'DBFS%'; no rows selected qr01db_SQL> CREATE USER dbfs_user IDENTIFIED BY dbfs_pswd DEFAULT TABLESPACE dbfs_ogg_big QUOTA UNLIMITED ON dbfs_ogg_big QUOTA UNLIMITED ON dbfs_ogg_small; User created. qr01db_SQL> GRANT create session, create table, create view, create procedure, dbfs_role TO dbfs_user; Grant succeeded. qr01db_SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options [oracle@qr01db02 ~]$ |
2番目のSELECT文から、LOBがまだ存在していないことが分かります。 次のステップでこれを変更します。
ここまでで、DBFS向けのデータベースの準備は完了しました。 DBFSについて、詳しくはラージ・オブジェクト(LOB)ドキュメントを参照してください。
以上で、環境の準備は完了です。
2. データベース・ファイル・システム(DBFS)の準備
- DBFSを格納するためのLOB表の作成
- OSのマウント・ポイントおよびディレクトリ構造の作成
- DBFSを使用するOSクライアントの起動
目的
ここでの目的は次のとおりです。
2.1 DBFSを格納するためのLOB表の作成
スクリプトの実行には、クライアントの起動時(ステップ2.3.1~2.3.2)に指定するユーザーと同じユーザー(ここではdbfs_user)を使用することが重要です。 SQL @dbfsスクリプトを実行する際、(ここで示す例に改行が含まれる場合でも)パラメータに余分な改行が含まれていないことを確認します。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 ~]$ cd $ORACLE_HOME/rdbms/admin [oracle@qr01db02 admin]$ sqlplus dbfs_user/dbfs_pswd SQL*Plus: Release 11.2.0.2.0 Production on Wed Feb 27 10:37:45 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options qr01db_SQL> @dbfs_create_filesystem_advanced.sql dbfs_ogg_big dbfs_big nocompress nodeduplicate noencrypt non-partition qr01db_SQL> Rem qr01db_SQL> Rem $Header: rdbms/admin/dbfs_create_filesystem_advanced.sql /main/4 2010/04/14 13:21:30 weizhang Exp $ qr01db_SQL> Rem qr01db_SQL> Rem dbfs_create_filesystem.sql qr01db_SQL> Rem qr01db_SQL> Rem Copyright (c) 2009, 2010, Oracle and/or its affiliates. qr01db_SQL> Rem All rights reserved. qr01db_SQL> Rem qr01db_SQL> Rem NAME qr01db_SQL> Rem dbfs_create_filesystem_advanced.sql - DBFS create filesystem qr01db_SQL> Rem qr01db_SQL> Rem DESCRIPTION qr01db_SQL> Rem DBFS create filesystem script qr01db_SQL> Rem Usage: sqlplus @dbfs_create_filesystem_advanced.sql qr01db_SQL> Rem <tablespace_name> <filesystem_name> qr01db_SQL> Rem <compress-high | compress-medium | nocompress> qr01db_SQL> Rem <deduplicate | nodeduplicate> <encrypt | noencrypt> qr01db_SQL> Rem <non-partition | partition | partition-by-itemname | qr01db_SQL> Rem partition-by-guid, partition-by-path> qr01db_SQL> Rem qr01db_SQL> Rem NOTES qr01db_SQL> Rem qr01db_SQL> Rem MODIFIED (MM/DD/YY) qr01db_SQL> Rem weizhang 03/11/10 - bug 9220947: tidy up qr01db_SQL> Rem weizhang 06/12/09 - Package name change qr01db_SQL> Rem weizhang 04/06/09 - Created qr01db_SQL> Rem qr01db_SQL> qr01db_SQL> SET ECHO OFF No errors. -------- CREATE STORE: begin dbms_dbfs_sfs.createFilesystem(store_name => 'FS_DBFS_BIG', tbl_name => 'T_DBFS_BIG', tbl_tbs => 'dbfs_ogg_big', lob_tbs => 'dbfs_ogg_big', do_partition => false, partition_key => 1, do_compress => false, compression => '', do_dedup => false, do_encrypt => false); end; -------- REGISTER STORE: begin dbms_dbfs_content.registerStore(store_name=> 'FS_DBFS_BIG', provider_name => 'sample1', provider_package => 'dbms_dbfs_sfs'); end; -------- MOUNT STORE: begin dbms_dbfs_content.mountStore(store_name=>'FS_DBFS_BIG', store_mount=>'dbfs_big'); end; -------- CHMOD STORE: declare m integer; begin m := dbms_fuse.fs_chmod('/dbfs_big', 16895); end; No errors. qr01db_SQL> @dbfs_create_filesystem_advanced.sql dbfs_ogg_small dbfs_sm nocompress nodeduplicate noencrypt non-partition No errors. -------- CREATE STORE: begin dbms_dbfs_sfs.createFilesystem(store_name => 'FS_DBFS_SM', tbl_name => 'T_DBFS_SM', tbl_tbs => 'dbfs_ogg_small', lob_tbs => 'dbfs_ogg_small', do_partition => false, partition_key => 1, do_compress => false, compression => '', do_dedup => false, do_encrypt => false); end; -------- REGISTER STORE: begin dbms_dbfs_content.registerStore(store_name=> 'FS_DBFS_SM', provider_name => 'sample1', provider_package => 'dbms_dbfs_sfs'); end; -------- MOUNT STORE: begin dbms_dbfs_content.mountStore(store_name=>'FS_DBFS_SM', store_mount=>'dbfs_sm'); end; -------- CHMOD STORE: declare m integer; begin m := dbms_fuse.fs_chmod('/dbfs_sm', 16895); end; No errors. qr01db_SQL> conn / as sysdba Connected. qr01db_SQL> SELECT tablespace_name, file_name FROM dba_data_files WHERE tablespace_name LIKE 'DBFS%'; TABLESPACE_NAME FILE_NAME --------------- -------------------------------------------------- DBFS_OGG_BIG +DBFS_DG/dbm/datafile/dbfs_ogg_big.256.808464609 DBFS_OGG_SMALL +DBFS_DG/dbm/datafile/dbfs_ogg_small.257.808464635 qr01db_SQL> SELECT table_name, segment_name, cache, logging FROM dba_lobs WHERE tablespace_name like 'DBFS%'; TABLE_NAME SEGMENT_NAME CACHE LOGGING ----------------------- --------------------------- --------- ------- T_DBFS_BIG LOB_SFS$_FST_1 NO YES T_DBFS_SM LOB_SFS$_FST_11 NO YES qr01db_SQL> ALTER TABLE dbfs_user.T_DBFS_SM MODIFY LOB (FILEDATA) (CACHE LOGGING); qr01db_SQL> SELECT table_name, segment_name, cache, logging FROM dba_lobs WHERE tablespace_name like 'DBFS%'; TABLE_NAME SEGMENT_NAME CACHE LOGGING ----------------------- --------------------------- --------- ------- T_DBFS_BIG LOB_SFS$_FST_1 NO YES T_DBFS_SM LOB_SFS$_FST_11 YES YES qr01db_SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options [oracle@qr01db02 admin]$ |
ALTER TABLEによって、小さいDBFSがキャッシングを使用するように変更されます。 これは、ごく小さいチェックポイント表に対しては便利です。 大きいDBFSにデフォルトで設定されているno cachingは、証跡ファイルで使用される順次の読取りおよび書込みに適しています。
以上で、DBFS用LOB表の作成は完了です。
2.2 マウント・ポイントおよびディレクトリ構造の作成
DBFSは共有ストレージ・セル上にあります。
どのディレクトリに配置することもできますが、規則として/mntの下に配置する必要があります。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 ~]$ su - root Password: [root@qr01db02 ~]# cd /mnt [root@qr01db02 mnt]# mkdir DBFS [root@qr01db02 mnt]# ll total 4 drwxr-xr-x 2 root root 4096 Feb 27 10:34 DBFS [root@qr01db02 mnt]# chown oracle:oinstall DBFS/ [root@qr01db02 mnt]# ll total 4 drwxr-xr-x 2 oracle oinstall 4096 Feb 27 10:34 DBFS [root@qr01db02 mnt]# exit [oracle@qr01db02 ~]$ |
作成時にはrootを使用しますが、その後で所有者をoracleに戻します。
DBFS自体は共有ストレージ上にありますが、マウント・ポイントは両方のノードに定義する必要があります。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db01 ~]$ su - root Password: [root@qr01db01 ~]# cd /mnt [root@qr01db01 mnt]# mkdir DBFS [root@qr01db01 mnt]# ll total 4 drwxr-xr-x 2 root root 4096 Feb 27 10:34 DBFS [root@qr01db01 mnt]# chown oracle:oinstall DBFS/ [root@qr01db01 mnt]# ll total 4 drwxr-xr-x 2 oracle oinstall 4096 Feb 27 10:34 DBFS [root@qr01db01 mnt]# exit [oracle@qr01db01 ~]$ |
これは、すべてのExadataノードで一致させる必要があります。
以上で、マウント・ポイントおよびディレクトリ構造の作成は完了です。
2.3 DBFSを使用するOSクライアントの起動
ここでは、概念実証の一部としてDBFSクライアントを手動で起動しますが、通常、本番ではクライアントを自動起動リソースとして定義します。
dbfs_userは、ステップ2.1.1でスクリプトを定義したユーザーと同じユーザーです。 Exadataのターゲット・ノード2でDBFSクライアントを起動します。 nohupコマンドは論理的に1行であるため、入力中に[Enter]キーを押さないでください。 ただし、"appending output to nohup.out"という応答メッセージが表示された後は、[Enter]キーを押してOSプロンプトに制御を戻す必要があります。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 ~]$ cd ~ [oracle@qr01db02 ~]$ echo dbfs_pswd > passwd.txt [oracle@qr01db02 ~]$ nohup $ORACLE_HOME/bin/dbfs_client dbfs_user@dbm -o allow_other,direct_io /mnt/DBFS < ~/passwd.txt & [1] 5670 [oracle@qr01db02 ~]$ nohup: appending output to `nohup.out' [oracle@qr01db02 ~]$ ll /mnt/DBFS/ total 0 drwxrwxrwx 3 root root 0 Feb 27 10:39 dbfs_big drwxrwxrwx 3 root root 0 Feb 27 10:40 dbfs_sm [oracle@qr01db02 ~]$ df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda2 8022104 2639960 4968072 35% / /dev/xvda1 101086 13048 82819 14% /boot tmpfs 1146880 748004 398876 66% /dev/shm /dev/xvdb1 20635700 12517612 7069852 64% /u01 dbfs-dbfs_user@dbm:/ 222640 304 222336 1% /mnt/DBFS [oracle@qr01db02 ~]$ |
コマンドラインの末尾にアンパサンド("&")を付けると、dbfs_clientがバックグラウンドで実行されます。 バックグラウンド・ジョブは、jobs(ジョブのリスト表示)、fg(フォアグラウンド)、bg(バックグラウンド)を使用して操作できます。
両方のノードでクライアントを起動します。 順序(ノード1から、またはノード2から)は重要ではありません。 Exadataのターゲット・ノード1でDBFSクライアントを起動します。 ここでも、nohupコマンドの入力中に改行を入れないように注意してください。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db01 ~]$ cd ~ [oracle@qr01db01 ~]$ echo dbfs_pswd > passwd.txt [oracle@qr01db01 ~]$ nohup $ORACLE_HOME/bin/dbfs_client dbfs_user@dbm -o allow_other,direct_io /mnt/DBFS < ~/passwd.txt & [1] 6358 [oracle@qr01db01 ~]$ nohup: appending output to `nohup.out' [oracle@qr01db01 ~]$ ll /mnt/DBFS/ total 0 drwxrwxrwx 3 root root 0 Feb 27 10:39 dbfs_big drwxrwxrwx 4 root root 0 Feb 27 11:19 dbfs_sm [oracle@qr01db01 ~]$ df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda2 8022104 2660752 4947280 35% / /dev/xvda1 101086 13048 82819 14% /boot tmpfs 1146880 797380 349500 70% /dev/shm /dev/xvdb1 20635700 12054256 7533208 62% /u01 dbfs-dbfs_user@dbm:/ 222640 304 222336 1% /mnt/DBFS [oracle@qr01db01 ~]$ |
df -kは必須ではありません。DBFSディレクトリのサイズをチェックするためだけに使用されています。
ここまでで、DBFSを使用するクライアントの起動は完了しました。
以上で、DBFSの準備は完了です。
3. Oracle GoldenGate(OGG)ソフトウェアのインストール
- ソフトウェアの解凍
- シンボリック・リンクの作成
- ベース・パラメータ・ファイルの作成
目的
ここでの目的は次のとおりです。
このOBEでは、ソースがLinux 64ビットを使用したインテル・アーキテクチャ・マシンであることを前提としていますが、別のマシンである場合も、以下の手順とほとんど同じです。
3.1 Oracle GoldenGateソフトウェアの解凍
3つのホストすべてに、ソフトウェアをインストールします。 ここでは、V34339-01.zip(またはそれ以降のバージョン)がOracle Software Delivery Cloudからダウンロードされ、各ホストのホーム・ディレクトリ(~)に保存されているとします。
Exadataのターゲット・ノード2にOGGソフトウェアをインストールします。 1つ目のコマンドの最初のドットに注意してください。 このドットを指定することで、.bash_profileで$OGG_HOMEやその他の環境変数が使用されます。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 admin]$ . ~/.bash_profile [oracle@qr01db02 admin]$ echo $OGG_HOME /u01/app/oracle/ogg [oracle@qr01db02 ~]$ cd $ORACLE_BASE [oracle@qr01db02 oracle]$ mkdir ogg [oracle@qr01db02 oracle]$ cd $OGG_HOME [oracle@qr01db02 ogg]$ pwd /u01/app/oracle/ogg [oracle@qr01db02 ogg]$ unzip ~/V34339-01.zip Archive: /home/oracle/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 [oracle@qr01db02 ogg]$ tar -xvpf fbo_ggs_Linux_x64_ora11g_64bit.tar UserExitExamples/ UserExitExamples/ExitDemo_more_recs/ UserExitExamples/ExitDemo_more_recs/Makefile_more_recs.HPUX UserExitExamples/ExitDemo_more_recs/Makefile_more_recs.SOLARIS UserExitExamples/ExitDemo_more_recs/Makefile_more_recs.LINUX UserExitExamples/ExitDemo_more_recs/Makefile_more_recs.AIX UserExitExamples/ExitDemo_more_recs/exitdemo_more_recs.vcproj UserExitExamples/ExitDemo_more_recs/exitdemo_more_recs.c UserExitExamples/ExitDemo_more_recs/readme.txt UserExitExamples/ExitDemo_passthru/ (...many lines omitted for clarity...) reverse role_setup.sql sequence.sql server sqlldr.tpl tcperrs ucharset.h ulg.sql usrdecs.h zlib.txt [oracle@qr01db02 ogg]$ |
最新ニュースを確認するには、README.txtを参照してください。
同じ処理を、もう一方のExadataターゲット・ノード1に対して実行します。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db01 ~]$ . ~/.bash_profile [oracle@qr01db01 ~]$ echo $OGG_HOME /u01/app/oracle/ogg [oracle@qr01db01 ~]$ cd $ORACLE_BASE [oracle@qr01db01 oracle]$ mkdir ogg [oracle@qr01db01 oracle]$ cd $OGG_HOME [oracle@qr01db01 ogg]$ pwd /u01/app/oracle/ogg [oracle@qr01db01 ogg]$ unzip ~/V34339-01.zip Archive: /home/oracle/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 [oracle@qr01db01 ogg]$ tar -xvpf fbo_ggs_Linux_x64_ora11g_64bit.tar UserExitExamples/ UserExitExamples/ExitDemo_more_recs/ (...many lines omitted for clarity...) ulg.sql usrdecs.h zlib.txt [oracle@qr01db02 ogg]$ |
同じ結果が表示されます。
ソースのhost01に対しても同じ手順を実行します。
| Host01 - Linux(ソース) |
(screens not shown, they are the same as above)
|
以上で、Oracle GoldenGateソフトウェアの解凍は完了です。
3.2 DBFSへのシンボリック・リンクの作成
シンボリック・リンクは、共通ファイルや証跡ファイルに対してDBFSを使用するようにOGGに指示するものです。 DBFSサブディレクトリの作成は一度だけ実行しますが、両方のExadataノードでリンクを作成する必要があります。 これらのリンクは、$OGG_HOMEのサブディレクトリと同じ名前と構造を持ちます。
Exadataのターゲット・ノード2で、DBFSのサブディレクトリとシンボリック・リンクを作成します。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 ogg]$ cp ./dirprm/jagent.prm jagent.backup [oracle@qr01db02 ogg]$ rm -rf dirprm [oracle@qr01db02 ogg]$ mkdir /mnt/DBFS/dbfs_sm/ogg [oracle@qr01db02 ogg]$ mkdir /mnt/DBFS/dbfs_sm/ogg/dirprm [oracle@qr01db02 ogg]$ mkdir /mnt/DBFS/dbfs_sm/ogg/dirpcs [oracle@qr01db02 ogg]$ mkdir /mnt/DBFS/dbfs_sm/ogg/dirchk [oracle@qr01db02 ogg]$ mkdir /mnt/DBFS/dbfs_big/ogg [oracle@qr01db02 ogg]$ mkdir /mnt/DBFS/dbfs_big/ogg/dirdat [oracle@qr01db02 ogg]$ ln -s /mnt/DBFS/dbfs_sm/ogg/dirprm/ $OGG_HOME/dirprm [oracle@qr01db02 ogg]$ ln -s /mnt/DBFS/dbfs_sm/ogg/dirpcs/ $OGG_HOME/dirpcs [oracle@qr01db02 ogg]$ ln -s /mnt/DBFS/dbfs_sm/ogg/dirchk/ $OGG_HOME/dirchk [oracle@qr01db02 ogg]$ |
解凍処理の一部としてdirprm/jagent.prmが作成されていますが、残りのディレクトリを作成した後でこれをDBFSに移動します。
Exadataのターゲット・ノード2でGGSCIを使用して、$OGG_HOMEにサブディレクトリを作成します。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 ogg]$ ./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 (qr01db02.example.com) 1> Create SubDirs Creating subdirectories under current directory /u01/app/oracle/ogg Parameter files /u01/app/oracle/ogg/dirprm: already exists Report files /u01/app/oracle/ogg/dirrpt: created Checkpoint files /u01/app/oracle/ogg/dirchk: already exists Process status files /u01/app/oracle/ogg/dirpcs: already exists SQL script files /u01/app/oracle/ogg/dirsql: created Database definitions files /u01/app/oracle/ogg/dirdef: created Extract data files /u01/app/oracle/ogg/dirdat: created Temporary files /u01/app/oracle/ogg/dirtmp: created Stdout files /u01/app/oracle/ogg/dirout: created GGSCI (qr01db02.example.com) 2> Exit [oracle@qr01db02 ogg]$ mv jagent.backup /mnt/DBFS/dbfs_sm/ogg/dirprm/jagent.prm [oracle@qr01db02 ogg]$ cd dirprm/ [oracle@qr01db02 dirprm]$ ll total 1 -rwxr-x--- 1 oracle oinstall 53 Feb 27 11:11 jagent.prm [oracle@qr01db02 dirprm]$ pwd /u01/app/oracle/ogg/dirprm [oracle@qr01db02 dirprm]$ cd $OGG_HOME |
3つのサブディレクトリが、DBFSを指すシンボリック・リンクとして存在します。 jagent.prmファイルが、これらのリンクのうちのogg/dirprmに戻されました。
同じ処理を、ターゲット・ノード1で実行します。 今回は、実行するステップがわずかに少なくなります。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db01 ogg]$ cp ./dirprm/jagent.prm jagent.backup [oracle@qr01db01 ogg]$ rm -rf dirprm [oracle@qr01db01 ogg]$ ll /mnt/DBFS/dbfs_sm/ogg/ total 0 drwxr-xr-x 2 oracle oinstall 0 Feb 27 11:19 dirchk drwxr-xr-x 2 oracle oinstall 0 Feb 27 11:19 dirpcs drwxr-xr-x 2 oracle oinstall 0 Feb 27 11:23 dirprm [oracle@qr01db01 ogg]$ [oracle@qr01db01 ogg]$ ln -s /mnt/DBFS/dbfs_sm/ogg/dirprm/ $OGG_HOME/dirprm [oracle@qr01db01 ogg]$ ln -s /mnt/DBFS/dbfs_sm/ogg/dirpcs/ $OGG_HOME/dirpcs [oracle@qr01db01 ogg]$ ln -s /mnt/DBFS/dbfs_sm/ogg/dirchk/ $OGG_HOME/dirchk [oracle@qr01db01 ogg]$ |
DBFSのogg/サブ構造がすでに存在しています。
Exadataのターゲット・ノード1でGGSCIを使用して、$OGG_HOMEに残りのサブディレクトリを作成します。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db01 ogg]$ ./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 (qr01db01.example.com) 1> Create SubDirs Creating subdirectories under current directory /u01/app/oracle/ogg Parameter files /u01/app/oracle/ogg/dirprm: already exists Report files /u01/app/oracle/ogg/dirrpt: created Checkpoint files /u01/app/oracle/ogg/dirchk: already exists Process status files /u01/app/oracle/ogg/dirpcs: already exists SQL script files /u01/app/oracle/ogg/dirsql: created Database definitions files /u01/app/oracle/ogg/dirdef: created Extract data files /u01/app/oracle/ogg/dirdat: created Temporary files /u01/app/oracle/ogg/dirtmp: created Stdout files /u01/app/oracle/ogg/dirout: created GGSCI (qr01db01.example.com) 2> Exit [oracle@qr01db01 ogg]$ mv jagent.backup /mnt/DBFS/dbfs_sm/ogg/dirprm/jagent.prm [oracle@qr01db01 ogg]$ cd dirprm/ [oracle@qr01db01 dirprm]$ ll total 1 -rwxr-x--- 1 oracle oinstall 53 Feb 27 11:37 jagent.prm [oracle@qr01db01 dirprm]$ pwd /u01/app/oracle/ogg/dirprm [oracle@qr01db01 dirprm]$ cd $OGG_HOME [oracle@qr01db01 ogg]$ |
GGSCIのキーワードでは大文字と小文字は区別されませんが、読みやすくするため、慣例により、 大文字と小文字が混合する形式で表示されます(大文字で表示されるSQLキーワードや小文字で表示されるLinuxキーワードとも区別できます)。
以上で、DBFSへのシンボリック・リンクの作成は完了です。
3.3 ベース・パラメータ・ファイルの作成
パラメータ・ファイルはASCIIファイルであり、好みのエディタで作成できますが、 デフォルトのエディタはviです。 列の最初にダッシュを2つ入力すると、コメントになります。 ほとんどのパラメータ・ファイルは、DBFS上の共有フォルダ/dirprmに格納されます。
正式な起動スクリプトはありませんが、これが使用できると非常に便利です。特にDBLoginコマンドに対しては有効です。 ソースのhost01を設定したら、obeyスクリプトstartup.obyを実行します。
| Host01 - Linux(ソース) |
[oracle@host01 ogg]$ vi startup.oby -- Created by Joe Admin 10/11/2012 on host01 DBLogin UserID oggadm1@orcl, Password pswd1a Start Mgr Info Mgr Info CheckpointTable -- Set Editor gedit [oracle@host01 ogg]$ vi GLOBALS -- Created by Joe Admin 10/11/2012 on host01 CheckpointTable oggadm1.oggchkpt [oracle@host01 ogg]$ ./ggsci GGSCI (host01) 1> Create SubDirs (response not shown, no harm in doing it twice...) GGSCI (host01) 2> Edit Param mgr -- Created by Joe Admin 10/11/2012 on host01 Port 15001 PurgeOldExtracts ./dirdat/*, UseCheckpoints GGSCI (host01) 3> Obey startup.oby GGSCI (host01) 4> -- Created by Joe Admin 10/11/2012 on host01 GGSCI (host01) 5> DBLogin UserID oggadm1@orcl, 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> |
host01ではGUIがサポートされているため、geditなどのより使いやすいエディタをデフォルトとして設定することができます。 実行するには、startup.obyの末尾にもう1行追加します(実際はコメントを表す2つのダッシュを削除します)。
Set Editor gedit
ExadataではGUIがサポートされていないため、この方法は使用できません。
Manager、ポート、消去、チェックポイントについて、詳しくはOracleからOracleへのOGGの基本OBEを参照してください。 チェックポイント・ファイルがまだ存在していなくても、問題ありません。 GLOBALSは大文字を使用し、拡張子.prmは付いておらず、$OGG_HOMEに格納された唯一の"パラメータ"ファイルです(その他のファイルには小文字が使用されており、$OGG_HOME/dirprmに配置されています)。
同じ基本的構成ファイルをExadataターゲット・ノード1で作成します。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db01 ogg]$ vi startup.oby -- Created by Joe Admin 10/11/2012 on Exadata qr01db01 DBLogin UserID oggadm2@dbm, Password pswd2a Start Mgr Info Mgr Info CheckpointTable [oracle@qr01db01 ogg]$ vi GLOBALS -- Created by Joe Admin 10/11/2012 on qr01db01 CheckpointTable oggadm2.oggchkpt [oracle@qr01db01 ogg]$ ./ggsci GGSCI (qr01db01) 1> Edit param mgr -- Created by Joe Admin 10/11/2012 on Exadata qr01db Port 15002 Autostart ER * AutoRestart ER * PurgeOldExtracts ./dirdat/*, UseCheckpoints GGSCI (qr01db01) 3> Obey startup.oby GGSCI (qr01db01) 4> -- Created by Joe Admin 10/11/2012 on Exadata qr01db GGSCI (qr01db01) 5> DBLogin UserID oggadm2@dbm, Password pswd2a Successfully logged into database. GGSCI (qr01db01) 6> Start Mgr Manager started. GGSCI (qr01db01) 7> Info Mgr Manager is running (IP port qr01db01.example.com.15002). GGSCI (qr01db01) 8> Info CheckpointTable No checkpoint table specified, using GLOBALS specification (oggadm2.oggchkpt)... Checkpoint table oggadm2.oggchkpt does not exist. GGSCI (qr01db01) 9> Exit [oracle@qr01db01 ogg]$ |
Autostart/AutoRestartは必須ではありませんが、MAA向けに推奨されています。
Exadataのターゲット・ノード2で基本的なパラメータ・ファイルを構成します。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 ogg]$ vi startup.oby -- Created by Joe Admin 10/11/2012 on Exadata qr01db02 DBLogin UserID oggadm2@dbm, Password pswd2a Start Mgr Info Mgr Info CheckpointTable [oracle@qr01db02 ogg]$ vi GLOBALS -- Created by Joe Admin 10/11/2012 on qr01db02 CheckpointTable oggadm2.oggchkpt [oracle@qr01db02 ogg]$ |
パラメータ・ファイルmgr.prmが共有DBFS上にすでに存在する点に注意します。 これは、ノード1とノード2が同じポート(15002)を共有しており、一度に実行できるのは1つのノードのみであることを意味しています。 これは、2つのインスタンスを実行できるデータベースとは異なります。 ターゲット上で同時に実行できるのは、1つのOGGインスタンスのみになります。 この点は重要であるため、もう一度繰り返します。 ターゲット上で同時に実行できるのは、1つのOGGインスタンスのみになります。
ここまでで、ベース・パラメータ・ファイルの作成は完了しました。
以上で、OGGソフトウェアのインストールは完了です。
4. スキーマの準備
- トランザクション・データの追跡の追加
- TranData列の確認
目的
ここでの目的は次のとおりです。
ここでは、サンプルのhr(人事管理)スキーマが、ソースおよびターゲットのOracle 11gデータベースにインストールされているものとします。
4.1 トランザクション・データの追跡の追加
表を追加するか、表の構造を変更するたびに、この処理を実行する必要があります。
トランザクション・データの追跡は、単一の表、ワイルドカードを使用した表グループ、およびスキーマ全体に対して追加できます。 この例では、ソースのhost01上で単一表に対して、add TranDataを実行します。
| Host01 - Linux(ソース) |
GGSCI (host01) > Add TranData hr.regions Logging of supplemental redo data enabled for table HR.REGIONS. GGSCI (host01) > Info TranData hr.* Logging of supplemental redo log data is disabled for table HR.COUNTRIES. Logging of supplemental redo log data is disabled for table HR.DEPARTMENTS. Logging of supplemental redo log data is disabled for table HR.EMPLOYEES. Logging of supplemental redo log data is disabled for table HR.JOBS. Logging of supplemental redo log data is disabled for table HR.JOB_HISTORY. Logging of supplemental redo log data is disabled for table HR.LOCATIONS. Logging of supplemental redo log data is enabled for table HR.REGIONS. Columns supplementally logged for table HR.REGIONS: REGION_ID. GGSCI (host01) > |
デフォルトでは、主キー列(ここではREGION_ID)のみが追跡される点に注意します。
このステップは参照用です。実行しないでください。
もう1つの方法として、次のいずれかのコマンドを実行して場合も同じ効果が得られます。
Add TranData hr.reg*
Add SchemaTranData hr
このステップは参照用です。実行しないでください。
ソース・スキーマとターゲット・スキーマが一致していない場合、defgen(表示されていません)を実行して、列マッピングの定義ファイルを作成する必要があります。 defgenについて、詳しくは『Oracle GoldenGate Windows and UNIX 管理者ガイド』の第13章:レプリケートされたデータとメタデータとの関連付けを参照してください。
ここまでで、TransDataの追加は完了しました。
以上で、トランザクション・データの追加は完了です。
5. データ抽出の構成
- プライマリExtractの構成
- セカンダリExtract(Data Pump)の構成
- データベースへのプロセスの登録
目的
ここでの目的は次のとおりです。
"データ抽出"は、"データ取得"とも呼ばれます。
5.1 プライマリExtractの構成
ソースのhost01からhr.regionsを抽出し、ローカルData Pumpに送信するように設定します。
| Host01 - Linux(ソース) |
GGSCI (host01) > Edit Param eregab -- Primary Extract from host01(a) to QR01(b) -- Created by Joe Admin on 10/11/2012 -- SETENV(ORACLE_SID = "orcl") Extract eregab ExtTrail ./dirdat/aa UserID oggadm1@orcl, Password pswd1a -- TranLogOptions ExcludeUser oggadm1 Table hr.regions; GGSCI (host01) > |
外部の証跡ファイルaaは、ソースのローカル・ファイルです。 将来的な双方向レプリケーションでは、おそらく、オプションのTranLogOptions ExcludeUserが使用されます。
以上で、プライマリExtractの構成は完了です。 ここでは示していませんが、フィルタリングや列マッピングなど、他にも多数のオプションがあります。
5.2 セカンダリExtract(Data Pump)の構成
Data Pumpを使用する目的は、ネットワークが停止した場合に、より高い可用性を提供することです。 Data Pumpの使用は必須ではありませんが、MAA向けに推奨されています。 ソースのhost01でData Pumpを設定します。
| Host01 - Linux(ソース) |
GGSCI (host01) > Edit Param pregab -- Data pump (secondary Extract) from host01(a) to qr01(b) -- Created by Joe Admin on 10/11/2012 Extract pregab RmtHost qr01-vip, MgrPort 15002, Compress RmtTrail /mnt/DBFS/dbfs_big/ogg/dirdat/ab Passthru Table hr.regions; GGSCI (host01) > |
リモート証跡ファイル(RmtTrail)は/etc/hostsに定義された仮想IPアドレスを使用して、リモート・ターゲットのDBFSロケーションに書き込まれています。 Table文(Extractで指定)とMap文(Replicatで指定)のみで、末尾にセミコロンが付加されるため、これらの文は複数行にわたって入力することができます。 その他の文は論理的に1行にする必要があります(入力した文が画面で折り返されても問題ありませんが、[Enter]は挿入しないでください)。
以上で、Data Pumpの構成は完了です。
5.3 データベースへのExtractプロセスの登録
登録を実行するには、ローカル・データベース(DBLogin)にログインする必要があります。 ステップ3.3.1で作成したstartup.obyを使用すると、自動的にログインが行われます。 ソースのhost01にプライマリExtractを登録します。
| Host01 - Linux(ソース) |
GGSCI (host01) > Add Extract eregab, TranLog, Begin Now EXTRACT added. GGSCI (host01) > Add ExtTrail ./dirdat/aa, Extract eregab, Megabytes 2 EXTTRAIL added. GGSCI (host01) > |
デフォルトのMegabytesのサイズは100MBです。 必要に応じて、トラフィックや遅延に合わせてこれを変更します。
ソースのhost01にセカンダリExtract(Data Pump)を登録します。
| Host01 - Linux(ソース) |
GGSCI (host01) > Add Extract pregab, ExtTrailSource ./dirdat/aa EXTRACT added. GGSCI (host01) > Add RmtTrail /mnt/DBFS/dbfs_big/ogg/dirdat/ab, Extract pregab, Megabytes 2 RMTTRAIL added. GGSCI (host01) > |
登録するこれらの値はすべて、パラメータ・ファイルの値に一致している必要があります。 Oracle GoldenGate DirectorなどのGUIツールを使用すると、すべての適合する値をウィザードから集めることができます。
ここまでで、データベースへのExtractプロセスの登録は完了しました。
以上で、データ抽出の構成は完了です。
6. データ配信(レプリケーション)の構成
- Replicatの構成
- チェックポイント表の作成
- データベースへのReplicatプロセスの登録
- Replicatプロセスの開始
目的
ここでの目的は次のとおりです。
"データ配信"プロセスは"Replicat"(通常は、頭文字が大文字)とも呼ばれています。 "Replicat"の末尾の"e"は意図的に省略されています(長い話です)。
6.1 Replicatの構成
いずれかのターゲット・ノードでReplicatを構成します。 ここでは、ノード2に対してGGSCIコマンドを使用します(ノード1に対してはSQLコマンドを使用)。
| Exadata - ノード2(ターゲット) |
[oracle@qr01db02 dirdat]$ cd $OGG_HOME [oracle@qr01db02 ogg]$ ./ggsci GGSCI (qr01db02) 1> Obey startup.oby GGSCI (qr01db02) 2> -- Created by Joe Admin 10/11/2012 on Exadata qr01db GGSCI (qr01db02) 3> DBLogin UserID oggadm2@dbm, Password pswd2a Successfully logged into database. GGSCI (qr01db02) 4> Start Mgr Manager started. GGSCI (qr01db02) 5> Info Mgr Manager is DOWN! GGSCI (qr01db02) 6> Info CheckpointTable No checkpoint table specified, using GLOBALS specification (oggadm2.oggchkpt)... Checkpoint table oggadm2.oggchkpt does not exist. GGSCI (qr01db02) 7> Edit Param rregab -- Delivery from host01(a) to qr01db(b) -- Created by Joe Admin on 10/11/2012 Replicat rregab UserID oggadm2@dbm, password pswd2a AssumeTargetDefs -- SourceDefs dirdef/dsalesab.def DiscardFile dirrpt/rsalesab.dsc, Append -- Map ogguser1.tcustmer, Target ogguser2.tcustmer; Map hr.*, Target hr.*; GGSCI (qr01db02) 8> Add Replicat rregab, ExtTrail /mnt/DBFS/dbfs_big/ogg/dirdat/ab REPLICAT added. GGSCI (qr01db02) > |
startup.obyスクリプトから、Managerが停止しているという誤った通知が行われる場合があります。 Managerはミリ秒レベルで停止していたかもしれませんが、数秒後には実行中になっています。 このスクリプトは一時停止しないため、起動したコマンドよりも速く実行されます。 このタイミング上の異常を修正するには、Start mgrや複雑なDBLoginコールなどの時間のかかるコマンドの後にsh sleep 5文を実行して、GGSCIの処理が追いつくまで待機します。 GGSCIの自動化について、詳しくはこちらのOBEを参照してください。
AssumeTargetDefsおよびSourceDefs(相互排他的にいずれかを選択)は、前述したdefgenユーティリティに関係があります。 ここでは示していませんが、フィルタリングや列マッピングなど、他にも多数のオプションがあります。
以上で、Replicatの設定は完了です。
6.2. チェックポイント表の作成
チェックポイント表は必須ではありませんが、作成が強く推奨されています。 チェックポイント表はReplicatによってのみ使用されます(ソース・システムにチェックポイント表を配置しても問題もありません)。 Replicatごとに個別のチェックポイント表を作成することも、すべてのReplicatに対してグローバルなチェックポイント表を作成することもできます。
GLOBALSパラメータで定義されたとおりに、汎用のチェックポイント表をターゲット・データベース上に作成します。
| Exadata - ノード2(ターゲット) |
GGSCI (qr01db02) > Add CheckpointTable
No checkpoint table specified, using GLOBALS specification (oggadm2.oggchkpt)...
Successfully created checkpoint table oggadm2.oggchkpt.
GGSCI (qr01db02) >
|
startup.obyスクリプトを実行するたびに、チェックポイント表のステータスが通知されます。
以上で、チェックポイント表の作成は完了です。
6.3 Replicatプロセスの開始
Extractを開始せずに、Replicatを開始しても問題ありません。 ReplicatはExtractが開始されるまで待機してから開始されます。
ターゲットでReplicatプロセスを開始します。
| Exadata - ノード2(ターゲット) |
GGSCI (qr01db02) > Start * Sending START request to MANAGER ... REPLICAT RREGAB starting GGSCI (qr01db02) > Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT RUNNING RREGAB 00:00:00 00:00:02 GGSCI (qr01db02) > |
GGSCIを終了してから再起動した場合は、プロセスにもAutostartを使用できます。 または、次の様なコマンドを使用して、一部のプロセスを開始できます。
Start ER * (初期タスクの代わりにすべてのExtractとReplicatを開始)
Start RR* (ワイルドカードが指定されたすべてのプロセスを開始)
Start Replicat rregab (1つのプロセスのみを明示的に開始)
Managerによってプロセスがいったん開始または停止された後は、トラフィックの処理にはManagerは必要ありません。 ここまでで、データベースに対するReplicatの開始は完了しました。
以上で、データ・レプリケーションの構成は完了です。
7. すべてのデータ同期のテスト
- すべてのOGGプロセスの開始
- データ行の挿入
- データ行の選択
目的
ここでの目的は次のとおりです。
Replicatの前にExtractを開始することもできましたが、この場合、証跡ファイルがいっぱいになるおそれがあります。 Replicatはステップ6.3で開始されました。
7.1 すべてのOGGプロセスの開始
Autostartを使用すると、このステップが簡単に実行できます。
ソースのhost01ですべてのプロセスを開始します。
| Host01 - Linux(ソース) |
[oracle@host01 ~]$ cd $OGG_HOME [oracle@host01 ogg]$ pwd /u01/app/oracle/ogg [oracle@host01 ogg]$ ./ggsci GGSCI (host01) 1> Obey startup.oby GGSCI (host01) 2> -- Created by Joe Admin 10/11/2012 on host01 GGSCI (host01) 3> DBLogin UserID oggadm1@orcl, Password pswd1a Successfully logged into database. GGSCI (host01) 4> Start Mgr MGR is already running. GGSCI (host01) 5> Info Mgr Manager is running (IP port host01.example.com.15001). GGSCI (host01) 6> Info CheckpointTable No checkpoint table specified, using GLOBALS specification (oggadm1.oggchkpt)... Checkpoint table oggadm1.oggchkpt does not exist. GGSCI (host01) 7> Add CheckpointTable No checkpoint table specified, using GLOBALS specification (oggadm1.oggchkpt)... Successfully created checkpoint table oggadm1.oggchkpt. GGSCI (host01) 8> Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT STOPPED EREGAB 00:00:00 02:06:59 EXTRACT STOPPED PREGAB 00:00:00 02:06:38 GGSCI (host01) 9> Start * Sending START request to MANAGER ... EXTRACT EREGAB starting Sending START request to MANAGER ... EXTRACT PREGAB starting GGSCI (host01) 10> Info All Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EREGAB 00:00:00 00:00:04 EXTRACT RUNNING PREGAB 00:00:00 00:00:08 GGSCI (host01) 11> Exit |
ソース上のチェックポイント表は必須ではなく、使用されてもいませんが、存在していても問題はありません。また、将来的に双方向のレプリケーションを実装した場合は必要になる場合もあります。
以上で、すべてのOGGプロセスの開始は完了です。
7.2 ソースでのデータ行の挿入
変更前の表を表示します。 host01でhr.regionsにデータを2行挿入します。 トランザクションをコミットします。
| Host01 - Linux(ソース) |
[oracle@host01 ogg]$ sqlplus hr/hr@orcl SQL> set sqlprompt 'host01_SQL> ' host01_SQL> SELECT * from regions; REGION_ID REGION_NAME ---------- ------------------------- 1 Europe 2 Americas 3 Asia 4 Middle East and Africa host01_SQL> INSERT INTO regions values (10,'Polar'); 1 row created. host01_SQL> INSERT INTO regions values (11,'Oceans'); 1 row created. host01_SQL> COMMIT; Commit complete. host01_SQL> SELECT * FROM regions; REGION_ID REGION_NAME ---------- ------------------------- 10 Polar 11 Oceans 1 Europe 2 Americas 3 Asia 4 Middle East and Africa 6 rows selected. host01_SQL> |
コミットされるまでは、何もレプリケートされません。
以上で、ソースでのデータ行の挿入は完了です。
7.3 ターゲットでのデータ行の選択
ターゲット・データベースを参照するには、いずれのノードを使用することもできます。 新しい表データを表示します。
| Exadata - ノード1(ターゲット) |
[oracle@qr01db01 ~]$ sqlplus hr/hr SQL*Plus: Release 11.2.0.2.0 Production on Wed Feb 27 17:48:34 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options qr01db_SQL> SELECT * FROM regions; REGION_ID REGION_NAME ---------- ------------------------- 10 Polar 11 Oceans 1 Europe 2 Americas 3 Asia 4 Middle East and Africa 6 rows selected. qr01db_SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options [oracle@qr01db01 DBFS]$ ll /mnt/DBFS/dbfs_big/ogg/dirdat/ total 2 -rw-rw-rw- 1 oracle oinstall 1374 Feb 27 17:47 ab000000 [oracle@qr01db01 DBFS]$ ll /mnt/DBFS/dbfs_sm/ogg/dirchk/ total 5 -rw-rw-r-- 1 oracle oinstall 4096 Feb 27 17:50 RREGAB.cpr -rw-rw-r-- 1 oracle oinstall 54 Feb 27 17:50 RREGAB.cps [oracle@qr01db01 DBFS]$ |
DBFS上の証跡ファイルとチェックポイント・ファイルに注意してください。 logdumpなどのツールを使用すると、証跡ファイルを確認できます。
サンプル・スキーマをインストールしているが、使用したことがない場合、おそらくスキーマはロックされています。 sqlplusで次のようなDBAコマンドを使用すると、hrスキーマのロックを解除できます。
ここまでで、ターゲットでのデータ行の選択は完了しました。
以上で、すべてのデータ同期のテストは完了です。
まとめ
- ExadataでOracle GoldenGateをサポートするためのDBFSの構成
- ExadataでマルチノードのIPアクセスをサポートするためのCluster Ready Servicesの構成
- 既存表を同期するためのExtractプロセスとReplicatプロセスの構成および開始
- サンプル・データを生成してレプリケーションの有効性をテストする
- Oracle GoldenGateの製品ドキュメント・バージョン11.2.1(E35209-01)およびその他の旧バージョン。 特に、非常に短い項"5.8 Oracle GoldenGateと Oracle Exadataを組み合せた使用"。
- LinuxでのOracle GoldenGate: Oracle 11g Release 2からOracle 11g Release 2への双方向レプリケーションのOBE
- ホワイト・ペーパー『Oracle Exadata Database MachineおよびOracle Exadata Storage Serverの技術概要』
(2012年6月)著者: Ronald Weiss - ホワイト・ペーパー(Maximum Availability Architecture)『Oracle Exadata Database MachineでのOracle GoldenGateの構成』
(2013年1月)著者: Stephan Haisley、共著者: MAAチーム - Oracle Universityのコース
- Oracle GoldenGateの詳細については、Oracle Learning Libraryの他のOBEを参照してください。
- その他のOGGのOBEについては、こちらを参照してください。
- ホームページ:http://www.oracle.com/goldengate
- ホームページ:http://www.oracle.com/exadata
- ホームページ:http://www.oracle.com/goto/maa(Maximum Availability Architecture)
- カリキュラム開発責任者: Steve Friedberg
- 共著者: Peter Fusek、Stephan Haisley、Chris Lawless、Doug Reid、Matt Taylor
Oracle GoldenGateを使用すると、このサンプル演習で行ったよりもさらに多くのことを実行できます。
このチュートリアルで学習した内容は、次のとおりです。
参考資料
このチュートリアルのトピックに関連するヘルプ・トピック
著者
このOracle by Exampleをナビゲートする際、以下の機能を使用できます。
- ヘッダー・ボタンの非表示:
- ヘッダー内のボタンを非表示にするには、タイトルをクリックします。 ボタンを再表示するには、もう一度タイトルをクリックします。
- トピック一覧ボタン:
- すべてのトピックの一覧です。 いずれかのトピックをクリックすると、その項に移動します。
- すべてのトピックを開く/閉じる:
- すべての項に対する詳細を表示または非表示にします。 デフォルトでは、すべてのトピックが閉じられています。
- すべてのイメージを表示/非表示:
- すべてのスクリーンショットを表示または非表示にします。 デフォルトでは、すべてのイメージが表示されています。
- 印刷:
- コンテンツを印刷します。 現在表示または非表示にされているコンテンツが印刷されます。
このチュートリアルの特定の項に移動するには、一覧からトピックを選択してください。