Oracle GoldenGate 11gの自動化
概要
- Obeyファイルを使用してGGSCIの内部からすべてを制御する
- シェル・スクリプト(
bashなど)を使用してGGSCIの外部からすべてを制御する - Oracle GoldenGate 11g
- 2つのOGGインスタンス(ソースおよびターゲット)を実行できるハードウェア (2つのホストでも1つのホスト上の2つのディレクトリでも可)
- データベース(Oracle Database 11gなど)
- 2つのDBインスタンス(ソースおよびターゲット)を実行できるハードウェア (2つのホストでも1つのホスト上の2つのインスタンス/スキーマでも可)
- Oracle GoldenGate 11g(以降、「OGG」)にアクセスできるか、OGGがインストールされている。
- OGGドキュメントにアクセスできるか、OGGドキュメントがインストールされている(一般に、ドキュメントのWebページや11.2.1といった特定のバージョンからオンラインで参照できます)。
目的
このチュートリアルでは、Oracle GoldenGateのタスクを自動化するために使用するツールとスクリプトについて例を挙げて説明します。 基本的に次の2つの方法で同じことを実行できます。
所要時間
約1時間(ただし、実際に何かを操作するわけではなく、多数の例を参照するだけです)。
はじめに
以下に示すスクリプト自体は、そのまま使用することはできません。これらのスクリプトは、どのようなことが実行可能かというイメージを提供し、それらを実行するために使用する構文を示すためのものです。 これらのスクリプトは修正することで使用できるようになりますが、必要な修正は簡単なものです。 Obeyスクリプトはプラットフォームに依存しませんが、データベース・ログイン(DBLogin)パラメータはプラットフォームによって異なる場合があります(OracleとDB2とMySQLで異なるなど)。 シェル・スクリプトはbashに基づいていますが、非常に単純であるため、基本的なリダイレクションにより他のOSシェルでも使用できます。 どのスクリプトもテストやブランチングを行いません(GGSCIコマンドはリターン・コードを生成しません)。
シナリオ
「my」で始まるイタリック体の部分はすべて、実際の情報と置き換える必要があります。 たとえば、Oracle DBサンプル・スキーマを使用する場合、「myuserid」を「SCOTT」などに置き換え、「mypassword」を「TIGER」などに置き換え、その他も同様に処理します。
以下の例では、2つのOracle 11gデータベースがあり、どちらもLinuxホストで動作していると仮定しています。 また、ソース・ホストは「mysrchost」、ターゲット・ホストは「mytrghost」、ソース・データベース・スキーマは「mysrcdb」、ターゲット・データベース・スキーマは「mytrgdb」とそれぞれ命名されおり、ソースSIDは「sorcl」、ターゲットSIDは「torcl」であるものとします。
ハードウェアとソフトウェアの要件
ハードウェアとソフトウェアの要件リストは、以下のとおりです。
前提条件
このチュートリアルを始める前に、以下のことを確認してください。
トピック1: ユーザー(キーボード)の自動化
複雑なタスクや繰り返しの多いタスクを実行するには手の込んだスクリプトが役立ちますが、システムの日常的なメンテナンスでは、むしろ、1回限りのコマンドを手作業で入力する必要があります。 コマンドのキーボード入力を容易にするために、以下のツールの使用を検討してください。
1.1: コマンドラインの自動化:rlwrap
ほとんどのオペレーティング・システムのプロンプトには、最近入力したいくつかのコマンドを表示および編集するための履歴メカニズムが組み込まれていますが、オラクルのユーティリティには、この機能のないものがあります。 たとえば、上下の矢印キーを押すことで、最近入力したいくつかのコマンドを調べ、再入力し、編集することができれば便利です。
標準免責事項: オラクルは、rlwrapなどの外部ユーティリティの適合性および可用性に関して、明示的、暗示的に関わらず、いかなる主張も行いません。 オラクルは、オラクル製ではない他のどのユーティリティへの言及に関しても報酬を受けません。
http://utopia.knoware.nl/~hlub/uck/rlwrap/で提供されているrlwrapパッケージをインストールします。
| README.txt |
rlwrap v 0.35 January 8 2010
* WHAT IT IS:
rlwrap is a 'readline wrapper', a small utility that uses the GNU
readline library to allow the editing of keyboard input for any
command. I couldn't find anything like it when I needed it, so I wrote
this one back in 1999. By now, there are (and, in hindsight, even
then there were) a number of good readline wrappers around, like rlfe,
distributed as part of the GNU readline library, and cle
(http://kaolin.unice.fr/Cle/). rlwrap should be especially useful
when you need user-defined completion (by way of completion word
lists) and persistent history, or if you want to program 'special
effects' using the filter mechanism. rlwrap compiles and runs on a
fairly wide range of Unix-like systems.
|
このユーティリティは、GGSCIと同様にSQL*Plus(sqlplus)にも使用できます。
起動する前にユーティリティをラップするエイリアスを定義します。
| ~/.bash_profile |
...(other lines not shown)...
alias sqlplus='rlwrap sqlplus'
alias ggsci='rlwrap ./ggsci'
|
sqlplusは、正しい$PATH変数を必要とし、そのためにどこからでも起動できる一方で、ggsciは、エイリアスに./が含まれている必要があり、そのために適切なOGGホーム・ディレクトリから起動しなければならないことに注意してください。
rlwrapは、必ずしも必要ではありませんが、すぐにggsciおよびsqlplusコマンドを「普段」使用する上でなくてはならない追加のツールとなります。
1.2: コマンドラインの確認: (感嘆符)
一部のGGSCIコマンドは、確認を求める「Are you sure? (y/n)」に応じないと処理されません。 キーボード入力では、この確認を省略できると便利な場合があります。 バックグラウンド・スクリプトでは、この確認は絶対に必要です。 一般に、コマンドの最後に感嘆符を追加すると、「本当に実行するので、確認は不要です」という意味になります。
Managerの停止および起動の例:
| GGSCI Session |
GGSCI (myhost) > Stop mgr Manager process is required by other GGS processes. Are you sure you want to stop it (y/n)? y Sending STOP request to MANAGER ... Request processed. Manager stopped. GGSCI (myhost) > Start mgr Manager started. GGSCI (myhost) > Stop mgr ! Sending STOP request to MANAGER ... Request processed. Manager stopped. GGSCI (myhost) > |
複数プロセスの同時削除の例:
| GGSCI Session |
GGSCI (myhost) > Delete ER west* Are you sure you want to delete all groups? y Deleted EXTRACT WEST_EAB. Deleted EXTRACT WEST_PAB. Deleted REPLICAT WEST_RBA. GGSCI (myhost) > Delete ER east* ! Deleted EXTRACT EAST_EBA. Deleted EXTRACT EAST_PBA. Deleted REPLICAT EAST_RAB. GGSCI (myhost) > |
1.3: 環境変数
GGSCIでは環境変数($ORACLE_SIDなど)を利用できますが、このために何かを実行する必要はありません。 ただし、いくつかの変数を定義することにより、スクリプトの自動入力を実現し、キーストロークを減らす(結果的にタイプミスが減る)ために役立つ場合があります。 どのような種類のキーボード・ショートカットにも適用できます。
OGGのインストール・ディレクトリを定義します。 これは、.bash_profileからエクスポートできますが、個別のsetenv.shで定義することもできます(どちらでも可)。 特に注目する必要があるのは、2つのOGG変数です。
| setenv.sh |
ORACLE_HOME=/u01/app/oracle/product
JAVA_HOME=/usr/java/jdk1.7.0_09
export ORACLE_HOME JAVA_HOME
OGG_SRC=$ORACLE_HOME/ogg/source
OGG_TRG=$ORACLE_HOME/ogg/target
export OGG_SRC OGG_TRG
PATH=$JAVA_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/11.2.0/dbhome_1/lib:$JAVA_HOME/jre/lib/amd
64:$OGG_TRG:$JAVA_HOME/jre/lib/amd64/server
export PATH LD_LIBRARY_PATH
|
「64:」で始まる字下げされた行は、前の行から続いています。つまり、LD_LIBRARY_PATHから「amd64/server」までが1つの行です。
キー入力を減らすための環境変数の使用例:
| OS Session |
[OS prompt]$ ls $OGG_SRC/dirprm
west_rba.prm west_eab.prm west_pab.prm
[OS prompt]$
|
1.4: すべてのユーザーに有益なObeyスクリプト:startup、shutdown
GGSCIを再起動するたびに入力することが非常に有益ないくつかのコマンドがあります。 不適切なコンテキストで間違って「コピー」するためのショートカット・キーである[Ctrl]+[C]キーを押すことにより、GGSCIは非常に容易に誤って停止(キル)されます。 次のコマンドは非常に便利であるため、まだ設定していない場合には設定することをお勧めします。すでに設定している場合に再入力しても問題ありません。
| startup.oby |
--------------------------------------------------------------------------
-- DISCLAIMER: --
-- This script is provided for educational purposes only. It is NOT --
-- supported by Oracle World Wide Technical Support. --
-- The script has been tested and appears to work as intended. --
-- You should always run new scripts on a test instance initially. --
-- Copyright (c) Oracle Corp. 2012. All Rights Reserved. --
--------------------------------------------------------------------------
-- Useful as first thing when (re)starting ./ggsci, esp after shutdown_ogg.sh
DBLogin UserID myogguser, Password mypassword
Start mgr
Set Editor gedit
Add CheckpointTable
Info CheckpointTable
Info All
|
GGSCIプロンプトで次のように起動します。
GGSCI > Obey startup.oby
テストが完了し、OGGをクリーンな環境にリストアする必要があるときには、多くの場合、次のテストのためにプロセスとディレクトリをクリーンな状態のままにできるshutdownスクリプト(startupの逆)が役立ちます。
| shutdown_ogg.sh |
#--------------------------------------------------------------------------#
#-- DISCLAIMER: --#
#-- This script is provided for educational purposes only. It is NOT --#
#-- supported by Oracle World Wide Technical Support. --#
#-- The script has been tested and appears to work as intended. --#
#-- You should always run new scripts on a test instance initially. --#
#-- Copyright (c) Oracle Corp. 2012. All Rights Reserved. --#
#--------------------------------------------------------------------------#
# Use to reset OGG environment to a stopped state. Run as OS user=oracle.
#kill west (source) OGG
export ORACLE_SID=sorcl
cd $OGG_SRC
./ggsci <<EOF
Start Manager
DBLogin UserID myogguser, Password mypassword
Delete Extract eini
Stop ER *
Delete ER * !
Delete CheckpointTable !
Stop Manager !
Exit
EOF
rm ./dirdat/*
rm ./dirrpt/*
#kill east (target) OGG
export ORACLE_SID=torcl
cd $OGG_TRG
./ggsci <<EOF
Start Manager
DBLogin UserID myogguser, Password mypassword
Delete Replicat rini
Stop ER *
Delete ER * !
Delete CheckpointTable !
Stop Manager !
Exit
EOF
rm ./dirdat/*
rm ./dirrpt/*
|
OSプロンプトで次のように起動します。
[username path]$ ./shutdown_ogg.sh
einiとriniが明示的に削除されていることに注意してください。これは、初期ロード・タスクがDelete ER *ワイルドカードに含まれないためです。
トピック2: GGSCI(Obey)の自動化
GGSCIを実行している場合は、複数のGGSCIコマンドを組み合わせて実行する作業やソース・ディレクトリとターゲット・ディレクトリの内外で*.prmファイルを移動させる作業が継続的に必要になります。 Obeyファイルには任意の拡張子を使用でき、慣例的に「.oby」などが使用されます。 GGSCI内からタスクを制御するには、以下の手順を実行します。
2.1: Obey内からのシェル・コマンドの呼出し
多くの場合、絶対パスを使用する必要があります。
| mysample211.oby |
-- Always have a comment at the top.
-- Created by Joe Admin on 12/12/12
sh rm /u01/ogg_src/dirrpt/*
sh rm /u01/ogg_trg/dirrpt/*
sh cp /home/myuserid/targets/*.prm /u01/ogg_src/dirprm
sh cp /home/myuserid/targets/*.def /u01/ogg_trg/dirdef
DBLogin UserID myuserid, Password mypassword
List Tables *
|
いくつかの環境変数($ORACLE_HOMEなど)を使用でき、相対パス(../..など)を使用することもできますが、GGSCI内の$HOMEに関してチルダ(~)ショートカットを使用することはできません。
残念なことに、コマンドの完了に関する非同期の問題が存在するために、スクリプトの全体にわたってsh sleep 5ステートメントを点在させなければならない場合があります。 たとえば、次の例でsleepがなかったとします。DBLoginは完了に3秒かかりますが、スクリプトでは、その行によってログインが開始された直後に次のステートメント(List Tables)が開始されるため、ログインが完了していないとエラーが発生します。
| mysample212.oby |
-- Created by Joe Admin on 12/12/12
-- Connect to DB and list schema
DBLogin UserID myuserid, Password mypassword
sh sleep 5
List Tables *
-- Bounce the Manager
Stop mgr !
sh sleep 3
Start mgr
sh sleep 3
Info mgr
|
ファイルが保存されているディレクトリからファイルを削除することを試みる場合は、問題なく実行され、メッセージは表示されません。 すでに空になっているディレクトリからファイルを削除することを試みると、次のような誤解を招きかねないメッセージが表示されます。
rm: cannot remove `dirrpt/*': No such file or directory
これは、通常のOSプロンプトから実行した場合と同じ動作です。
2.2: Obey内からのSQL*Plusコマンドの呼出し
資格証明およびSIDをインラインで使用してsqlplusを起動します。スクリプトにアットマークを追加してください。 拡張子の「.sql」はオプションであり、なくてもかまいませんが、自動入力のために役立ちます。
| mysample221.oby |
-- Created by Joe Admin and Dee Beeay on 12/12/12
sh sqlplus myuserid@sorcl/mypassword @mysourcescript.sql
sh sqlplus myuserid@sorcl/mypassword @./dirsql/mysourcescript.sql
sh sqlplus myuserid/mypassword @mytargetscript.sql
sh sqlplus myuserid@torcl/mypassword @/mypath1/mypath2/mytargetscript.sql
|
SQLスクリプトの最後に「exit」があることを確認してください。これがないと、SQLスクリプトが完了した後にsqlplus内に取り残されるため、GGSCI Obeyスクリプトがその時点でハングします。
最初の行は、SQLスクリプトがOGGホーム・ディレクトリにあることが前提となっています。 いくつかのスクリプト(demo_ora_*.sqlなど)は、その場所にデフォルトで保存されています。
2行目は、SQLスクリプトがOGGホームのdirsqlディレクトリに移されていることが前提となっています。 このディレクトリは、OGG関連のSQLスクリプトの保存に適した場所です。
3行目では、明示的なSIDが省略されています。つまり、常に@ORACLE_SIDの現在の定義を使用することが前提となっています。
4行目(最後の行)は、SQLスクリプトがどこに保存されていても実行できることを示しています。
SQL*Plusでは、コマンドのエコーを有効または無効にできます。 これにより、デバッグ用に「set echo on」を設定し、後で本番環境において使用する際には「set echo off」を設定することができるため便利です。
| SQL*Plus |
SQL> set echo on SQL> set echo off |
2.3: Obey内からのGGSCIコマンドの呼出し
GGSCIプロンプトから使用する場合と同様に使用します。
| mysample231.oby |
-- Created by Joe Admin on 12/12/12
Add Extract extwest, TranLog, Begin Now
Add ExtTrail ./dirdat/ew, Extract extwest, Megabytes 50
Add Extract pwest, ExtTrailSource ./dirdat/ew
Add RmtTrail ./dirdat/pe, Extract pwest, Megabytes 50
Shell sleep 3
Info ER *
Start ER *
Shell sleep 3
Info ER *
|
デバッグ時にエラーの発生を確認できるように、プロセス開始の前後に「Info ER *」を実行することをお勧めします。 残念なことに、「Start ER *」ではテスト可能なものが返されないため、表示されるメッセージを逐一確認する必要があります。
注意が必要なものは、折り返された長い行だけです。 テキスト・エディタを使用して、継続文字を使用せずに、長いコマンドをすべて1行で記述してください。
新しいAllowNestedコマンドは、ネストされたObeyファイルの使用を可能にします。 「ネストされたObeyファイル」とは、別のObeyファイルを含むObeyファイルのことです。 ネスト・レベルの最大数は16です。
| mysample232.oby |
-- Created by Joe Admin on 12/12/12
Obey startup.oby
Add Extract morning, TranLog, Begin Now
Add ExtTrail ./dirdat/xy, Extract morning
Start Extract morning
Start Replicat morning
sh sleep 300
Obey shutdown.oby
|
これは、頻繁に使用する共通の起動またはシャットダウン・ルーチンがある場合に特に役立ちます。
2.4: 未サポート: test!コマンド
GGSCIのtestコマンドは、サポートされておらず、文書化されていないため、どのバージョンでも通常は使用されません。 このため、本番環境での使用は推奨されませんが、テスト環境では使用される場合があります。
| GGSCI Session |
GGSCI (myhost) 1> test
Usage: TEST genericTestFileName
Note: TEST is undocumented GGSCI command and is not supported.
Purpose of TEST is to provide generic cross-platform utility of testing with Go
ldenGate software.
What does TEST do for you?
1. lets you write many files in one and then unpack them. Each file can reside
in different directory.
2. provides string substitution across many files in consistent way.
3. gives you centralized repository of substitution values in file 'ggtest'.
TEST may make many tests situations (not all) easier to replicate on different
systems.
|
Obey、SQL*Plus、およびファイル作成ツールを組み合わせて1つの大きなテキスト・バンドルにするという方法があります。
包括的なテスト・テキスト・ファイルの例(置換変数に注意してください):
| gtest242.txt |
~~readme
This is readme file
~~dirsql/mySQLFile.sql
INSERT INTO myTable VALUES (3);
~~dirprm/ext99.prm
EXTRACT ext99
USERID ~suser~~db~, PASSWORD ~spass~
RMTHOST ~host~, mgrport ~mgr~
RMTTRAIL ./dirdat/b1
TABLE ~suser~.DDL_COL;
~~dirprm/rep99.prm
REPLICAT rep99
USERID ~tuser~ PASSWORD ~tpass~
MAP ~suser~.TAB* TARGET ~tuser~.*
~~test_obey.ob
SQLPLUS ~suser~/~spass~ < ./dirsql/mySQLFile.sql
DELFILE ./dirdat/k3
DELETE REPLICAT rep99
ADD REPLICAT rep99, EXTTRAIL ./dirdat/e2, NODBCHECKPOINT
|
このコマンドの実装方法に関する詳細な説明は省略します。
トピック3: シェル(スクリプト)の自動化
実行しなければならないタスクの大半がGGSCIの外部で実行されるものの、いくつかのGGSCIコマンドが依然として含まれているという状況も考えられます。 このような状況では、全体的な動作を(特に複数のGGSCIインスタンスの起動と停止に使用できる)OSシェル・スクリプトから制御する方が容易である場合があります。
3.1: シェル・スクリプト内からのシェル・コマンドの呼出し
当然のことながら、実行する内容に応じて簡単にも複雑にもなります。 例として、任意の./profileについて説明します。
| /etc/profile |
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`id -u`
UID=`id -ru`
fi
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
(...more lines not shown for clarity...)
|
シェル・スクリプトの作成に関する1週間のコースがあります。 ここでは、これ以上は説明できません。
一般に注意しなければならないのは、二重引用符(" ")、直線の一重引用符(' ')、斜線の引用符(` `)、およびドル($ $)記号です。これらはすべて、シェル・スクリプトに対して特別な意味を持つため、SQL*PlusまたはGGSCI内で使用するときにエスケープ処理が必要になる場合があります。
3.2: シェル・スクリプト内からのSQL*Plusコマンドの呼出し
アットマーク(@)を使用することにより、複数の個別の.sqlテキスト・ファイルをsqlplusへの入力としてリダイレクトできますが、ほんの数コマンドであれば、次のようにスクリプトによってインラインで入力する方が容易である場合があります。
| mysample321.sh |
# Created by Joe Admin on 12/12/12
cd ~/labs/Section14/Practice14-1/sqlscripts
export ORACLE_SID=sorcl
sqlplus myuserid/mypassword <<EOF
CREATE TABLE mytable (mycol1 VARCHAR2(20), mycol2 NUMBER(8,2), mycol3 CHAR(5));
SELECT COUNT(*) FROM mytable;
INSERT INTO mytable VALUES ('ABC123', 100.75, 'WEST');
COMMIT;
EXIT;
EOF
echo '**Created, truncated, seeded WEST/Source tables.'
sleep 3
cd ~/labs/Section14/Practice14-2/sqlscripts
export ORACLE_SID=torcl
sqlplus myuserid/mypassword <<EOF
@database.sql
@seed_database.sql
EOF
echo '**Created, truncated, seeded EAST/Target tables.'
sleep 3
cd ~/labs/Section14/Practice14-3/sqlscripts
export ORACLE_SID=torcl
sqlplus myuserid/mypassword @database.sql
echo '**Created, truncated, seeded NORTH/Target tables.'
sleep 3
|
最初の例には、外部ファイルがありません。すべてのSQLコマンド(exitを含む)がインラインです。
2つ目の例には、2つ以上の外部@ファイルがあります。最初の外部@ファイルである@database.sqlがexitコマンドで終わっていないため、2つ目の外部@ファイルである@seed_database.sqlにexitが組み込まれている必要があります。
最後の例には、呼び出す@ファイルが1つだけあります。このため、<<EOF構成要素は不要です。
「v$database」のドル記号を「エスケープ」しなければならないことに注意してください。
| mysample322.sh |
#--------------------------------------------------------------------------#
#-- DISCLAIMER: --#
#-- This script is provided for educational purposes only. It is NOT --#
#-- supported by Oracle World Wide Technical Support. --#
#-- The script has been tested and appears to work as intended. --#
#-- You should always run new scripts on a test instance initially. --#
#-- Copyright (c) Oracle Corp. 2012. All Rights Reserved. --#
#--------------------------------------------------------------------------#
# Use this script to complete Lab 5. Run as OS user=oracle.
# WARNING! This overlays whatever you may have had in your own config files!
cd ~/labs/Section5/sqlscripts/
export ORACLE_SID=amer
sqlplus west/oracle_4U @source_database.sql
sqlplus west/oracle_4U @seed_database.sql
sqlplus / as sysdba <<EOF
GRANT dba TO gguser IDENTIFIED BY oracle_4U;
CONN gguser/oracle_4U
SHOW USER
SHOW PARAMETER NAME
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER SYSTEM SWITCH LOGFILE;
SELECT supplemental_log_data_min FROM v\$database;
exit
EOF
export ORACLE_SID=euro
sqlplus east/oracle_4U @target_database.sql
sqlplus / as sysdba <<EOF
GRANT dba TO gguser IDENTIFIED BY oracle_4U;
CONN gguser/oracle_4U
SHOW USER
SHOW PARAMETER NAME
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER SYSTEM SWITCH LOGFILE;
SELECT supplemental_log_data_min FROM v\$database;
exit
EOF
|
3.3: シェル・スクリプト内からのGGSCIコマンドの呼出し
EOFまでのファイル内からのリダイレクションに注意してください。 ORACLE_SID変数を設定することにより、@sid(myogguser@torclなど)でサインオンする必要がなくなることに注意してください。
| mysample331.sh |
# Always include a comment at the top
# Created by Joe Admin on 12/12/12
# kill west (amer) OGG
export ORACLE_SID=torcl
cd $OGG_TRG_HOME
./ggsci <<EOF
Start Manager
DBLogin UserID myogguser, Password mypswd
Delete Extract myini
Stop ER *
Delete ER * !
Delete CheckpointTable !
Stop Manager !
Exit
EOF
rm ./dirdat/*
rm ./dirrpt/*
|
シェル・スクリプト内でSQL*Plusを使用する場合と同様に、シェル・スクリプト内で別のコマンドを続けて実行する場合は、「Exit」を最後に組み込む必要があることに注意してください。
また、シェル接頭辞の「sh」を使用することにより、GGSCI部分の最後に2つのremoveコマンドを挿入できることにも注意してください。 これにより、同じことが実行されます。
ここで、すべてが統合された、オラクルのOGGコースの一つで扱われる複雑な例を示します。 これにより2つのGGSCIインスタンス(同じホストで実行される)が制御されることに注意してください。
| ~\D66519GC20_labs\labs\Section13\catchup13.sh |
#--------------------------------------------------------------------------#
#-- DISCLAIMER: --#
#-- This script is provided for educational purposes only. It is NOT --#
#-- supported by Oracle World Wide Technical Support. --#
#-- The script has been tested and appears to work as intended. --#
#-- You should always run new scripts on a test instance initially. --#
#-- Copyright (c) Oracle Corp. 2012. All Rights Reserved. --#
#--------------------------------------------------------------------------#
# Use this script to complete Lab 13. Run as OS user=oracle.
# WARNING! This overlays whatever you may have had in your own config files!
~/labs/setup/kill-all-ogg.sh
echo '**Killed all old processes.'
sleep 3
cp ~/labs/Section13/solutions/def* $GG_AMER_HOME/dirprm
cp ~/labs/Section13/solutions/def* $GG_EURO_HOME/dirprm
cp ~/labs/Section13/solutions/efu* $GG_AMER_HOME/dirprm
cp ~/labs/Section13/solutions/ENC* $GG_AMER_HOME
cp ~/labs/Section13/solutions/ENC* $GG_EURO_HOME
cp ~/labs/Section13/solutions/mac* $GG_AMER_HOME/dirmac
cp ~/labs/Section13/solutions/mac* $GG_EURO_HOME/dirmac
cp ~/labs/Section13/solutions/pfu* $GG_AMER_HOME/dirprm
cp ~/labs/Section13/solutions/rfu* $GG_EURO_HOME/dirprm
cp ~/labs/Section13/solutions/sec* $GG_AMER_HOME/dirdef
cp ~/labs/Section13/solutions/sec* $GG_EURO_HOME/dirdef
echo '**Copied solutions to running OGG folders.'
sleep 3
cd ~/labs/Section13/sqlscripts
export ORACLE_SID=amer
sqlplus west/oracle_4U @source_database.sql
echo '**Created, truncated, seeded WEST/amer tables.'
sleep 3
cd ~/labs/Section13/sqlscripts
export ORACLE_SID=euro
sqlplus east/oracle_4U @target_database.sql
echo '**Created, truncated, seeded EAST/euro tables.'
sleep 3
cd $GG_AMER_HOME
export ORACLE_SID=amer
./ggsci <<EOF
Obey /home/oracle/labs/setup/startup.oby
Shell sleep 5
Add TranData WEST.*
EOF
echo '**Created WEST checkpoint tables.'
sleep 3
cd $GG_EURO_HOME
export ORACLE_SID=euro
./ggsci <<EOF
Obey /home/oracle/labs/setup/startup.oby
Shell sleep 5
EOF
echo '**Created EAST checkpoint tables.'
sleep 3
cd $GG_AMER_HOME
export ORACLE_SID=amer
./ggsci <<EOF
Obey /home/oracle/labs/setup/startup.oby
Shell sleep 5
Add Extract efuncs, TranLog, Begin Now
Add ExtTrail ./dirdat/ex, Extract efuncs, Megabytes 1
Add ExtTrail ./dirdat/ec, Extract efuncs, Megabytes 1
Add Extract pfuncs, ExtTrailsource ./dirdat/ex
Add RmtTrail ./dirdat/px, Extract pfuncs, Megabytes 1
Add Extract pfunca, ExtTrailsource ./dirdat/ec
Add RmtTrail ./dirdat/pc, Extract pfunca, Megabytes 1
Shell sleep 5
Info ER *
Exit
EOF
echo '**WEST created, but not started.'
sleep 3
cd $GG_EURO_HOME
export ORACLE_SID=euro
./ggsci <<EOF
Obey /home/oracle/labs/setup/startup.oby
Shell sleep 5
Add Replicat rfunc, ExtTrail ./dirdat/px
Add Replicat rfunca, ExtTrail ./dirdat/pc
Shell sleep 5
Info ER *
Exit
EOF
echo '**EAST created, but not started.'
sleep 3
cd $GG_AMER_HOME
export ORACLE_SID=amer
./ggsci <<EOF
Obey /home/oracle/labs/setup/startup.oby
Shell sleep 3
Start ER *
Shell sleep 12
Info ER *
Exit
EOF
echo '**WEST started.'
sleep 3
cd $GG_EURO_HOME
export ORACLE_SID=euro
./ggsci <<EOF
Obey /home/oracle/labs/setup/startup.oby
Shell sleep 3
Start ER *
Shell sleep 12
Info ER *
Exit
EOF
echo '**EAST started.'
sleep 3
cd ~/labs/Section13/sqlscripts
export ORACLE_SID=amer
sqlplus west/oracle_4U <<EOF
@trans_generator.sql
exit
EOF
echo '**Target WEST tables should now have more data. '
echo 'Run (SELECT * FROM wshop_encrypt;) to see.'
|
ファイルのコピーとクリーンアップにおいて、システムが生成するレポート・ファイル名の「*.RPT」は常に大文字ですが、慣例的にすべてのプロセスの「*.prm」ファイル名が常に小文字になっていることに注意してください。
まとめ
- 時間を節約できる巧みな手法によるキーボードからのOGGタスクの制御
- ObeyファイルからのOGGタスクの制御
- OSスクリプトファイルからのOGGタスクの制御
- 特定のドキュメント、ビューレット、サンプル、およびOTNのOLN URL
- 特定のコース(各テーマを詳細に学習できます)
- 関連情報が記載された外部Webサイト
- Oracle GoldenGateの詳細は、Oracle Learning Libraryにある追加のOracle By Example(OBE)(特に「subject」にある一連のOBE)を参照してください。
- カリキュラム開発責任者: Steve Friedberg
- 他のSMEの著者: Pete Daly、Chris Lawless、Steve George
このチュートリアルで学習した内容は、次のとおりです。
参考資料
他にも、以下のような、利用可能な多数のOGG学習コンテンツが用意されています。
著者
To help navigate this Oracle by Example, note the following:
- Hiding Header Buttons:
- Click the Title to hide the buttons in the header. To show the buttons again, simply click the Title again.
- Topic List Button:
- A list of all the topics. Click one of the topics to navigate to that section.
- Expand/Collapse All Topics:
- To show/hide all the detail for all the sections. By default, all topics are collapsed
- Show/Hide All Images:
- To show/hide all the screenshots. By default, all images are displayed.
- Print:
- To print the content. The content currently displayed or hidden will be printed.
To navigate to a particular section in this tutorial, select the topic from the list.