Chat now with support
Chat with Support

SharePlex 8.6.6 - 管理ガイド

このガイドについて このガイドで使用されている表記規則 SharePlex の概要 SharePlex の実行 複数の SharePlex インスタンスの実行 sp_ctrl でのコマンドの実行 SharePlex パラメータ 複製のための Oracle 環境の準備 設定ファイルの作成 オープンターゲットのターゲットへの複製の設定 複製方法の設定 分割レプリケーションの設定 名前付きキューの設定 変更履歴ターゲットを維持するための SharePlex の設定 Oracle DDL の複製 エラー処理のセットアップ データの変換 SharePlex セキュリティ機能の設定 実稼動環境での複製のアクティベート SharePlex の監視 複製上の問題の防止および解決方法 非同期データの修復 Oracle の高可用性を維持するための手順 アクティブな複製環境の変更 Oracle アプリケーションのパッチまたはアップグレードの適用 ソースまたはターゲット上の Oracle データのバックアップ Capture プロセスのチューニング Post プロセスのチューニング 付録 A:ピアトゥピアの説明図 付録 B:SharePlex 環境変数

Oracle アーカイブログのリストア方法

複製上の問題の防止および解決方法 > Oracle アーカイブログのリストア方法

SharePlex を有効にしてキャプチャおよび複製を再開するためにアーカイブログをリストアする場合は、次の手順を使用して、必要なアーカイブログを特定します。

  1. そこから処理を再開するために Capture が必要とするシーケンス番号を判断します。Capture はログラップが発生したときに停止して、それが必要な REDO ログのシーケンス番号があるメッセージを Event Log (event_log)に印字します。この番号は、次の例で示されているように、SHAREPLEX_ACTID テーブルをクエリして、SEQNO 列を調べることでも見つけることができます。

    SQL> select * from splex.shareplex_actid;

    ACTID SEQNO OFFSET AB_FLAG QUE_SEQ_NO_1 QUE_SEQ_NO_2 COMMAND
    ----- ------ -------- -------- ------------- -------------- ------------
    14 114 9757200 0 672101000 0  
  2. Oracle の V$LOG_HISTORY テーブルをクエリして、そのシーケンス番号がアーカイブされたときを見つけて、その時点から先のログをソースシステムにコピーします。

    SQL> select * from V$LOG_HISTORY;

    RECID STAMP THREAD# SEQUENCE# FIRST_CHANGE# FIRST_TIM NEXT_CHANGE#
    ----- ------ -------- -------- ------------- --------------
    111 402941650 1 111 2729501 14-JUL-00 2729548
    112 402941737 1 112 2729548 14-JUL-00 2729633
    113 402941930 1 113 2729633 14-JUL-00 2781791
    114 402942019 1 114 2781791 14-JUL-00 2836155
    115 402942106 1 115 2836155 14-JUL-00 2890539

プロセス障害後のセマフォのリリース方法

複製上の問題の防止および解決方法 > プロセス障害後のセマフォのリリース方法

データベースの破損やその他のシステム上の問題によって、SharePlex を強制的にシャットダウンした場合、SharePlex によって使用されていたセマフォと共有メモリがリリースされたことを確認します。

セマフォを確認してリリースするには

  1. シャットダウンしていない SharePlex プロセスを探して、それらを kill します。

    $ ps -ef | grep sp_

    $ kill -9 PID

  2. ディレクトリを SharePlex 変数データディレクトリの rim サブディレクトリに変更してから、shmaddr.loc および shstinfo.ipc ファイルに od -x コマンドを発行します。

    # od -x shmaddr.loc

    0000000 0000 00e1 ed40 0000 4400 9328 0080 0000

    0000020 0002 0021

    0000024

    # od -x shstinfo.ipc

    0000000 0000 00e0 ee90 0000 4100 9328 0010 0000

    0000020 0002 0020

    0000024

  3. 次の値を記録します。

    • 上のファイルのそれぞれの最初の 32 ビットワードは、共有メモリセグメントの ID の 16 進値です。この値を 10 進値に変換します。たとえば、ステップ 2 に記載されている shmaddr.loc ファイルで、最初のワード 0000 00e1 は整数値 225 と等しい値です。shstinfo.ipc ファイルで、最初のワードは 0000 00e0 で、これは整数値 224 と等しい値です。
    • shmaddr.loc および shstinfo.ipc ファイルの第 3 ワードは、共有メモリセグメントおよびセマフォの KEY の 16 進値です(各セットが同じキーの値になります)。この値は 10 進値に変換「しないで」ください。たとえば、shmaddr.loc ファイルで、3 番目のワードは 4400 9328 です。shstinfo.ipc ファイルで、3 番目のワードは 4100 9328 です。
    • 各ファイルの第 5 ワードは、SEMAPHORE ID です。この値を 10 進値に変換します。例にあるセマフォ ID は hex 0002 0021 および 0020 0020 であり、こらは 10 進値ではそれぞれ 131105 および 131104 です。
  4. ipcs -smaa コマンドを発行して、すべての共有メモリセグメントおよびセマフォを表示します。(共有メモリセグメントが最初に表示され、「m.」で表されます。セマフォは「s.」で表されます。)。表示内容は次のようになりますが、実際にはもっと長くなります。

  5. shmaddr.loc および shstinfo.ipc からの共有メモリ ID がリストの中にあり、キーが一致することを確認します。

  6. 各共有メモリセグメントに対して、NATTCH 列の値が 0 であることを確認してください。こうすることによって、kill した SharePlex プロセスが確実にメモリセグメントを解放します。

  7. セマフォについては、セマフォ ID およびキーがファイルの値に一致することを確認します。

  8. ルートとして、ID の値(この例では 224 および 225)に ipcrm -m コマンドを発行して、メモリセグメントを削除します。

    # ipcrm -m 224

    # ipcrm -m 225

  9. ルートとして、キーの値(この例では 131104 および 131105)に ipcrm -s コマンドを発行して、セマフォを削除します。

    # ipcrm -s 131104

    # ipcrm -s 131105

ディスクスペース不足の解決方法

複製上の問題の防止および解決方法 > ディスクスペース不足の解決方法

このトピックを参考にして、何かが複製と干渉したときに発生する可能性がある、ディスクスペースの問題を解決します。考えられる原因については、「複製の問題の解決 」を参照してください。

ターゲットでのディスクスペースの節約方法

SharePlex では、SQL 文でターゲットシステムに post する場合よりもはるかに高速に、データをキャプチャして処理します。このため、ネットワークが稼働中で、データがソースから送信されるという前提の場合、ディスクの問題のほとんどは、ターゲットで発生すると考えられます。post キューがそのディスクスペースを超えても、Post キューがクリアするまで、データの一時的な保存に十分な空き領域がソースシステムに存在する可能性はあります。

  1. Import プロセスを停止します。
  2. Post が post キューをクリアするのに十分なメッセージを処理するまで、ソースシステム上にデータを蓄積します。
  3. Import を開始します。
  4. post キューに蓄積されるデータ量が安定するまで、Import をいったん停止してから開始する手順を続行します。

この方法を実装するときは、ソースシステム上の複製サービスおよびディスク使用率を監視します。Unix および Linux システムでは、sp_ps スクリプトでプロセスを監視し、sp_qstatmon 監視スクリプトでキューを監視できます。Windows システムでは、Sp_Nt_Mon ユーティリティを使用して、これらのコンポーネントを監視できます。詳細については、SharePlex の監視を参照してください。

ディスクスペースのリストア方法

キューのディスクでディスク領域がなくなった場合は、次のものに似たメッセージが Event Log に表示されます。

11/22/07 14:14 System call error:No space left on device bu_wt.write [sp_mport(que)/1937472]

11/22/07 14:14 System call error:No space left on device bu_rls.bu_wt [sp_mport(que)/1937472]

11/22/07 14:14 Error: que_BUFWRTERR:Error writing buffer to file que_writecommit(irvspxuz+P+o.a920a64z-o.a102a64z) [sp_mport(rim)/1937472] 11/22/07 14:14 Error: sp_mport: rim_writecommit failed 30 - exiting [sp_mport/ 1937472]

11/22/07 14:14 Process exited sp_mport (from irvspxuz.domain.com queue irvspxuz) [pid = 1937472] - exit(1)

キューのディスクの空き領域がほとんどない場合は、データを再同期しなくてもディスク領域を追加できることがあります。

ディスクスペースをリストアするには

  1. 影響を受けたシステムで SharePlex を停止します。
  2. ディスク領域を追加します。
  3. SharePlex を起動します。
  4. イベントログを表示して、「queue recovery started」および「queue recovery complete」というメッセージを調べます。

    • 両方のメッセージがある場合は、SharePlex は停止されて復元に成功した場所から処理を再開します。アプリケーションが大量のトランザクションを生成する場合、多数のバックログ状態のメッセージがキューに存在する可能性があります。トランザクションの性質、ターゲットデータベースおよび Post プロセスをチューニングする方法、遅延を我慢できる程度によっては、複製でトランザクション処理との均衡が回復するのを待つ代わりに、データを再同期するほうが実際的なことがあります。
    • 1 つまたは複数のキューが壊れている場合、イベントログには「Bad header magic...」または「peekahead failure」のようなメッセージが記録されます。または、「queue recovery started」というメッセージが表示されることがありますが、キューの回復が成功したことを意味する「queue recovery complete」というメッセージは表示されません。この場合、複製を初期状態にリストアする必要があります。

複製を初期状態にリストアするには

  1. 変数データディレクトリと SharePlex テーブルをリストアするには、db_cleansp を実行します。影響を受ける複製設定に含まれるすべてのシステムで実行する必要があります。 SharePlex リファレンスガイドのユーティリティの説明を参照してください。
  2. 選択した方法を使用してデータを同期してから、設定を再アクティベートします。「実稼動環境での複製のアクティベート」を参照してください。
  3. SharePlex 監視ユーティリティを使用して、キューの量に関する警告を含めて、主要複製イベントの無人監視を開始することで、この問題の再発を防止できます。「SharePlex の監視」を参照してください。

ORACLE_SID および ORACLE_HOME の確認方法

複製上の問題の防止および解決方法 > ORACLE_SID および ORACLE_HOME の確認方法

SharePlex は、Oracle データベースに接続するために、インストール時に実行されたデータベースセットアッププロセス中に指定された入力内容から ORACLE_SID を取得します。デフォルトで、データベースセットアッププログラム(ora_setup)は、SharePlex インストーラが実行されたときに指定された SID を表示します。データベースセットアップを実行したユーザーは、表示されるデフォルトとは異なる ORACLE_SID を入力できます。SharePlex は、ORACLE_SID の値に基づいて、レジストリまたは oratab ファイルから ORACLE_HOME を取得します。どちらの値も SharePlex 環境に保存されます。SharePlex は、ORACLE_HOME で指定された場所にある Oracle ライブラリを使用します。

SharePlex で使用される ORACLE_SID および ORACLE_HOME を調べるには

sp_ctrlorainfo コマンドを発行します。

sp_ctrl (mysysl11:2101)> orainfo

Oracle instance #1:

Oracle SID ora12

Oracle HOME /oracle/products/12

Oracle Version 12

Oracle instance #2:

Oracle SID ora12

Oracle HOME /oracle/products/12

Oracle Version 12

Windows 上でデフォルトの ORACLE_SID および ORACLE_HOME を調べるには

レジストリの \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE にある Oracle エントリを表示します。

UNIX および Linux 上でデフォルトの ORACLE_SID および ORACLE_HOME を調べるには

ほとんどの Unix および Linux システムでは、oratab ファイルは /etc/oratab にあります。Oracle Solaris システムでは、このファイルは /var/opt/oracle にあります。ただし、/etc ディレクトリに oratab ファイルが含まれることもあります。

ファイル内のエントリの例を以下に示します。

qa12:/qa/oracle/ora12/app/oracle/product/12.0

この例の場合、qa12 が ORACLE_SID、/qa/oracle/ora12/app/oracle/product/12.0 が ORACLE_HOME です。

Related Documents

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating