Oracle ソースデータベースとオープンターゲットデータベースを同期するには、次の手順を使用します。Oracle から使用しているターゲットのタイプにコピーできるコピーユーティリティを使用する必要があります。SharePlex は、Oracle データの変更を複製し、コピーでターゲットが確立されるまで Post キューに保持します。ターゲットの準備が整ったら、SharePlex reconcile 機能を実行します。この機能により、Post はコピー後に発生した操作のみを適用し、コピー前にソースに対してコミットされた操作を破棄します。
実稼動ソースデータベースでのオーバーヘッド増加を避けるため、ミラーリングされたセカンダリ Oracle インスタンスからデータをコピーできます。この場合は、Oracle RMAN バックアップシステムを使用してセカンダリインスタンスをコピーの開始時点まで回復することも、セカンダリインスタンスへの手動バックアップを実行することもできます。手順にはこのオプションが含まれています。
重要!セカンダリインスタンスをデータコピーのソースとして使用する場合でも、SharePlex 設定ファイルは実稼動 Oracle インスタンスからオープンターゲットのターゲットに直接複製してください。セカンダリ Oracle インスタンスへの複製はありません。
先に進む前に、以下の点をお読みください。
Oracle ソースおよびサポートされるターゲット
セカンダリ Oracle インスタンスをコピーのソースとして使用する場合、そのインスタンスは実稼動ソースインスタンスのミラーである必要があります。
カスケード以外のすべて。
このドキュメントでは、選択したコピー方法の実行方法については説明しません。データベースのコピー方法に精通したユーザーがこの手順を実行してください。ターゲットデータベースをサポートし、Oracle データベースからデータをコピーできるコピー方法を使用してください。
この手順で、「ソース」は次のいずれかを表します。
この手順で「ターゲット」システムとは、オープンターゲットデータベースまたはターゲットシステムを表します。
この手順では、SharePlex コマンドは複製設定のすべての sp_cop インスタンスに適用されます。これには、集約レプリケーションでのターゲットのすべての sp_cop プロセスが含まれます。
ソースおよびターゲットシステムで、SharePlex プロセスが実行中であることを確認します。
sp_ctrl> status
ターゲットシステムで、Post プロセスを停止します。これで複製されたデータは、ターゲットデータベースがインスタンス化されて調整されるまで、post キュー内に蓄積されます。
sp_ctrl> stop post
ソースシステム上で設定をアクティベートします。
sp_ctrl> activate config filename
ソースシステムで、アクティベーションステータスを監視します。
sp_ctrl> show activate
注: sp_ctrl は、アクティベートが終了するまでこのコマンドで制御されます。
「アクティベートが完了したら」、ソースシステムのログファイルを切り替えます。
svrmgr1> alter system switch logfile;
次のうちのいずれか 1 つを実行します。
ターゲットのシーケンス番号に調整するため、新しいログファイルのログシーケンス番号を書き留めます。
セカンダリインスタンスからコピーを作成する場合は、以下の作業を行います。
RESETLOGS オプションでデータベースを開きます。
注: 次の手順では、バックアップ時点後に発生した、複製された変更を適用します。
[オプション]名前付き post キューを使用していて、キュー名が不明な場合は、qstatus コマンドを発行して名前を書き留めます。
sp_ctrl> qstatus
ターゲットシステムで、sp_ctrl を実行し、次のいずれかの reconcile コマンドを発行します。名前付き post キューを使用している場合、各キューに対してコマンドを発行します。
ログシーケンス番号に回復する場合は、前のステップで記録したログのシーケンス番号に置き換えます。
sp_ctrl> reconcile queue queuename for datasource-datadest seq sequence_number
例:reconcile queue SysA for o.prod1-r.rep1 seq 1234
SCN に回復する場合は、前のステップで記録した SCN に置き換えます。
sp_ctrl> reconcile queue queuename for datasource-datadest scn scn_number
例:reconcile queue SysA for o.prod1-r.rep1 scn 0123456789
注: sp_ctrl は、調整プロセスが終了するまでこのコマンドで制御されます。
ターゲットシステムで、Post プロセスを起動します。これで 2 つのインスタンスは同期され、SharePlex で同期が保持されるように、継続的に複製されます。
sp_ctrl> start post
この章では、エラーを検出し、複製プロセスを監視するために SharePlex に用意されているツールの概要を説明します。他のミッションクリティカルなソフトウェアと同様に、SharePlex は処理に干渉する可能性がある状況またはイベントについて定期的に監視する必要があります。データ同期化の消失につながるものについてはなおさらです。
以下の手順では、複製をすぐにシャットダウンする必要がある場合に SharePlex プロセスを強制的に終了する方法を説明します。通常の状況では、以下のトピックで説明するシャットダウン手順に従ってください。
Unix および Linux での SharePlex の実行
UNIX および Linux システムでは、ps -ef | grep sp_ コマンドを使用して、実行中の SharePlex プロセスを表示できます。
以下の子プロセスは、ソースシステム上の sp_cop によって生成されます。
以下の子プロセスは、ターゲットシステム上の sp_cop によって生成されます。
Command および Control プロセス(sp_cnc)
それぞれの子プロセスの -uidentifier は、親の sp_cop プロセスと同じです。このため、sp_cop の複数のセッションが実行されているときに、関連するプロセスを簡単に識別できます。
Unix および Linux でプロセスを終了するには
$ killPID
または
$ kill -9PID
Windows システムで、SharePlex は Windows オペレーティングシステムではなく NuTCRACKER 運用環境によって管理されます。ただし、その他の Windows プログラムの場合と同様に、SharePlex プロセスを通常の方法で表示および終了できます。
Windows システムでは、SharePlex プロセスは次の方法で表示できます。
Windows タスク マネージャでは、SharePlex は、SharePlex sp_cop プロセスを表す Sp_Copsrv.exe として表示されます。親にあたる Sp_Copsrv.exe サービスは、オペレーティングシステムが制御します。親プロセスの Sp_Copsrv.exe は、各複製プロセス(Capture、Read、Export、Import、Post、sp_ctrl など)につき、子プロセスの Sp_Copsrv.exe を 1 つずつ生成します。
デフォルトキューを介して 1 つのターゲットシステムに複製を行う標準的な一方向の設定では、Windows システム上に以下のプロセスがあります。
ソースシステム側:
ターゲットシステム側:
アクティブな複製設定がない場合は、サービスを開始したときに SharePlex プロセスは開始されず、親の Sp_Copsrv.exe のみが実行されます。
Windows タスクマネージャで親 Sp_Copsrv.exe プロセスを特定するには、使用しているメモリ量が最も大きいプロセスを探します。子 Sp_Copsrv.exe プロセスが消費するメモリは、親プロセスよりも少なくなります。
ある子 Sp_Copsrv.exe プロセスと関連付けられている複製プロセスを特定するには、その複製プロセスがいつ起動したかを示すメッセージを SharePlex Event ログで調べます。このエントリには、そのプロセスの PID と、関連付けられている Sp_copsvr.exe プロセスの PID が記載されています。
Windows システムでは、SharePlex プロセスを次の方法で終了できます。
タスクマネージャでプロセスを終了するには
KillSharePlex.bat ですべてのプロセスを終了するには
SharePlex 製品ディレクトリの bin サブディレクトリから KillSharePlex.bat を実行します。
注:このツールは、すべての SharePlex プロセスを表示せずに終了します。ユーザープロンプトや確認メッセージは表示されません。
SharePlex はエラーやその他の異常終了を、次のように報告します。
SharePlex では、操作のエラー、注意、および警告条件がイベントログに報告されます。このログは、常時の複製活動、エラー、およびイベントの段階的な記録を提供します。イベントログは、問題が発生した一連のイベントを再生するのに役立ちます。
複製イベントの例には次のものがあります。
sp_ctrl でのコマンドの実行。ユーザーが発行するコマンドは、発行されるすべての SharePlex コマンドで記録されます。
注: 以下の例のように、ユーザーが発行するコマンドはイベントログに Notice として記載されます。
Notice 08-07-02 16:13:24.641582 23696 1 User command: rjones activate config 1route (from mycomp14)
ユーザーのログインまたはログアウト
イベントログの各エントリには以下の情報が含まれます。
イベントログを表示するには
sp_ctrl で show log コマンドを使用するか、SharePlex 変数データディレクトリの log サブディレクトリ内の event_log という名前のファイルを開きます。
SharePlex には、このログを無人で監視するためのスクリプトが用意されています。「sp_eventmon によるイベントの監視」を参照してください。
Status Database には、sp_ctrl ユーザーインターフェイスでエラーメッセージや警告を生成しなかったイベントを含めて、イベントログに報告された条件のサマリが格納されます。この情報は、潜在的な問題を発見したり、既存の問題を解決したりするのに役立ちます。Status Database からイベントログを参照して、警告、通知またはイベントのより詳細な説明が得られます。
Status Database を表示するには
sp_ctrl で show statusdb コマンドを使用するか、SharePlex 変数データディレクトリの data サブディレクトリ内のファイルを開きます。
Post プロセスによってソースとターゲットのテーブルが非同期であることが検出された場合、非同期のトランザクションの最初の 100 個の SQL 文とデータが、ターゲットシステムのエラーファイルに記録されます。このログを使用して非同期の範囲を判断し、状況が深刻でない場合はまず問題の原因を解決した後、SQL 文を使用してターゲットテーブルを修復することができます。
エラーログを表示するには
SharePlex 変数データディレクトリの log サブディレクトリ内の ID_errlog.sql ファイルを開きます(ここで、ID はターゲットデータベースなどの SharePlex ターゲットの識別子です)。
SharePlex プロセスがレコードを処理できない場合、イベントログに加えてプロセスログファイルにもレコードが記録されます。プロセスログは、主にデバッグに使用されます。
プロセスログの名前は、データソース識別子(ORACLE_SID など)、プロセスの短縮名前(ocap、ord、opo、rcl など)、ファイル番号、ファイル拡張子(.log)で構成されます。
例:
Capture:ora10_ocap02.log
Read:ora10_ord01.log
Post:ora10_opo03.log
Reconcile:ora10_rcl01.log
古いログファイルのエージングは循環パターンで実行されます。番号は 01 で始まり、03 で終わります。現在のログを含めて、いつでも最大 3 つのログが存在できます。3 つのログがすべていっぱいになると(50 MB)、プロセスは最も古いログから上書きを開始します。
プロセスログを表示するには
SharePlex 変数データディレクトリの log サブディレクトリ内のファイルを開きます。
設定をアクティベートすると、ログが生成されます。
アクティベーションログを表示するには
SharePlex 変数データディレクトリの log サブディレクトリ内の SID_oconf##.log ファイルを開きます。
compare および repair コマンドでは、エラー、メッセージ、警告がログに記録されます。これらのログの詳細については、『SharePlex リファレンスガイド』の compare コマンドに関する説明を参照してください。
© 2021 Quest Software Inc. ALL RIGHTS RESERVED. Feedback Terms of Use Privacy