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 環境変数

同期の概念について

SharePlex の概要 > 同期の概念について

同期の概念は、主にテーブル間複製に適用されます。テーブル間複製では、Post は整合性チェックを実行して、ターゲットの 1 行だけが複製対象の行変更と一致するようにします。同期はファイル、JMS、Kafka、および変更履歴ターゲットには適用されません。これらには Post によって複製された操作ごとのレコードが含まれますが、時間の経過によって同一になることがあります。Post プロセスはこれらのターゲットに対して整合性チェックを実行しません。

同期されたテーブルの特性

同期されたソースおよびターゲットテーブルの基本的な特性は、次のとおりです(トランスフォーメーション機能が使われていない場合のみ)。

  • 行がソースデータベースに存在する場合、その行はターゲットに存在します。
  • ソースおよびターゲットテーブルで対応する列は、構造とデータ型が同じです。
  • 対応する行のデータの値は、キーの値を含めて同一です。

データの整合性を確認するのは、Post プロセスの役目です。Post は WHERE 句を適用して、キーの値と処理する SQL 操作の前の値を比較します。Post は次のロジックを使用して、ソーステーブルとターゲットテーブルの同期を検証します。

  • Post が複製された INSERT を適用したときに、同じキーを持つ行がすでにターゲットに存在します。Post は、以下のロジックを適用します。

    • ターゲット行のすべての現在の値が INSERT の値と同じ場合、Post は行が同期されているとみなし、この操作を破棄します。
    • いずれかの値が INSERT の値と異なる場合、Post はこれを非同期状態とみなします。

    注: Post が INSERT を post するときに非キー値を考慮しないように設定できます。『 SharePlex リファレンスガイド』の SP_OPO_SUPPRESSED_OOS パラメータの説明を参照してください。

  • Post が複製された UPDATE を適用したときに、UPDATE とキー値が同じ行がターゲットに見つからないか、正しい行が見つかったが行の値が UPDATE の前の値と一致しません。Post は、以下のロジックを適用します。

    • ターゲット行の現在の値が UPDATE の後の値と一致する場合、Post は行が同期されているとみなし、この操作を破棄します。
    • ターゲット行の値が UPDATE の前または後の値と一致しない場合、Post はこれを非同期状態とみなします。

    注: ターゲット行の現在の値が UPDATE の後の値と一致する場合に非同期メッセージを返すように Post を設定できます。『 SharePlex リファレンスガイド』の SP_OPO_SUPPRESSED_OOS パラメータの説明を参照してください。

  • ソースデータに対して DELETE が実行されたが、Post がキーを使用してターゲット行を見つけられません。Post は、DELETE 文を作成するときに、キー値のみを WHERE 句に含めます。行がターゲットに存在しない場合、Post はこの操作を破棄します。

隠れた非同期状態

Post は現在の SQL 操作によって変更されている行の整合性のみを確認します。そのテーブルのその他の行や、その他のテーブルがターゲットデータベースで非同期状態であるかどうかは確認しません。隠れた非同期状態は、変更が最終的に SharePlex によってそのデータに加えられるときや、そのデータの使用時に不一致が検出されたときなど、かなり後にならないと明らかにならない可能性があります。

検出可能な非同期状態の例

あるユーザーがターゲットにログインし、ターゲットテーブルの COLOR 列の 1 行目を「blue」から「red」に変更したとします。次に、ソースシステムのアプリケーションユーザーがソーステーブルに同じ変更を行い、SharePlex がそれをターゲットに複製します。Post によって使用される WHERE 句で、ターゲットテーブルのプリイメージは「blue」ですが、ターゲット行の現在の値は「red」です。Post は非同期状態を警告する非同期エラーを生成します。

隠れた非同期状態の例

あるユーザーがターゲットにログインし、ターゲットテーブルの COLOR 列の 2 行目を「blue」から「red」に変更したが、その変更をソーステーブルに行わなかったため、複製されなかったとします。2 つのテーブルは非同期状態にありますが、Post による処理がないため、前例にあったようなエラーメッセージはありません。たとえ、この行の他の列(SIZE、WEIGHT)にどのような変更があっても、誰かがソーステーブルの COLOR 列を更新するまで、COLOR 列の非同期状態が維持され、ターゲット上のユーザーは不正確な情報を持つこととなります。ソース上での変更が複製される時点で Post によってプリイメージが比較され、初めてエラーメッセージが表示されます。

ほとんどの場合、非同期データの原因は複製時の誤った処理ではなく、ターゲットで適用される DML や不完全なバックアップの復元です。また、Post によって適用されるまで非同期状態が長期間検出されず、最終的にデータに影響してエラーが返される場合もあります。非同期の状態の解決は時間がかかり、ユーザー活動にも悪影響を及ぼします。複製が開始されたら、次の操作を行うことを推奨します。

  • ターゲットテーブルへの書き込みアクセスを防止して、DML と DDL が適用されないようにします。
  • compare コマンドを使用してソースとターゲットのデータを定期的に比較し、同期を確認して隠れた非同期状態を検出します。

情報の有用性についての方針

SharePlex の概要 > 情報の有用性についての方針

SharePlex は LAN 接続および WAN 接続経由で複製するため、さまざまな方法で使用できる信頼性の高い、継続的に更新される代替データベースとして、 レプリカのデータベースを配置できます。次の方針で、必要なときに必要な人へ正しいデータを提供できるようになります。

レポート用インスタンス

SharePlex で保持されるターゲットは、最新状態を維持しながらアクセス可能であり、クエリのパフォーマンスが最適になるように設計されたキーとインデックスで最適化できるので、レポートとクエリの負荷分散には理想的です。OLTP ユーザーからパフォーマンスについての苦情を受けることもなく、一日中レポートを実行することもできます。月末または四半期末などのレポートの繁忙時でさえも、アプリケーションの応答時間が大量のレポート作成に影響を受けることはありません。さらに、組織の意思決定の責任者は、レポートに反映されたデータの正確さを賞賛するようになります。

ブロードキャストおよびカスケード

多くのリモートユーザーがプライマリデータベースに格納されたデータにアクセスしたり使用したりするときに、その処理を、SharePlex の複製によって最新状態に維持されている複数のセカンダリデータベースへ移すことができます。このため、プライマリデータベースとシステムをトランザクション用に最適化しておくことができます。また SharePlex では、プライマリデータベースに直接ネットワーク接続できないリモートユーザーがアクセスできるようにして、中継システム経由でデータをリモートシステムへカスケードできます。

データウェアハウス

SharePlex では、多数のソースシステムから 1 つのターゲットシステムへ複製できます。このことは、情報がクエリおよびレポート用に会社全体で利用できるようになるので、データウェアハウスまたはデータマート内へデータを統合するには理想的です。複製するデータ内の精密度のレベルと、異なるターゲット構造へ複製されたデータを変形するオプションは、ユーザーが適切な意思決定のために必要な特定のタイムリーな情報があるデータウェアハウスにデータを収めることができるようにする、ユニークな SharePlex の機能です。

高い可用性と災害からの回復

SharePlex を使用すれば、LAN または WAN 経由で重複するデータベースを維持できます。緊急時に、またはプライマリサーバーでルーチンのメンテナンスが実行されるときは、計画された方法で実稼動を代替サイトへ移動できます。SharePlex 複製により、クエリとレポートにセカンダリデータベースを使用することができます。

図 1: 一目でわかる SharePlex の複製方法

展開前にテストする

SharePlex を実稼動システムに実装する前に、要件に対応するように SharePlex を適切に設定したことを確認するため、実稼動環境のミラーでテストを実行することを推奨します。テストによって、設定エラーや想定外の環境エラーなどの問題(複製のパフォーマンスや可用性に影響を及ぼすネットワークやリソースの問題など)を明らかにできます。

また、SharePlex などのエンタープライズアプリケーションの使用をサポートするインフラが組織に導入されていることが前提になります。たとえば次の項目が挙げられます。

  • データベースおよび SharePlex ドキュメントの可用性と使用
  • ユーザー用のトレーニングプログラム
  • 業務の中断を最小限に抑えるロールアウトおよびアップグレード計画。SharePlex がアプリケーションインフラの一部として実装されるときは、非実稼動環境で SharePlex とともに新しいアプリケーションの機能をテストすることを強く推奨します。
  • SharePlex プロセスの適切なシャットダウン、システムやデータベースのメンテナンスに対応するための未処理 redo の維持など、SharePlex の依存関係を考慮したデータベースまたはシステムメンテナンス手順。
  • 未承認のユーザーが SharePlex データレコードへのアクセスや設定変更を実行できないようにする十分なセキュリティ。

SharePlex Professional Services チームは、お使いの環境における SharePlex の準備、インストール、展開を支援します。

SharePlex の実行

SharePlex の実行

この章には、UNIX、Linux、および Windows で SharePlex を実行する手順が記載されています。

コンテンツ

UNIX での SharePlex の実行

SharePlex の実行 > UNIX での SharePlex の実行

Unix および Linux システムでは、sp_cop プログラムを実行することで SharePlex を起動します。ユーザーが設定をアクティベートしてから、sp_cop が必要な複製子プロセスを同じシステム上で開始します。起動した sp_cop のインスタンスは、それぞれが親プロセスとなって、一連の複製子プロセスを生成します。sp_cop プロセスは、複製設定の一部である各システムで開始する必要があります。

sp_cop は、次の 2 つの方法の 1 つで開始できます。

  • オペレーティングシステムのコマンドラインから開始します。
  • スタートアップファイルに組み込んでシステム起動時に開始します。

重要:korn(ksh)または C シェル(csh)のどちらかから SharePlex を実行します。

  • バックグラウンドプロセスを処理する方法が SharePlex と互換性がないので、Bourne シェル(sh)は使用しないでください。Bourne シェルを使用する必要がある場合は、ksh または csh へシェルを切り換えて SharePlex を実行し、その後そのシェルを終了して Bourne シェルへ戻ります。
  • ウィンドウエミュレータの Exceed X を使用している場合は、デフォルトシェルの POSIX から ksh シェルに切り替え、ksh シェル以外からは sp_cop を実行しないようにしてください。

Unix および Linux での起動シーケンス

複製に関与するシステムを起動するときは、以下の順序でコンポーネントを起動してください。

  1. システムを起動します。
  2. ソースとターゲットのデータベースを起動します。
  3. SharePlex を起動します。
  4. sp_ctrl を起動します。
  5. sp_ctrllstatus コマンドを発行して、SharePlex プロセスが開始されたことを確認します。

    sp_ctrl> lstatus

  6. ユーザーのシステム利用を許可します。

Unix および Linux での SharePlex の起動

SharePlex を起動するには、SharePlex 管理者としてシステムにログオンする必要があります。ユーザー名は、/etc/group ファイルの SharePlex admin グループに割り当てられている必要があります。ユーザーグループの詳細については、「セキュリティグループへの SharePlex ユーザーの割り当て」を参照してください。

表 1: SharePlex の起動構文

メソッド 起動構文
ルートから、フルパス指定 $ /productdir/bin/sp_cop [-uidentifier] [-s] &
製品ディレクトリへの CD

$ cd /productdir/bin

$ ./sp_cop [-uidentifier] [-s] &

スタートアップスクリプトから

#!/bin/ksh

cd productdir\bin

nohup sp_cop [-uidentifier] [-s] &

表 2: SharePlex の起動構文の説明

引数 説明
& SharePlex をバックグラウンドで実行します。
nohup 現在のユーザーがログアウトした後で、SharePlex の起動をバックグラウンドで続行するように指示します。
-s
  • SharePlex 複製プロセス(Capture、Read、Export、Import、Post)を開始せずに、sp_cop を開始します。-s を指定しなければ、アクティブな設定が存在する場合、複製プロセスが自動的に開始されます。
  • sp_cop-s オプション付きで開始した後で複製プロセスを開始するには、startup コマンドを使用します。startup コマンドは、すべてのプロセスを一度に開始します。sp_cop-s 付きで開始した後で、プロセスを個別に開始することはできません。個別のプロセスを停止する必要がある場合は、stop コマンドを使用します。これらのコマンドの詳細については、『SharePlex リファレンスガイド』を参照してください。
  • -uidentifier

    sp_cop を固有の識別子を指定して開始します。このオプションを使用するのは、システムで実行中の sp_cop インスタンスが複数存在する場合です。これは、一部の SharePlex 設定で必要です。詳細については、次を参照: 複数の SharePlex インスタンスの実行

    identifier の例は、次のとおりです。

    • SharePlex のポート番号(-u2100 など)
    • 複製の対象であるデータベースの識別子(-uora10a など)
    • 説明的な識別子(-utest など)

    Unix および Linux での SharePlex プロセスの特定

    sp_cop セッションにはそれぞれプロセス ID 番号が与えられます。起動後に ID が返されて、コマンドプロンプトが再表示されます。前の sp_cop セッションでアクティベートされている設定がある場合は、複製が直ちに実行されます。アクティブな設定がない場合、sp_cop はバックグラウンドで受動的に稼働します。

    UNIX および Linux システムでは、ps -ef | grep sp_ コマンドを使用して、実行中の SharePlex プロセスを表示できます。

    • sp_cop プロセスは root プロセスです。
    • 以下の子プロセスは、ソースシステム上の sp_cop によって生成されます。

      • Command および Control プロセス(sp_cnc
      • Capture(sp_ocap
      • Read(sp_ordr
      • Export (sp_xport)
    • 以下の子プロセスは、ターゲットシステム上の sp_cop によって生成されます。

      1. Command および Control プロセス(sp_cnc

      2. Import (sp_mport)
      3. Post(データベースが Oracle の場合は sp_opst_mt、データベースがオープンターゲットの場合は sp_xpst

    それぞれの子プロセスの -uidentifier は、親の sp_cop プロセスと同じです。このため、sp_cop の複数のセッションが実行されているときに、関連するプロセスを簡単に識別できます。

    Unix および Linux での SharePlex の停止

    SharePlex を停止するには、sp_ctrlshutdown コマンドを発行します。これは正常なシャットダウンであり、各プロセスの状態の保存、チェックポイントのディスクへの実行、バッファ内のデータの read/release、子プロセスの削除が行われます。キューの中のデータはその場に安全にとどまり、sp_cop を再び起動したときは、処理の準備が整っています。SharePlex が大量のデータを処理していると、シャットダウンプロセスに時間がかかります。

    必要な場合は、shutdown コマンドと一緒に force オプションを使用して、強制的に複製をシャットダウンできます。これによって sp_cop は即座に終了し、通常のシャットダウン手順は省略されます。このコマンドの詳細については、『SharePlex リファレンスガイド』を参照してください。

    Unix および Linux でのシャットダウンの考慮事項

    トランザクションアクティビティがある状態でも、SharePlex を短時間で安全にシャットダウンできます。次に SharePlex を起動すると、複製は REDO ログまたはアーカイブログの正しい位置で適宜再開されます。ただし、トランザクションアクティビティがある間は SharePlex を実行したままにすることがベストプラクティスです。そうしないと、SharePlex を再起動したときに大量の redo バックログの処理が必要になる可能性があり、ソースデータとターゲットデータの間に遅延が生じます。

    redo ログがラップし、アーカイブログにアクセスできない場合は、ソースデータとターゲットデータを再同期するしかありません。redo の生成中に SharePlex を停止する場合は、この可能性を考慮してください。

    注: SharePlex とデータベースの両方をシャットダウンする場合は、SharePlex を先にシャットダウンしてください。先にデータベースをシャットダウンすると、SharePlex はデータベースに障害が発生したと解釈し、警告メッセージを生成します。

    SharePlex を停止する代わりに、sp_ctrlstop コマンドを使用して、個々の SharePlex 複製プロセスを適宜停止できます。このコマンドの詳細については、『リファレンスガイド』を参照してください。

    Related Documents

    The document was helpful.

    Select Rating

    I easily found the information I needed.

    Select Rating