Autonomous Databaseでのアプリケーション・継続性について
アプリケーション・コンティニュイティは、停止後に影響を受けるデータベース・セッションの進行中の作業をリカバリすることで、エンド・ユーザーおよびアプリケーションから停止を隠します。アプリケーション・コンティニュイティは、このリカバリをアプリケーションの下で実行するため、アプリケーションには停止が実行のわずかな遅延のように見えます。
データベースの計画メンテナンス、計画外停止およびロード・リバランスがアプリケーションから隠れていれば、お客様のアプリケーションは継続的可用性を達成します。アプリケーション・コーディングのベスト・プラクティス、アプリケーション・継続性構成およびAutonomous Databaseの組合せによって、アプリケーションは継続的に使用可能になります。
アプリケーションから計画的保守活動を隠すための最善のアプローチは、アプリケーションを透過的にドレインまたはフェイルオーバーするものです。WebLogicサーバー、Oracle Universal Connection Pool (UCP)、OCIセッション・プール、ODP.NET管理対象外プロバイダを含む、Oracleの接続プールおよびミッドティアは、高速アプリケーション通知(FAN)に対応しているため、メンテナンスの前に作業が正常にドレインされるようAutonomous Databaseでメンテナンスが開始すると通知されます。Application Continuityは、事前定義されたドレイン間隔(Autonomous Databaseでは5分)でドレインされないセッションをフェイルオーバーするために、計画メンテナンスで実行されます。
コンポーネントや通信の障害によって引き起こされる計画外停止を認識させないようにするために、Oracleは次のものを提供しています:
-
通知。FANは、停止を認識させないようにするための最初のステップです。FANにより、停止が発生した際には、クライアントは通知を受けて、現在のネットワーク待機から抜け出すことができます。このため、アプリケーションが長時間ネットワークの待機で停止することがなくなります。Autonomous Databaseの場合、FANはドライバおよびAutonomous Databaseクラウド接続マネージャによって処理されます。
FANの通知によって、自動的にアイドル状態の接続がクローズされ、新しい接続が新しいサービスの場所でオープンされます。さらに、間もなくシャットダウンされるサービスの場所で、アクティブな作業を完了できる構成可能な時間が確保されます。IBM WebSphereなどの大手サードパーティのJDBC中間層は、UCPを使用して構成した場合、同様の動作を実現できます。UCPを使用できないJDBCベース・アプリケーションに対しては、Oracleドライバを使用したソリューションと接続テストが用意されています。Autonomous Databaseでは、計画メンテナンスのFANはインバンドで送信されます。
-
リカバリ。クライアントが通知されると、Transparent Application Continuity (TAC)またはApplication Continuity (AC)によるフェイルオーバー処理によってAutonomous Databaseへの接続が再確立され、可能な場合は処理中のコミットされていない作業がリプレイされます。処理中の作業をリプレイすることで、アプリケーションは通常、障害の発生を認識することなく実行を続行できます。
アプリケーションに応じて、2つの構成のいずれかでAutonomous DatabaseでApplication Continuityを有効にします:
-
Application Continuity(AC)
アプリケーション・コンティニュイティは、Thin Javaベースのアプリケーションの停止と、Oracle Database Oracle Call InterfaceおよびODP.NETベースのアプリケーションを隠蔽し、Node.jsなどのオープンソース・ドライバとPythonをサポートします。Application Continuityは、セッション状態およびトランザクション状態を含む既知のポイントからセッションをリカバリすることで、セッションを再作成します。アプリケーション・コンティニュイティは、処理中のすべての作業を再作成します。フェイルオーバーが発生した場合、アプリケーションは実行時間がわずかに遅延します。
-
透過アプリケーション・コンティニュイティ(TAC)
透過的アプリケーション・コンティニュイティ(TAC)は、セッションとトランザクションの状態を透過的にトラッキングおよび記録して、リカバリ可能な停止の直後にデータベース・セッションをリカバリできるようにします。これは、アプリケーションの知識やアプリケーション・コードを変更することなく実行され、透過的アプリケーション・コンティニュイティがアプリケーションで有効になります。アプリケーションの透過性とフェイルオーバーは、アプリケーションがユーザー・コールを発行するときのセッション状態の使用状況を取得して分類する状態トラッキング情報を使用することによって実現されます。
Application Continuityの詳細は、アプリケーション・コンティニュイティの概要を参照してください。
デフォルトでは、アプリケーション・継続性はAutonomous Databaseで無効になっています。