Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

Oracleクライアントから見た障害フェイルオーバー

2017/10/03 06:00

 前回の連載ではOracle Real Application Clusters(RAC)の障害時の自動リカバリの仕組みを解説しました。今回はRACサーバー側で発生した障害に対し、Oracleクライアントがどのような動作をするのかを解説します。RAC 12c R1から、障害発生時にトランザクションを自動再実行するアプリケーション・コンティニュイティの機能が実装され、障害をアプリケーションからマスクできるパターンが増えました。

RAC障害時の新規セッション確立

 Oracle Grid Infrastructure(GI)はOracleインスタンスだけでなく、Oracleリスナー・プロセスなども管理しています。SCANリスナーやローカル・リスナーにプロセス障害が発生すると、GIによって再起動が試みられます。Oracleリスナー・プロセスに障害が発生している最中にOracleクライアントから新規接続リクエストが発行された場合、そのコネクションにはエラーが返ります。しかし、Oracleクライアントにはそのエラーをマスクし、別のOracleリスナーへ接続リクエストを自動再発行する機能があります。これを接続時フェイルオーバーと呼びます(図1)。

cap
図1 接続時フェイルオーバー

 接続時フェイルオーバーを有効にするには、Oracleクライアントの接続記述子にFAILOVER=ONと指定します。ただ、FAILOVERの設定はデフォルトでONなので明示的に記述する必要はありません。

RAC障害時の接続済みセッション

 RACサーバーに障害が発生すると、GIのコンポーネントであるCluster Synchronization Services(CSS)によって障害ノードがクラスタから排除され、正常ノードのOracleインスタンスによってリカバリが開始されます。障害が発生したノードのOracleインスタンスに接続していたセッションにはエラーが返ります。

 Oracleインスタンス障害の場合は、OSが正常動作していればOSによってTCP切断処理が開始されます。接続されていたTCPコネクションに対してFINフラグが付いたパケットがOracleクライアントに返されます。そのため、Oracleクライアントは即時に切断を検出することができます。

 しかし、ノード障害のようにOSごと無応答になってしまう場合、Oracleクライアントは障害のタイミングによってはTCPタイムアウトを待ってしまう場合があります。この状況に対処するため、RAC 10g R1から高速接続フェイルオーバー(Fast Connection Failover : FCF)という機能が実装されました。FCFは、GIとFCFに対応したコネクション・プールの連携機能です。FCFに対応したコネクション・プールにはUniversal Connection Pool for Java(UCP)やOracle Data Provider for .NET(ODP.NET)、OCIセッション・プールがあります。

 GIがノード障害やOracleインスタンス障害を検出すると、正常ノードによってDOWNイベントが生成され、Oracleクライアントのコネクション・プールに通知されます。コネクション・プールはこのDOWNイベントを受け、該当する障害インスタンスとのコネクションをプールから削除します(図2)。

cap
図2 高速接続フェイルオーバー

 このようにして、OracleクライアントはTCPタイムアウトを待つよりも早く障害コネクションをクリーンアップすることができます。FCFのOracleクライアントとGI間のイベント通知経路はランタイム接続ロード・バランシングと同じです。これら2つの機能は同じ経路で異なるタイプのメッセージを通知しています。

※この続きは、会員の方のみお読みいただけます(登録無料)。


※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

  • 日下部 明(クサカベ アキラ)

    日本オラクル データベース担当。Oracle GRID Centerのラインマネージャとしてオラクルの持つ最新技術をパートナー各社と共同で検証し、多くのホワイトペーパーを執筆・レビュー。以後、その経験を元にミッションクリティカルな案件のソリューションデザインの提案などを担当。データベースセキュリティ...

バックナンバー

連載:イチから学ぶデータベース最新技術 - Oracle Real Application Clusters編
All contents copyright © 2007-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5