[OCI]Autonomous Databaseに関するよくある誤解と実際のところどうなのかをまとめてみた

# はじめに

Autonomous Databaseに関して、古い情報に基づくよくある誤解と、現状は実際のところどうなのかをまとめてみました。

# 1. 文字コード（文字セット）がUTF8で固定されている

以前は文字コード（文字セット）がUTF8（AL32UTF8）で固定されていましたが、現在はAutonomous Databaseインスタンスの作成時にコンソールから文字セットを指定できるようになっています。
![スクリーンショット 2022-10-11 16.52.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/c76a36bd-999e-443d-8076-83198efc90c1.png)


# 2. SYSDATE、SYSTIMESTAPの戻り値がUTCになる

以前は、SYSDATE、SYSTIMESTAMPの戻り値のタイムゾーンがUTCで固定となっていましたが、現在はALTER DATABASE文でデータベースのタイムゾーンを'+09:00'に変更し、新しく導入されたパラメータ「SYSDATE_AT_DBTIMEZONE」をTRUEにすることで、SYSDATEおよびSYSTIMESTAMPの戻り値を日本時間にすることができます。

手順の詳細は、こちらの記事をご参照ください。

https://qiita.com/500InternalServerError/items/c893dfe46a6c45975c72

パラメータ「SYSDATE_AT_DBTIMEZONE」の詳細については、こちらのマニュアルをご参照ください。

https://docs.oracle.com/cd//E83857_01/paas/autonomous-database/adbsa/autonomous-initialization-parameters.html#GUID-1D5E830F-2986-4E6C-AF8F-899AC3C85D07

# 3. クライアントから接続する際にウォレットファイルのダウンロードと設定が必要

以前は、クライアントアプリケーションからAutonomous Databaseに接続する際には、クライアント認証のためのウォレットファイルをコンソールからダウンロードして設定する必要がありましたが、現在は以下の条件を満たす場合にはウォレットなしでの接続を許可することが可能になっています。

・パブリック・エンドポイントのAutonomous DatabaseでネットワークACLが設定されている
または
・プライベート・エンドポイントのAutonomous Database

Autonomous Databaseでウォレットなしでの接続を許可するための手順は、こちらの記事をご参照ください。

https://qiita.com/500InternalServerError/items/6822718140afc4e8884e

ウォレットなしで接続できる各種クライアントの詳細については、こちらのマニュアルをご参照ください。

https://docs.oracle.com/cd//E83857_01/paas/autonomous-database/adbsa/support-tls-mtls-authentication.html#GUID-9CE65D24-BCA2-47E1-B508-8AEFEF2FCB3E

# 4. 他のOracle Databaseに対してデータベース・リンクを作成する際に、既存のリスナー（Oracle Net Listener）の設定変更が必要
以前は、すべてのケースにおいて、ターゲットとなる既存のOracle DatabaseのOracle Net ListenerがTCPS接続を受け付けるように設定を変更し、ターゲットDBへの接続に必要なウォレットファイルをAutonomous Databaseにアップロードする必要がありました。

現在は、Autonomous Databaseがプライベートエンドポイントにデプロイされ、FastConnectやIPSec VPNを利用したプライベート・ネットワーク経由で既存のOracle Databaseに接続する場合は、既存のリスナーを変更することなく、データベース・リンクが作成できるようになっています。

Autonomous Databaseでのデータベース・リンクの作成に関する詳細は、こちらのマニュアルをご参照ください。

https://docs.oracle.com/cd//E83857_01/paas/autonomous-database/adbsa/database-links.html#GUID-28F06977-300F-4599-AD97-2DEF67EF5FEA

# 5. 定期メンテナンス実施中はAutonomous Databaseが使用できない

Autonomous Databaseは週末に定期メンテナンスがあります。
Autonomous Databaseは、Exadata内にある複数のノードによるRAC構成となっており、インスタンスやノードの再起動を伴うパッチ適用等のメンテナンスはローリング適用を採用しています。
そのため、メンテナンス対象となるノードに接続していたクライアントのセッションの瞬断はありえますが、メンテナンス中でもデータベースとしては停止しませんので、再接続すればすぐに処理を継続することが可能です。
Oracle Databaseの透過的アプリケーション・コンティニュイティを使用することで、一般的なアプリケーションではメンテナンス時にセッション断が発生しても、自動的にオンラインのノードに再接続し、トランザクションを継続することができます。
（データベース外部とのやりとりが発生する処理や複数回のCOMMITを含むPL/SQLプロシージャ等のバッチ処理には透過的アプリケーション・コンティニュイティでは対応できません）

Autonomous Databaseでは、デフォルトでは透過的アプリケーション・コンティニュイティが無効になっていますが、DBMS_APP_CONT_ADMIN.ENABLE_ACプロシージャで接続サービス（HIGH/MEDUIM/LOW等）ごとに簡単に有効にできます。

たとえば、リプレイ・タイムアウトが20分に設定されたTPサービスの透過的アプリケーション・コンティニュイティを有効にするには以下のようなコマンドでDBMS_APP_CONT_ADMIN.ENABLE_TACプロシージャを実行します。

```
execute DBMS_APP_CONT_ADMIN.ENABLE_TAC('databaseid_tp.adb.oraclecloud.com', 'AUTO', 1200);
```

上記のコマンドで透過的アプリケーション・コンティニュイティを有効にし、対応するバージョンのクライアントを使用することで、定期メンテナンス時にセッションの瞬断が発生した場合でも、自動的に再接続して処理中のトランザクションを続行することができます。

サポートされているクライアント・ドライバの詳細は、こちらのマニュアルをご参照ください。

https://docs.oracle.com/cd//E83857_01/paas/autonomous-database/adbsa/application-continuity-code.html#GUID-7A9D4F16-B529-4AE7-ADE4-E7F84A614214

Autonomous Databaseのアプリケーション・コンティニュイティに関する詳細は、こちらのマニュアルをご参照ください。

https://docs.oracle.com/cd//E83857_01/paas/autonomous-database/adbsa/application-continuity1.html#GUID-E7AA2543-2CF3-4A42-9440-BB238BA679AE

Oracle Databaseのアプリケーション・コンティニュイティに関する詳細は、こちらの資料をご参照ください。

https://speakerdeck.com/oracle4engineer/apurikesiyonkonteiniyuitei

# 6. Oracle JVMが利用できない
以前は、Autonomous DatabaseではOracle JVMの利用はサポートされていませんでしたが、現在はAutonomous DatabasでもOracle JVMが利用できるようになっています。
デフォルトではOracle JVMは無効になっていますので、Autonomous DatabaseでOracle JVMを利用するためにはOracle JVMを有効にする必要があります。

Autonomous DatabaseでOracle JVMを有効にするには、以下のプロシージャを実行します。
```
BEGIN
   DBMS_CLOUD_ADMIN.ENABLE_FEATURE(
       feature_name => 'JAVAVM' );
END;
/
```

Oracle JVMの利用に関する詳細は、こちらのマニュアルをご参照ください。

https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/autonomous-oracle-java.html#GUID-2516EE33-B38D-4270-BE52-30A4F9014E8B

# 7. RAT（Real Application Testing）のSPA（SQL Performance Analyzer）は利用できるが、Database Replayは利用できない

従来は、Autonomous Databaseで利用できるRATの機能はSPA（SQL Performance Analyzer）のみでしたが、現在はDatabase Replayも利用できるようになっています。

Autonomous DatabaseでDatabase Replayを利用する際の詳細は、こちらのドキュメントをご参照ください。

https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/autonomous-real-application-testing.html

RAT（Real Application Testing）の詳細については、こちらのドキュメントをご参照ください。

https://docs.oracle.com/cd/F19136_01/ratug/index.html

# まとめ
Autonomous Databaseは日々進化を続けており、従来あった課題も新機能や機能アップデートによって数多く解消されています。
こちらのマニュアルや技術資料でアップデート内容を確認できますので、ぜひ定期的にチェックしてみてください。

https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsn/index.html#ADBSN-GUID-F31A86F8-012B-4235-A0BE-4ABF75164853

https://speakerdeck.com/oracle4engineer/adb-service-update-jp-fy23

https://speakerdeck.com/oracle4engineer/adb-service-update-jp