LoginSignup
0

More than 3 years have passed since last update.

リスナーログのセグメント番号の上限を試す(Oracle Database 19c)

Posted at

リスナー・ログ

Oracle Database 19cから、リスナーのログファイルに自動ローテーション機能が付きました。この機能はデフォルトで有効になっています。ログファイルが一定サイズになると自動的に番号が付いたセグメント・ファイルが生成され、古いファイルを自動削除することができます。

$ cd $ORACLE_BASE/diag/tnslsnr/dbsrv-1/listener/trace
$ ls -li
total 2028
5796100 -rw-r-----. 1 oracle oinstall 529985 Nov 17 10:34 listener_1.log
6092293 -rw-r-----. 1 oracle oinstall 540743 Nov 17 10:38 listener_2.log
6092294 -rw-r-----. 1 oracle oinstall 540155 Nov 17 10:41 listener_3.log
6092295 -rw-r-----. 1 oracle oinstall 347884 Nov 17 10:43 listener.log

ファイル名の番号はalertディレクトリのXML形式のファイルにも付きます。

$ cd $ORACLE_BASE/diag/tnslsnr/dbsrv-1/listener/alert
$ ls -li
total 2028
5796100 -rw-r-----. 1 oracle oinstall 529985 Nov 17 10:34 log_1.log
6092293 -rw-r-----. 1 oracle oinstall 540743 Nov 17 10:38 log_2.log
6092294 -rw-r-----. 1 oracle oinstall 540155 Nov 17 10:41 log_3.log
6092295 -rw-r-----. 1 oracle oinstall 347884 Nov 17 10:43 log.xml

上限を探る

番号が大きくなった場合にどのような変化があるかを調査してみました。リスナーのパラメーターを以下のように設定します。

パラメーター 設定値 説明
LOG_FILE_NUM_listener 1 番号付きのセグメント・ファイルが1個だけ保存される
LOG_FILE_SIZE_listener 1 ログの最大値は1MB

大量の接続リクエストを投入してローテーションを強制し、ファイル名の変化を確認しました。

16ビット

リスナーを停止し、ログファイル名を以下のように変更します。

$ cd $ORACLE_BASE/diag/tnslsnr/dbsrv-1/listener/alert
$ mv log_1.xml log_65534.xml
$ cd ../trace
$ mv listener_1.log listener_65534.log
$ lsnrctl start listener

ログの書き込みを続けると、あっさり16ビットの上限を超えました。

$ ll
total 1148
-rw-r----- 1 oracle oinstall 1048917 Nov 17 14:57 log_65537.xml
-rw-r----- 1 oracle oinstall   58895 Nov 17 14:57 log.xml

32ビット

符号付き32ビットの上限である2,147,483,647に変更します。

$ cd $ORACLE_BASE/diag/tnslsnr/dbsrv-1/listener/alert
$ mv log_65537.xml log_2147483647.xml
$ cd ../trace
$ mv listener_65537.log listener_2147483647.log
$ lsnrctl start listener

ログの出力を継続すると、マイナスになりました。このことからセグメント・ファイルの上限は符号付き32ビットで保持していることがわかります。

$ ll
total 520
-rw-r----- 1 oracle oinstall 515830 Nov 17 15:02 listener_-2147483648.log
-rw-r----- 1 oracle oinstall   5430 Nov 17 15:02 listener.log

さらに負荷をかけていくと番号が大きくなっていきます。

$ ll
total 520
-rw-r----- 1 oracle oinstall 516499 Nov 17 15:04 listener_-2147483645.log
-rw-r----- 1 oracle oinstall   4465 Nov 17 15:04 listener.log

番号を-1に変更して再度テストを実施したところローテーションは行われなくなりました。

$ ll
total 2936
-rw-r----- 1 oracle oinstall  515920 Nov 17 15:06 listener_-1.log
-rw-r----- 1 oracle oinstall 2438590 Nov 17 15:10 listener.log

上記の結果からセグメント・ファイル番号の上限は4バイトの上限である4,294,967,295であるらしいことがわかりました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0