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
を使用して、アプリケーション・コンティニュイティまたは透過的アプリケーション・コンティニュイティを有効にします:
-
アプリケーション・コンティニュイティ(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);
-
透過的アプリケーション・コンティニュイティ(TAC): このフェイルオーバー・オプションは、プロシージャ
DBMS_APP_CONT_ADMIN.ENABLE_TAC
を使用して設定します。ENABLE_TAC
プロシージャは、3つのパラメータを取ります。SERVICE NAME
は変更するサービス名、FAILOVER_RESTORE
、AUTO
に設定して透過的アプリケーション・コンティニュイティ(TAC)を選択します。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 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は、バージョン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
は許可されますが、この文はリプレイされません。
oraaccess.xml
でONSサーバーを構成しないでください。
<ons>
<servers>
<!—Do not enter any values -->
</servers>
</ons>
また、Autonomous Databaseサーバーレスの場合は、<fan>セクションを構成しないでください。
<fan>
<!-- only possible values are "trace" or "error" -->
<subscription_failure_action>
</subscription_failure_action>
</fan>
親トピック: ドライバ固有のクライアント・オプションの構成
ODP.NET管理対象外プロバイダ・ドライバの構成
ODP.NET管理対象外プロバイダ・ドライバを使用して、クライアントでAutonomous Databaseでアプリケーション・コンティニュイティを使用するための詳細を示します。
アプリケーションがAutonomous Databaseへの接続に使用するデータベース・サービスでアプリケーション・コンティニュイティが有効になっている場合、ODP.NET管理対象外プロバイダ・ドライバは、アプリケーション・コンティニュイティを自動的に使用します。
ODP.NETアプリケーションをAutonomous Databaseサーバーレスに接続する場合、oraaccess.xml
でONSサーバーを構成しないでください:
<ons>
<servers>
<!—Do not enter any values -->
</servers>
</ons>
親トピック: ドライバ固有のクライアント・オプションの構成