Autonomous Databaseでのアプリケーション・コンティニュイティの構成
アプリケーション・コンティニュイティを構成するには、アプリケーションが使用するデータベース・サービスのアプリケーション連続性を有効化し、フェイルオーバー・タイプおよびドレイン・タイムアウトを構成する必要があります。 また、高可用性を有効にする複数の接続文字列パラメータを設定する必要があります。
アプリケーション・コンティニュイティを有効にするためのサービスの構成
DBMS_APP_CONT_ADMINを使用して、アプリケーション・コンティニュイティまたは透過的アプリケーション・コンティニュイティを有効にします:
-
Application Continuity (AC): プロシージャ
DBMS_APP_CONT_ADMIN.ENABLE_ACを使用して、このフェイルオーバー・オプションを設定します。ENABLE_ACプロシージャは3つのパラメータを使用:SERVICE NAMEは、変更するサービス名、FAILOVER_RESTORE、LEVEL1に設定してアプリケーションContinuity(AC)を選択し、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 -
Transaction Processingまたは「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 -
Transaction Processingまたは「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となり、Transparent Application Continuity (TAC)が有効であること、およびtpurgentサービスのFAILOVER_TYPE値がTRANSACTIONになり、アプリケーション・コンティニュイティ(AC)が有効になっていることを示します。
高速アプリケーション通知(FAN)の使用
Autonomous Databaseに接続すると、OracleデータベースはFANを自動構成します。 Autonomous Databaseを含むアプリケーション・デプロイメントの場合、計画外停止の高速アプリケーション通知(FAN)イベントは、接続マネージャ(CMAN)に送信され、FANを使用するために必要なクライアント・アプリケーション構成ステップはありません。
FANは、クライアント・ドライバおよびAutonomous Database Connection Manager (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は、すべてのOracleクライアント・バージョン12.2以上に使用します:
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)))
Oracleドライバ・バージョン12.1以前を使用している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でアプリケーション・コンティニュイティを使用するための詳細を表示します。
アプリケーションでJDBC Thinドライバを使用する場合は、次の推奨事項に従ってください:
-
保護およびパフォーマンスのためにJDBCステートメント・キャッシュを使用
最善の適用範囲とパフォーマンスを得るには、アプリケーション・サーバー文キャッシュのかわりにJDBCドライバ文キャッシュを使用します。 これにより、ドライバでは、文がクローズされ、リクエストの最後にメモリーが解放されることがわかります。
JDBC文キャッシュを使用するには、接続プロパティ
oracle.jdbc.implicitStatementCacheSize(OracleConnection.CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE)を使用します。 文キャッシュは接続ごとです。 キャッシュ・サイズの値は、open_cursorsの数と一致します。 たとえば:oracle.jdbc.implicitStatementCacheSize=nnnは、nnnが通常は10から100の間ですが、アプリケーションがメンテナンスするオープン・カーソル数と同じです。 -
ガベージ・コレクタのチューニング
多くのアプリケーションでは、デフォルトのガベージ・コレクタ・チューニングで十分です。 大量のデータを返すアプリケーションの場合、2 Gb以上の値を使用できます。 たとえば:
java -Xms3072m -Xmx3072m
Javaの初期ヒープ・サイズ(ミリ秒)と最大ヒープ・サイズ(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()を使用する必要があります。 Transparent Application Continuity (TAC)およびアプリケーション・コンティニュイティ(AC)では、OCIStmtPrepareを使用できますが、この文はリプレイしません。
oraaccess.xmlでONSサーバーを構成しないでください:
<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 Unmanaged Providerドライバは、アプリケーションがAutonomous Databaseへの接続に使用するデータベース・サービスでアプリケーション・コンティニュイティが有効になっているときに、自動的にアプリケーション・コンティニュイティを使用します。
ODP.NETアプリケーションをAutonomous Database Serverlessに接続する場合は、oraaccess.xmlでONSサーバーを構成しないでください:
<ons>
<servers>
<!âDo not enter any values -->
</servers>
</ons>