OPS は、Sun Cluster の共有ディスク構成を使用します。共有ディスク構成では、1 つのデータベースが複数の OPS インスタンス間で共有され、それら OPS インスタンスは同時にデータベースにアクセスします。同じデータへのアクセスの衝突は、分散ロックマネージャ (Oracle UNIX Distributed Lock Manager (DLM)) によって制御されます。プロセスまたはノードがクラッシュすると、DLM は再構成され、障害からの回復が図られます。
Informix-Online XPS は、Sun Cluster の非共有ディスク構成を使用します。各ノード上のデータベースサーバーインスタンスは、その専用のデータベースパーティションに対する独占的なアクセス権を持ちます。
クライアントからデータベース照会があると、そのテーブルパーティションがサーバーによって解析され、プライベートネットワーク経由で適切なサーバーに転送されます。結果はプライベートネットワーク経由でマージされ、クライアントに返されます。
OPS などの一部アプリケーションでは、/etc/system ファイルを編集して、要求される共有メモリーの最小サイズを非常に大きくしなければならないことがあります。しかし、たとえば、/etc/system ファイル内の shmsys:shminfo_shmmin フィールドに 200 バイトより大きな値を設定した場合、sm_config(1M) コマンドは共有メモリーを取得できません。これは、システムが割り当て可能な最小サイズより少ないバイト数が最終的に要求されることになるためです。この結果、sm_config(1M) による shmget(2) システムコールで問題が発生し、sm_config(1M) は異常終了します。
この問題を回避するには、/etc/system をエディタで開いて、shmsys:shminfo_shmmin に 200 を設定し、shmsys:shminfo_shmmax に 200 より大きな値を設定してください。新しい値を有効にするには、マシンを再起動します。
semsys 警告メッセージが表示され、コアダンプが発生した場合は、/etc/system ファイル内の semsys:seminfo_* フィールドに含まれているセマフォ値がマシンの実際の物理的な制限に一致していないことを意味します。
Oracle SQL*Net または Net8 は、OPS 環境でノード障害が発生した場合に、IP フェイルオーバー機能を使用することなく正常に動作している残りのサーバーに再接続するように構成できます。
OPS 環境では、複数の Oracle インスタンスが協力して、同じ共有データベースへのアクセスを可能にします。Oracle クライアントは、インスタンスのどれを使用しても、データベースにアクセスできます。つまり、インスタンスに問題が発生しても、クライアントは、残りのインスタンスに接続することによって、引き続きデータベースにアクセスできます。
再接続がエンドユーザーに透過的であるように残りのインスタンスに再接続する方法は多数あります。
Oracle インスタンスへの接続が失われた場合に、Oracle クライアントが代替インスタンスへの接続を再確立するようにアプリケーションを設計する。このことは、クライアントが複数インスタンス (OPS) 環境で動作していることを認識することを意味します。
ただし、こうした解決策はほとんど使用されません。ほとんどの実装では、Tuxedo トランザクションモニター (TM) などのミドルウェアを使用して、再接続ロジックを実現します。Oracle クライアントが TM に接続し、接続された TM が多数あるデータベースインスタンスの 1 つに接続します。TM は、代替インスタンスに再接続することによってクライアントから特定のインスタンスの障害を隠します。TM を使用することの利点は、OPS 環境で複数インスタンスを利用するために、既存の Oracle クライアントアプリケーションを書き直す必要がないことです。欠点は、TM との統合コストです。
Oracle インスタンスへの接続が失われた場合に、Oracle クライアントが同じサーバーへの接続を再度試みるようにアプリケーション (Oracle クライアント) を設計する。つまり、非並列環境用に設計された Oracle クライアントアプリケーションを再設計することなく OPS 環境に移すことができます。接続が残りのサーバーに向けられるように構成します。
Oracle クライアントから見ると、モデルは単純です。サーバーがクラッシュしたとき、クライアントは接続が切断されたことを検出します。クライアントはサーバーに再接続し、トランザクションを再実行するように依頼します。Oracle SQL*Net には、同じサービスの下で複数のホストにまたがって動作する複数インスタンスを組み込む機能が用意されています。この機能により、再接続したとき、クライアントは自動的に残りのインスタンスを利用できます。この再接続は自動的ではありません。一般に、クライアントには、前回と同じサービスに再接続するコードを組み込みます。
ノードまたはインスタンス障害あると、残りのサーバーは障害が発生したインスタンスを最初に回復する必要があります。この回復中、クライアントは、インスタンスからの応答がないことを検出します。この回復処理は、Sun Cluster フレームワークとは何の関係もありません。この回復は、Oracle、トランザクションボリューム、OPS に対する回復機能に完全に依存します。