Autonomous Databaseでのアプリケーション・コンティニュイティの構成
アプリケーション・コンティニュイティを構成するには、アプリケーションが使用するデータベース・サービスのアプリケーション連続性を有効化し、フェイルオーバー・タイプおよびドレイン・タイムアウトを構成する必要があります。 また、高可用性を有効にする複数の接続文字列パラメータを設定する必要があります。
- アプリケーション・コンティニュイティを有効にするためのサービスの構成
DBMS_APP_CONT_ADMIN
を使用して、アプリケーション・コンティニュイティまたは透過的アプリケーション・コンティニュイティを有効にします: - 高速アプリケーション通知(FAN)の使用
Autonomous Databaseに接続すると、OracleデータベースはFANを自動構成します。 Autonomous Databaseを含むアプリケーション・デプロイメントの場合、計画外停止の高速アプリケーション通知(FAN)イベントは、接続マネージャ(CMAN)に送信され、FANを使用するために必要なクライアント・アプリケーション構成ステップはありません。 - 高可用性のための接続文字列の構成
高可用性を維持するために、Oracleでは、Oracle Autonomous Databaseに接続するときに特定の接続文字列パラメータを設定することをお薦めします。 - ドライバ固有のクライアント・オプションの構成
クライアントおよびドライバに応じて、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でアプリケーション・コンティニュイティを使用するための詳細を示します。 - 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の間ですが、アプリケーションがメンテナンスするオープン・カーソル数と同じです。 -
ガベージ・コレクタのチューニング
多くのアプリケーションでは、デフォルトのガベージ・コレクタ・チューニングで十分です。 大量のデータを返すアプリケーションの場合、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>
親トピック: ドライバ固有のクライアント・オプションの構成