Oracle Database 19cとOracle Database 21cの初期化パラメーターを比較する

Oracle Database 21c のオンプレミス版が[ダウンロード](https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html)できるようになったため、Oracle Database 19c (19.12) と初期化パラメーターを比較してみました。基本的にデフォルト状態でデータベースを作成し、インスタンス名やファイルのパス等環境によって変化するパラメーターは比較対象から除いています。SQL*Plus から SYSDBA 接続を行い、SHOW PARAMETER コマンドの結果を比較しています。
　Oracle Database 19c は RU を更新すると初期化パラメーターが追加されることがあったため、Oracle Database 21c でも同じような状態になる可能性があります。

# 削除されたパラメーター

削除されたパラメーターは４つだけです。sec_case_sensitive_logon は Oracle Database 10g 以前のパスワードを受け付けるためのパラメーターですので不要になったということでしょう。

|パラメーター名|説明|
|:---|:---|
|cluster_database_instances|クラスタ・データベースの一部として構成されたインスタンスの数|
|remote_os_authent|OS_AUTHENT_PREFIX パラメータ値でリモート・クライアントが認証されるか|
|sec_case_sensitive_logon|パスワードの大文字／小文字を区別|
|unified_audit_sga_queue_size|統合監査用のSGAキューのサイズを指定|

# 追加されたパラメーター

27 個の初期化パラメーターが追加されています。20c をキャンセルしたせいか、追加されたパラメーターは多めです。セキュリティ関連やブロックチェーン関連、オプティマイザに関連する初期化パラメーターが追加されています。ただし[マニュアル（日本語版）](https://docs.oracle.com/cd/F39414_01/refrn/index.html) や[マニュアル（英語版）](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/index.html)の更新が間に合わないらしく、現時点（2021/8/15）ではいくつかの初期化パラメーターが記載されていません。また Oracle Database 20c で追加された初期化パラメーターがマニュアルから抜けていることがあります。

|パラメーター名|説明|デフォルト値|備考|
|:---|:---|:---|:---|
|allow_deprecated_rpcs|非推奨のrpcsを許可する（マニュアル無）|YES||
|auto_start_pdb_services|PDBオープン時にサービスを起動？（マニュアル無）|FALSE||
|dbnest_enable|dbNestを有効（マニュアル無）|NONE|[20cのマニュアル](https://docs.oracle.com/cd/F32587_01/refrn/DBNEST_ENABLE.html#GUID-2F30C9D3-808E-42CD-ADA6-595FAE518A60)には説明あり|
|dbnest_pdb_fs_conf|PDBのdbNestファイル・システム構成ファイルを指定（マニュアル無）||[20cのマニュアル](https://docs.oracle.com/cd/F32587_01/refrn/DBNEST_PDB_FS_CONF.html#GUID-46477A8F-7DEF-4DD0-BE11-C040B316AB2B)には説明あり|
|diagnostics_control|安全でない可能性のあるデータベース診断操作を実行するユーザーを制御（マニュアル無）|IGNORE|[20cのマニュアル](https://docs.oracle.com/cd/F32587_01/refrn/DIAGNOSTICS_CONTROL.html#GUID-FEE54A94-D0AD-4337-AA63-5F63953DC667)には説明あり|
|drcp_connection_limit|DRCPの接続数制限？（マニュアル無）|0||
|enable_per_pdb_drcp|DRCPがCDB全体に対して1つの接続プールを構成するか、PDBごとに1つ構成するかを制御|FALSE||
|heartbeat_batch_size|ハートビート・バッチ・サイズを構成|FALSE||
|hybrid_read_only|用途不明（マニュアル無）|FALSE||
|inmemory_deep_vectorization|ディープ・ベクトル化フレームワークを有効化|TRUE||
|kafka_config_file|Kafka設定ファイルのパス？（マニュアル無）|||
|mandatory_user_profile|CDBまたはPDBの必須ユーザー・プロファイルを指定|||
|native_blockchain_features|ブロックチェーン機能の有効化？（マニュアル無）|||
|optimizer_capture_sql_quarantine|SQL隔離構成の自動作成を制御|FALSE||
|optimizer_cross_shard_resiliency|クロスシャードクエリの復元力のある実行を制御？（マニュアル無）|FALSE||
|optimizer_use_sql_quarantine|オプティマイザがSQL隔離構成を考慮するか|TRUE||
|pkcs11_library_location|（マニュアル無）|PKCS#11用ライブラリのパス？（マニュアル無）||
|pmem_filestore|データベースが自動的にマウントする永続メモリー・ファイルストア（マニュアル無）||[20cのマニュアル](https://docs.oracle.com/cd/F32587_01/refrn/PMEM_FILESTORE.html#GUID-9A958EBA-9010-423A-BC73-96A4E6C27E4F)には説明あり|
|read_only|書き込み操作の制御？（マニュアル無）|FALSE||
|resource_manager_cpu_scope|リソースマネージャが CPU の情報を制御する範囲？（マニュアル無）|INSTANCE_ONLY||
|result_cache_execution_threshold|PL/SQLファンクションの結果が結果キャッシュに格納されるまでに実行可能な最大回数|2||
|result_cache_max_temp_result|キャッシュされる単一の問合せ結果が利用できるRESULT_CACHE_MAX_TEMP_SIZEの割合|5||
|result_cache_max_temp_size|結果キャッシュで利用できる一時表の最大量|120M||
|shard_queries_restricted_by_key|用途不明（マニュアル無）|FALSE||
|tablespace_encryption_default_algorithm|表領域の暗号化時にデータベースで使用されるデフォルトのアルゴリズム|AES128||
|tde_key_cache|透過的データ暗号化(TDE)マスター暗号化キーの共有を制御|FALSE||
|timezone_version_upgrade_online|タイムゾーン・データをアップグレードする際に、データベースを通常モードで実行|FALSE||

わかりやすい名前のパラメーターが多い一方で READ_ONLYという身もふたもない名前の初期化パラメーター（しかもマニュアルに記載なし）が増えており、検証が必要になると思われます。

# デフォルト値が変更されたパラメーター
以下の表はデフォルト値の変更が確認できたパラメーターです。

|パラメーター名|Oracle Database 19c|Oracle Database 21c|備考|
|:---|:---|:---|:---|
|background_dump_dest|{ORACLE_HOME}/rdbms/log|{ORACLE_BASE_HOME}/rdbms/log||
|compatible|19.0.0|21.0.0||
|dg_broker_config_file1|{ORACLE_HOME}/dbs/dg_broker_config_file1|{ORACLE_BASE_HOME}/dbs/dr1{ORACLE_SID}.dat||
|dg_broker_config_file2|{ORACLE_HOME}/dbs/dg_broker_config_file2|{ORACLE_BASE_HOME}/dbs/dr2{ORACLE_SID}.dat||
|drcp_dedicated_opt|YES|NO||
|optimizer_features_enable|19.1.0|21.1.0||
|permit_92_wrap_format|TRUE|FALSE||
|result_cache_max_size|4064K|12M||
|spatial_vector_acceleration|FALSE|TRUE||
|spfile|{ORACLE_HOME}/dbs/spfile{ORACLE_SID}.ora|{ORACLE_BASE_CONFIG}/dbs/spfile{ORACLE_SID}.ora||
|target_pdbs|3|4|マニュアル無|
|use_large_pages|FALSE|TRUE||
|user_dump_dest|{ORACLE_HOME}/rdbms/log|{ORACLE_BASE_HOME}/rdbms/log||

上記からわかる通り、デフォルトで「読み取り専用の Oracle ホーム」機能が有効になっています。これはソフトウェアがインストールされる{ORACLE_HOME}と設定ファイル群を別ディレクトリに分離する機能で、Oracle Database 18c から利用できました。Oracle Database 21c ではデフォルト設定になっているようです。