SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine Day 2022

2022年6月28日(火)13:10

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

イチから学ぶデータベース最新技術 - Oracle Real Application Clusters編

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

 前回の連載では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つの機能は同じ経路で異なるタイプのメッセージを通知しています。

次のページ
トランザクションの自動再実行

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
イチから学ぶデータベース最新技術 - Oracle Real Application Clusters編連載記事一覧

もっと読む

この記事の著者

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/9784 2017/10/03 06:00

Job Board

PR

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

2022年6月28日(火)13:10

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング