2008年1月17日木曜日

lsnrctl

■[リスナーのログ出力を動的に停止する方法]
% lsnrctl
LSNRCTL> set current_listener <リスナー名> <= オプション(リスナー名が
LISTENER ではない場合)
LSNRCTL> set log_status OFF <= 出力停止
LSNRCTL> set log_status ON <= 出力開始

 ※上記手順の場合は、出力停止中の間にリスナーログをmv,rm,compress 等を
  実施します。
  set log_status ON を実行してログ出力を再開する際に、該当リスナーが指定
  する名称のログファイルが存在しない場合は、set log_status ON のタイミング
  で新規ファイルが自動生成されます。
  (新規ファイル自動生成時は、「DD-MON-YY HH24:MI:SS * log_status * 0」
   というような出力が1行目に出力されて作成されます。)
■リスナーを停止せず listener.log を連続性を保ったまま新しく出力させる方法


[対処]
lsnrctl ユーティリティの set log_file コマンドを使用することで可能です。
以下の手順例をご参考下さい。

例)
現在のファイル名を listener.log とします。

1. 以下のコマンドを使用し、新たに listener1.log を出力させるようにします。

% lsnrctl
LSNRCTL> set log_file listener1.log

# この時点で、listener.log があるディレクトリに
# 新たに listener1.log というファイルが作成され、
# 今後はこのファイル上にロギングが行なわれます。

2. 現在の listener.log をリネームします。

% mv listener.log listener.log.20030507

3. 再度、現在のファイル名 listener1.log を
以下のコマンドを使用し、listener.log と元の名前で
出力させるようにします。

% lsnrctl
LSNRCTL> set log_file listener.log

これにより、listener.log の再作成が行なわれたことになります。
また、listener.log.20030507, listener1.log そして現在の listener.log と、
その間の連続性は失われてはいません。