継続的な可用性のためのコード

アプリケーションが計画メンテナンス、計画外停止、データベースの負荷の不均衡を認識し、そのアプリケーションの継続的な可用性が実現します。アプリケーションのベスト・プラクティス、シンプルな構成およびOracle Autonomous AI Databaseを組み合せることで、アプリケーションの継続的な可用性を実現します。

計画メンテナンスのアクティビティをアプリケーションに認識させない最適な方法は、各データベース・ワークロードの場所から、そのワークロードの場所のメンテナンス・ウィンドウに先立って作業を透過的にドレインすることです。WebLogic Server、Oracle Universal Connection Pool (UCP)、OCIセッション・プール、ODP.NET管理対象外プロバイダを含む、Oracleの接続プールおよび中間層は、高速アプリケーション通知(FAN)に対応しているため、メンテナンスの前に作業が正常にドレインされるようデータベース・サービスの移動がスケジューリングされる前に通知を受けます。FANの通知によって、自動的にアイドル状態の接続がクローズされ、新しい接続が新しいサービスの場所でオープンされます。さらに、間もなくシャットダウンされるサービスの場所で、アクティブな作業を完了できる構成可能な時間が確保されます。IBM WebSphereなどの大手サードパーティのJDBC中間層は、UCPを使用して構成した場合、同様の動作を実現できます。UCPを使用できないJDBCベース・アプリケーションに対しては、Oracleドライバを使用したソリューションと接続テストが用意されています。

コンポーネントや通信の障害によって引き起こされる計画外停止を認識させないようにするために、Oracleは次のものを提供しています:

また、割り当てられたドレイン期間中にドレインされない(現在のデータベース操作を完了する)セッションに対しても、TACまたはACが計画メンテナンス中に実行されます。

アプリケーション構成チェックリスト

次のガイドラインに従って、アプリケーションを継続的に使用できるようにします:

ヒント:自律型AIデータベースを使用してアプリケーションの継続的可用性を実装するためのベスト・プラクティスについては、ATP-Directでのアプリケーションの継続的な可用性に関するホワイト・ペーパーを参照してください

データベース・サービスを使用した接続

データベース・サービスは、基礎となるインフラストラクチャの透過性を提供します: FAN、接続データ、透過的アプリケーション・コンティニュイティ(TAC)、アプリケーション・コンティニュイティ(AC)、スイッチオーバー、コンシューマ・グループ、およびその他の多くの機能および操作は、サービスの使用を前提としています。

Autonomous AI Database on Dedicated Exadata Infrastructureには、Autonomous AIデータベースの事前定義済データベース・サービス名の説明に従って、選択できる事前定義済データベース・サービスのペアがいくつか用意されています。どれを選択してもFANおよびドレインが提供され、2つのトランザクション処理ペアではデフォルトでTACが有効になります。すべての事前定義済サービスに対するTACまたはAC設定を変更するために、APIが使用可能です(フェイルオーバーのためのサービス属性の有効化を参照)。

高可用性のための接続文字列の構成

Oracleでは、Oracle Autonomous AI Databaseに接続する際に、次に示す接続文字列構成をお薦めします。Oracle提供のtnsnames.oraファイルに埋め込まれた接続文字列は、この形式で構成されています。クライアントで簡易接続ネーミングを使用しないでください。このような接続には高可用性機能がありません。

このTNSは、バージョン12.2以上のすべてのOracleクライアントで使用してください。

alias =
(DESCRIPTION =
(CONNECT_TIMEOUT= 120)(RETRY_COUNT=20)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)
 (ADDRESS_LIST =
   (LOAD_BALANCE=on)
   (ADDRESS = (PROTOCOL = TCP)(HOST=*scan-host*)(PORT=1521)))
 (CONNECT_DATA=(SERVICE_NAME = *service-name*)))

バージョン12.1以前のOracleドライバを使用するJDBC接続には、次を使用してください

alias =
(DESCRIPTION =
(CONNECT_TIMEOUT= 15)(RETRY_COUNT=20)(RETRY_DELAY=3)
(ADDRESS_LIST =
  (LOAD_BALANCE=on)
  (ADDRESS = (PROTOCOL = TCP)(HOST=*scan-host*)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME = *service-name*)))

高速アプリケーション通知(FAN)の使用

FANは、サービスが停止または再開されたときに、アプリケーションに即時通知を送信します。FANを使用しないと、ハードウェア障害やネットワーク障害が発生した後にアプリケーションがTCP/IPタイムアウトでハングし、リソースが再開されたときにリバランスが行われない可能性があります。すべてのOracleプールおよびすべてのOracleアプリケーション・サーバーはFANを使用します。サードパーティのJAVAアプリケーション・サーバーは、UCPを使用してFANを有効にできます。

FANを使用するためにアプリケーションを変更する必要はありません。これらは構成の変更のみです。

計画メンテナンス中にサービスを継続させるには、FANを次のいずれかと併用します:

計画外停止中にサービスを継続させるには、FANを次のいずれかと併用します:

FANの対象範囲

FANのイベントは次のものと統合されます:

クライアントでFANを有効にするには

高可用性のための接続文字列の構成に示されているTNS別名を使用します。Oracle Database 12c以降のクライアント・ドライバを使用している場合は、FANイベントを受信するためのOracle Notification Service (ONS)サブスクリプションが、この接続文字列によりクライアントで自動構成されます。ONSによってデータベース層とクライアント層の間にセキュアな通信パスが提供され、サービスの可用性(コンポーネントの停止または起動)やランタイム・ロード・バランシングに関するアドバイスをクライアントに通知できるようになるため、通常運用時に作業の配置が改善されます。

クライアントに応じて、次のようにアプリケーション構成プロパティでFANを有効にします:

事前定義済のデータベース・サービスによって、TLSウォレットベースの認証を使用するTCPS接続が提供されます。アプリケーションのタイプ(JDBCまたはOracle Call Interface)に応じて、特定のルールに準拠したウォレット構成にする必要があります(オプションのウォレットを含めたFANのクライアントの構成を参照)。

推奨プラクティスを使用したドレインの許可

アプリケーションを使用する際のベスト・プラクティスは、必要なときに接続をチェックアウトし、現在のアクションが完了したらプールに再チェックインすることです。これは、実行時に作業をリバランスする場合や、作業をドレインするメンテナンス・ウィンドウ中に、優れたパフォーマンスを達成するために重要です。

計画メンテナンスが認識されないようにするためには、FANに対応したOracle接続プールを使用することをお薦めします。アプリケーションでOracleプールとFANが使用され、リクエストとリクエストの間にプールに接続が戻される場合、ユーザーに影響はありません。FANを使用するためにアプリケーションに変更を加える必要はありません。Oracle接続プールが計画ダウンタイムにFANイベントを受信すると、ドレインされるインスタンスですべての接続がマークされます。チェックインされた接続は、再使用されないように即座にクローズされます。使用中の接続は、プールに戻されるとクローズされます。これにより、時間の経過とともにすべての接続が正常にクローズされます。

サードパーティのJavaベース・アプリケーション・サーバーを使用している場合、ドレインとフェイルオーバーを達成する最も効果的な方法は、プールされたデータ・ソースのかわりにUCPを使用することです。Oracle WebLogic Server、IBM WebSphere、IBM Liberty、Apache Tomcat、Red Hat WildFly (JBoss)、Spring、Hibernateなど、多くのアプリケーション・サーバーでこのアプローチがサポートされています。これらのアプリケーション・サーバーでUCPを使用する方法については、Oracleおよび他のプロバイダ(IBMなど)のホワイト・ペーパーに記載されています。UCPをデータ・ソースとして使用すると、高速接続フェイルオーバー、ランタイム・ロード・バランシング、アプリケーション・コンティニュイティ、透過的アプリケーション・コンティニュイティなどのUCP機能を十分な動作保証とともに使用できます。

透過的アプリケーション・コンティニュイティ(TAC)またはアプリケーション・コンティニュイティ(AC)の有効化

TACは、セッションとトランザクションの状態を透過的に追跡および記録して、リカバリ可能な停止の直後にデータベース・セッションをリカバリできるようにします。事前定義済データベース・サービスの2つのトランザクション処理ペアでは、TACがデフォルトで有効になっています。

ACはカスタマイズが可能で、副次的影響の再実行を選択したり、TACでは実行されないフェイルオーバー時の複雑なコールバックを追加したりできます。Oracle 12cのドライバ(JDBC ThinまたはOracle Call Interface)を使用している場合、副次的影響またはコールバックを使用してカスタマイズする場合、またはセッション期間一時表などの状態を使用してクリーン・アップを行わないアプリケーションを使用する場合は、ACを使用します。

透過的アプリケーション・コンティニュイティを使用するためのステップ

アプリケーション・コンティニュイティを使用するためのステップ

関連コンテンツ