データベースについて調べてみた

データベースについて調べたことのメモ。Oracle要素多めになる予定。

Oracle19cと23cの初期化パラメータの差分について調べてみた ~その1~

先日からOCIのOracle Base Database Serviceで、新しいロングタームリリースであるOracle Database 23cが選択できるようになっていたため、1つ前のロングタームリリースの19cと23cで初期化パラメータの差を調べてみた。

 

0.調査方法

以前、19cと21cの初期化パラメータの差を調査したときと同様に、下記のSQLを19cと23cでそれぞれ実行し、差分を確認する。

SELECT
   name, default_value, isdeprecated, isses_modifiable, issys_modifiable, ispdb_modifiable,
   isinstance_modifiable, description, update_comment
FROM v$parameter ORDER BY name;

 

使用したOracle Databaseのバージョンは以下の通り。23cについては、現時点でOCI上でしか提供されていないため、もしオンプレ版とOCI版にデフォルト値などに若干の差異があることが判明した場合、本記事を後日更新したいと思う。

 

調査の結果、以下5種類の差分について確認できた。

  1. 23cでは廃止されたパラメータ
  2. 23cでは非推奨とされたパラメータ
  3. 19cと23cでデフォルト値が異なるパラメータ
  4. 19cと23cで設定可能範囲が変更されたパラメータ  ←本記事はここまで
  5. 19c→23cで新規登場したパラメータ

 

1.廃止されたパラメータ

23cで廃止されたパラメータは5つ。これらは全て19cの時点で非推奨になっていた。

パラメータ パラメータ概要
cluster_database_instances クラスタ・データベースの一部として構成されたインスタンスの数
log_archive_start インスタンス起動時にARCHプロセスを自動起動させるか
remote_os_authent OS_AUTHENT_PREFIXパラメータ値でリモート・クライアント認証させるか
sec_case_sensitive_logon データベースにおけるパスワードの大/小文字の区別を有効とするか
unified_audit_sga_queue_size 統合監査用のSGAキューのサイズ

※cluster_database_instancesについては、23cでは隠しパラメータとなっていた。

 

 

2.非推奨とされたパラメータ

23cで非推奨とされたパラメータは5つ。

パラメータ パラメータ概要
audit_file_dest 従来型監査における監査証跡の出力先ディレクト
audit_syslog_level 従来型監査におけるSYSおよび標準OS監査レコードをシステム監査ログへ書き込む際にSYSLOGを使用する際の設定
audit_trail 従来型監査の使用設定
encrypt_new_tablespaces 新しく作成されるユーザ表領域の暗号化実施設定
pre_page_sga 統合監査用のSGAキューのサイズ

3つのaudit_*のパラメータは、23cから従来型監査が非サポートになったため、encypt_new_tablespacesは、代わりとなるtablespace_encryptionの利用が推奨されたため、pre_page_sgaは殆ど性能に寄与せず問題の原因となることから、23cから非推奨となったようだ。

 

 

3.デフォルト値が変わったパラメータ

19cと23cでデフォルト値に差があったパラメータは16個あった。ただし、shared_serversについては、値が大きすぎる(もしくは負数?)のと、マニュアル上ではデフォルト値が19cでも0で差がないので、差のあるパラメータは15個と考えてよい気がする。

パラメータ 19cの値 23cの値 パラメータ概要
audit_sys_operations TRUE FALSE SYSxx権限(SYSDBA, SYSASMなど)を使用して直接発行されたユーザーSQL文の監査を有効または無効にする
awr_pdb_autoflush_enabled FALSE TRUE CDB内のすべてのPDBまたはCDB内の個々のPDBに対して、AWRスナップショットの自動取得を有効または無効にする
compatible   23.0.0 Oracle Databaseを動作させるバージョンを指定
db_lost_write_protect NONE AUTO 欠落した書込みの検出機能の使用有無を指定
db_securefile PERMITTED PREFERRED LOBをSecurefileとして動作させるかの指定
enable_pluggable_database FALSE TRUE CDB構成でデータベースを起動するか
max_datapump_jobs_per_pdb 100 AUTO PDBごとの同時Oracle Data Pumpジョブの最大数
max_datapump_parallel_per_job 50 AUTO Oracle Data Pumpジョブごとに許可されるパラレル処理の最大数
max_dump_file_size unlimited 32M トレースファイルの最大サイズ(Byte)
object_cache_optimal_size 10240000 51200000 オブジェクトキャッシュサイズ最大サイズを超えた場合にセッションオブジェクトキャッシュを縮小する際のサイズ(Byte)
optimizer_features_enable 19.1.0 23.1.0 オプティマイザを動作させるバージョン
permit_92_wrap_format TRUE FALSE Oracle9iR2以前でラップしたバージョンのPL/SQLソース・テキストを使用できる様にするか
plsql_warnings NONE DISABLE:ALL PL/SQLコンパイラによる警告メッセージに関する設定
shared_servers 4294967294 0 インスタンスの起動時に作成する共有サーバープロセスの数
spatial_vector_acceleration FALSE TRUE 空間ベクトル・パフォーマンス・アクセラレータ(VPA)機能を使用するか
use_dedicated_broker TRUE NONE 専用サーバの起動にブローカ使用する/しないを設定

23cでは非CDB構成がサポート対象外であることからenable_pluggable_databaseはTRUEに、Oracle Spatialのオプションライセンスが不要になったことから、spatial_vector_accelerationもTRUEになったと考えられる。

db_lost_write_protectのデフォルト値が23cからAUTOになっていたが、現時点の23cのマニュアルには、AUTOに関する記述がない。DataGuardを構成している場合に、スタンバイDBの適用ラグが大きい場合のI/O待機を改善するために実装された値のようだ。そこまで詳細は記載されていないが、サポート契約を締結されている方は、Doc ID:2910785.1をご参照いただきたい。

db_securefileのデフォルト値が23cからPREFERREDになったことから、このパラメータをデフォルト値で運用した場合、LOBデータ列を含むテーブルを作成するCREATE TABLE文のSTORAGE句内で、明示的にBASICFILEが指定されていないと、LOBはSecureFiles形式で作成される様になる。何らかの事情でBasicFilesにしたい場合は、本パラメータを調整するか、CREATE TABLE文を修正するなどの対応を検討する必要がある。
※なお、マニュアルの記述上では19cでもデフォルト値がPREFERREDであるのに、私が確認した環境(COMPATIBLE=19.0.0)ではPERMITTEDであったが、これは19cのバグによるものであるとのことだった。

 

4.設定可能範囲に変更があったパラメータ

19cと23cで設定可能範囲(SESSION/SYSTEMでの変更、PDB単位での変更)に差があったパラメータは9つ。ただし、aq_tm_processesとclient_statistics_levelについては、マニュアル上では差がなかったが、19cではaq_tm_processesはSESSION単位での変更ができたのでドキュメントバグと考えられる。client_statistics_levelについては、19cのPDB環境が用意できたら確認してみようと思う。

パラメータ 23cでの変更点 パラメータ概要
aq_tm_processes SESSION単位での変更が不可 AQ(qmon)の起動プロセス数
client_statistics_level PDB単位での変更が可 DBクライアントがDBにNW統計を報告するかどうかを制御
db_file_name_convert SYSTEM/PDB単位での変更が可 プライマリDB上のデータファイル名をスタンバイDB上のファイル名に変換する際のパターン
distributed_lock_timeout SYSTEM/PDB単位での変更が可 分散トランザクションがロックされているリソースを待機する秒数
fast_start_parallel_rollback PDB単位での変更が可 終了したトランザクションリカバリ並列度を指定
log_file_name_convert SYSTEM単位での変更が可 プライマリDB上のログファイル名をスタンバイDB上のファイル名に変換する際のパターン
processes SYSTEM単位での変更が可 Oracleユーザプロセスの最大数
shrd_dupl_table_refresh_rate SESSION単位での変更が可 シャード内で重複した表のリフレッシュ間隔(秒)
unified_audit_systemlog SYS単位での変更が可 統合監査レコードのキーフィールドをSYSLOG(Windowsの場合はイベントビューア)に出力するかを設定

 

23cで新規追加されたパラメータは多数あるため、次回に。

 

 

前回の記事:Oracle Autonomous DatabaseでAWRやアラートログの取り方を調べてみた