Autonomous Databaseでのアプリケーション・コンティニュイティの構成
Application Continuityを構成するには、アプリケーションが使用するデータベース・サービスのアプリケーション・継続性を有効にし、フェイルオーバー・タイプおよびドレイン・タイムアウトを構成する必要があります。また、高可用性を有効にする複数の接続文字列パラメータを設定する必要があります。
- アプリケーション・コンティニュイティを有効にするためのサービスの構成
DBMS_APP_CONT_ADMIN
を使用して、アプリケーション・コンティニュイティまたは透過的アプリケーション・コンティニュイティを有効にします: - 高速アプリケーション通知(FAN)の使用
Autonomous Databaseに接続すると、OracleデータベースはFANを自動構成します。Autonomous Databaseを使用したアプリケーション・デプロイメントの場合、計画外停止の高速アプリケーション通知(FAN)イベントは接続マネージャ(CMAN)に送信されます。FANを使用するために必要なクライアント・アプリケーション構成ステップはありません。 - 高可用性のための接続文字列の構成
高可用性を維持するために、Oracleでは、Oracle Autonomous Databaseへの接続時に特定の接続文字列パラメータを設定することをお薦めします。 - ドライバ固有のクライアント・オプションの構成
クライアントとドライバに応じて、Autonomous Databaseへの接続時にアプリケーション・コンティニュイティを使用するようにクライアントが適切に構成されていることを確認する必要があります
アプリケーション・コンティニュイティを有効にするためのサービスの構成
DBMS_APP_CONT_ADMIN
を使用して、アプリケーション・継続性または透過的アプリケーション・コンティニュイティを有効にします:
-
アプリケーション・連続性(AC): このフェイルオーバー・オプションは、プロシージャ
DBMS_APP_CONT_ADMIN.ENABLE_AC
を使用して設定します。ENABLE_AC
プロシージャは3つのパラメータを使用します。SERVICE NAME
は変更するサービス名で、FAILOVER_RESTORE
はアプリケーション・コンティニュイティ(AC)を選択するためにLEVEL1
に設定されます。REPLAY_INITIATION_TIMEOUT
はリプレイ・タイムアウトで、リクエストを送信してから何秒までそのリクエストのリプレイを許可するかを指定します。たとえば、ADMINユーザーとして、
TPURGENT
サービスのアプリケーション・コンティニュイティを有効にするには:execute DBMS_APP_CONT_ADMIN.ENABLE_AC( 'databaseid_tpurgent.adb.oraclecloud.com', 'LEVEL1', 600);
-
Transparent Application Continuity (TAC): このフェイルオーバー・オプションは、プロシージャ
DBMS_APP_CONT_ADMIN.ENABLE_TAC
を使用して設定します。ENABLE_TAC
プロシージャは3つのパラメータを使用します。SERVICE NAME
は変更するサービス名で、FAILOVER_RESTORE
は透過的アプリケーション・コンティニュイティ(TAC)を選択するためにAUTO
に設定されます。REPLAY_INITIATION_TIMEOUT
はリプレイ・タイムアウトで、リクエストの送信後何秒までそのリクエストのリプレイを許可するかを指定します。たとえば、ADMINユーザーとして、リプレイ・タイムアウトを20分に設定して
TP
サービスの透過的アプリケーション・コンティニュイティを有効にするには:execute DBMS_APP_CONT_ADMIN.ENABLE_TAC( 'databaseid_tp.adb.oraclecloud.com', 'AUTO', 1200);
-
無効: プロシージャ
DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER()
を使用してフェイルオーバーを無効にします。たとえば、ADMINユーザーとして、
TP
サービスのフェイルオーバーを無効にするには:execute DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER( 'databaseid_tp.adb.oraclecloud.com');
アプリケーション・継続性のサービス名パラメータの検索
ワークロード・タイプに応じて、次のようなコマンドを使用してデータベース内のDBA_SERVICES
からSELECT
し、アプリケーション・コンティニュイティを有効にするサービスを識別します:
-
データ・ウェアハウス
SELECT name, failover_type FROM DBA_SERVICES; NAME FAILOVER_TYPE ------------------------------------------------------- ------------- nvt21_adb1_low.adb.oraclecloud.com nvt21_adb1_high.adb.oraclecloud.com nvt21_adb1_medium.adb.oraclecloud.com
-
トランザクション処理またはJSONデータベース
SELECT name, failover_type FROM DBA_SERVICES; NAME FAILOVER_TYPE ------------------------------------------------------- ---------------- nvt21_adb1_tp.adb.oraclecloud.com nvt21_adb1_tpurgent.adb.oraclecloud.com nvt21_adb1_low.adb.oraclecloud.com nvt21_adb1_high.adb.oraclecloud.com nvt21_adb1_medium.adb.oraclecloud.com
high
サービスのFAILOVER_TYPE
に値がないことと、アプリケーション・継続性が無効であることがわかります。
サービスに対してアプリケーション・コンティニュイティが有効であることを確認
ワークロード・タイプに応じて、DBA_SERVICES
に対する問合せの出力をチェックし、アプリケーション・コンティニティが有効になっていることを確認します。
-
データ・ウェアハウス
SELECT name, failover_type FROM DBA_SERVICES; NAME FAILOVER_TYPE ------------------------------------------------------- -------------- nvt21_adb1_low.adb.oraclecloud.com nvt21_adb1_high.adb.oraclecloud.com AUTO nvt21_adb1_medium.adb.oraclecloud.com
-
トランザクション処理またはJSONデータベース
SELECT name, failover_type FROM DBA_SERVICES; NAME FAILOVER_TYPE ------------------------------------------------------- -------------- nvt21_adb1_tp.adb.oraclecloud.com nvt21_adb1_tpurgent.adb.oraclecloud.com TRANSACTION nvt21_adb1_low.adb.oraclecloud.com nvt21_adb1_high.adb.oraclecloud.com AUTO nvt21_adb1_medium.adb.oraclecloud.com
high
サービスのFAILOVER_TYPE
値がAUTO
になっており、透過アプリケーション・コンティニュイティ(TAC)が有効になっていることを示しています。また、tpurgent
サービスのFAILOVER_TYPE
値がTRANSACTION
になっており、アプリケーション・コンティニュイティ(AC)が有効になっていることを示しています。
高速アプリケーション通知(FAN)の使用
Autonomous Databaseに接続すると、OracleデータベースはFANを自動構成します。Autonomous Databaseを使用したアプリケーション・デプロイメントの場合、計画外停止の高速アプリケーション通知(FAN)イベントは接続マネージャ(CMAN)に送信されます。FANを使用するために必要なクライアント・アプリケーション構成ステップはありません。
FANは、クライアント・ドライバおよびAutonomous Database接続マネージャ(CMAN)によって自動的に処理されます:
- 計画メンテナンス・イベントの場合、FANはインバンドでドライバに直接送信されます。これには、アプリケーションがリクエスト境界に対してOracleプールまたはTACを使用するか、接続テストを使用する必要があります。
- Oracle DatabaseおよびOracleクライアント・ドライバは、接続テストおよびリクエスト境界でドレインします。
詳細は、Autonomous Databaseでの継続的可用性のクライアント構成を参照してください。
高可用性のための接続文字列の構成
高可用性を維持するために、Oracleでは、Oracle Autonomous Databaseへの接続時に特定の接続文字列パラメータを設定することをお薦めします。
Oracle Autonomous Databaseへの接続時に、接続文字列にCONNECT_TIMEOUT
、RETRY_DELAY
、RETRY_COUNT
および TRANSPORT_CONNECT_TIMEOUT
パラメータを設定します。Oracle提供のtnsnames.ora
ファイルに埋込みの接続文字列は、ほとんどのアプリケーションに適した値で事前構成されています。場合によっては、アプリケーションのニーズに応じて、接続文字列の事前構成済の値を変更する必要があります。
このTNSは、バージョン12.2以上のすべてのOracleクライアントで使用してください。
alias = (DESCRIPTION = (CONNECT_TIMEOUT= 90)(RETRY_COUNT=50) (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=50) (RETRY_DELAY=3) (ADDRESS_LIST = (LOAD_BALANCE=on) (ADDRESS = (PROTOCOL = TCP)(HOST=scan-host)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME = service-name)))
接続文字列に関するノート:
-
JDBCおよびODPクライアントの場合、プール接続の待機時間は、接続文字列の
CONNECT_TIMEOUT
より長くなるように構成する必要があります。 -
クライアントで簡易接続ネーミングを使用しないでください。このような接続には高可用性機能がありません。
tnsnames.ora
ファイルの詳細は、クライアント資格証明(ウォレット)のダウンロードを参照してください。
ドライバ固有のクライアント・オプションの構成
クライアントとドライバに応じて、Autonomous Databaseへの接続時にアプリケーション・コンティニティを使用するようにクライアントが適切に構成されていることを確認する必要があります
- JDBC Thinドライバの構成
JDBC Thinドライバを使用するクライアントでAutonomous Databaseとともに使用するための詳細を示します。 - Oracle Call Interface (OCI)ドライバの構成
Oracle Call Interface (OCI)ドライバを使用するクライアントでAutonomous Databaseとともにアプリケーション・コンティニュイティを使用するための詳細を表示します。 - ODP.NET非管理プロバイダ・ドライバの構成
ODP.NET非管理プロバイダ・ドライバを使用するクライアントでAutonomous Databaseとともにアプリケーション・コンティニュイティを使用するための詳細が表示されます。
JDBC Thinドライバの構成
JDBC Thinドライバを使用するクライアントでAutonomous Databaseとともに使用するための詳細を示します。
アプリケーションでJDBC Thinドライバを使用する場合は、次の推奨プラクティスに従います:
-
カバレッジおよびパフォーマンスのためのJDBC文キャッシュの使用
カバレッジおよびパフォーマンスを最適にするためには、アプリケーション・サーバーの文キャッシュのかわりにJDBCドライバの文キャッシュを使用します。これにより、ドライバは文がクローズされたことを認識でき、リクエストの最後にメモリーを解放できます。
JDBC文キャッシュを使用するには、接続プロパティ
oracle.jdbc.implicitStatementCacheSize
(OracleConnection.CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE)
を使用します。文キャッシュは接続ごとです。キャッシュ・サイズの値は、open_cursors
の数と一致します。たとえば、次のとおりです。oracle.jdbc.implicitStatementCacheSize=nnn
(nnn
は通常10から100の間で、アプリケーションが保持するオープン・カーソルの数と同じです)。 -
ガベージ・コレクタのチューニング
多くのアプリケーションでは、デフォルトのガベージ・コレクタ・チューニングで間に合います。大量のデータを返して保持するアプリケーションでは、より大きい値(2GB以上など)を使用できます。たとえば、次のとおりです。
java -Xms3072m -Xmx3072m
初期Javaヒープ・サイズ(ms)と最大ヒープ・サイズ(mx)のメモリー割当てを同じ値に設定することをお薦めします。これにより、メモリー・ヒープの拡大および縮小時にシステム・リソースが使用されることを回避します。
-
ユニバーサル接続プール(UCP)を使用する場合は、高速接続フェイルオーバーを無効にします。たとえば、次のとおりです。
PoolDataSource.setFastConnectionFailoverEnabled(false)
親トピック: ドライバ固有のクライアント・オプションの構成
Oracle Call Interface (OCI)ドライバの構成
Oracle Call Interface (OCI)ドライバを使用するクライアントでAutonomous Databaseとともにアプリケーション・コンティニュイティを使用するための詳細を示します。
クライアント・アプリケーションでOracle Call Interface (OCI)ドライバを使用する場合は、次の推奨プラクティスに従います:
-
OCIStmtPrepare
をOCIStmtPrepare2
に置き換えます。12.2以降、OCIStmtPrepare()
は非推奨になりました。すべてのアプリケーションでOCIStmtPrepare2()
を使用する必要があります。透過的アプリケーション・継続性(TAC)およびアプリケーション・継続性(AC)では、OCIStmtPrepare
は許可されますが、この文はリプレイされません。
ONSサーバーをoraaccess.xml
に構成しないでください:
<ons>
<servers>
<!—Do not enter any values -->
</servers>
</ons>
また、Autonomous Database Serverlessでは、<fan>セクションを構成しないでください:
<fan>
<!-- only possible values are "trace" or "error" -->
<subscription_failure_action>
</subscription_failure_action>
</fan>
親トピック: ドライバ固有のクライアント・オプションの構成
ODP.NET管理対象外プロバイダ・ドライバの構成
ODP.NET管理対象外プロバイダ・ドライバを使用するクライアントでAutonomous Databaseとともにアプリケーション・継続性を使用するための詳細を示します。
ODP.NET管理対象外プロバイダ・ドライバは、アプリケーションがAutonomous Databaseへの接続に使用するデータベース・サービスでアプリケーション・コンティニュイティが有効になっている場合に、自動的にアプリケーション・コンティニュイティを使用します。
ODP.NETアプリケーションをAutonomous Databaseサーバーレスに接続する場合、oraaccess.xml
にONSサーバーを構成しないでください:
<ons>
<servers>
<!—Do not enter any values -->
</servers>
</ons>
親トピック: ドライバ固有のクライアント・オプションの構成