oracle 11g的監(jiān)聽日志和警告日志都是在/opt/oracle/app/diag/tnslsnr/機器名/listener目錄
在高坪等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站設計、網(wǎng)站建設 網(wǎng)站設計制作按需網(wǎng)站建設,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,成都品牌網(wǎng)站建設,營銷型網(wǎng)站,成都外貿網(wǎng)站建設,高坪網(wǎng)站建設費用合理。
其中警告日志在alert目錄下,監(jiān)聽日志在trace目錄下。listener目錄下產(chǎn)生的日志文件比較大,是主要清理的對象。在listener目錄下監(jiān)聽日志是一個名為listener.log的文件,而警告日志log.xml,這個日志每到11M左右就會分割成一個log_XXXX.xml的日志,逐漸累加。
是否不需要對監(jiān)聽日志文件進行截斷維護呢? 答案是否定的。當然要對監(jiān)聽日志文件(listener.log)進行定期清理,如果不定期清理,會遇到下面一些麻煩:
1、監(jiān)聽日志文件(listener.log)變得越來越大,占用額外的存儲空間。(當然現(xiàn)在存儲白菜價,不差那幾G的空間。但是我們還是要本著工匠情懷,精益求精)。
2、監(jiān)聽日志文件(listener.log)變得太大會帶來一些問題:LISTENER.LOG日志大小不能超過2GB,超過會導致LISTENER監(jiān)聽器無法處理新的連接。
3、監(jiān)聽日志文件(listener.log)變得太大,給寫入、查看帶來的一些性能問題、麻煩。
一、單機實例:
$ find $ORACLE_BASE -name listener.log
/opt/oracle/app/diag/tnslsnr/testdb/listener/trace/listener.log
LSNRCTL> show
The following operations are available after show
An asterisk (*) denotes a modifier or extended command:
rawmode displaymode
rules trc_file
trc_directory trc_level
log_file log_directory
log_status current_listener
inbound_connect_timeout startup_waittime
snmp_visible save_config_on_stop
dynamic_registration enable_global_dynamic_endpoint
oracle_home pid
LSNRCTL> show log_file
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521)))
LISTENER parameter "log_file" set to /opt/oracle/app/diag/tnslsnr/testdb/listener/alert/log.xml
The command completed successfully
show log_status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521)))
LISTENER parameter "log_status" set to ON
The command completed successfully
show log_directory
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521)))
LISTENER parameter "log_directory" set to /opt/oracle/app/diag/tnslsnr/testdb/listener/alert
The command completed successfully
監(jiān)聽目前處于正常狀態(tài),日志功能也打開,后來一想,原來是日志文件大小已滿
處理:
1:首先 停止日志
LSNRCTL> set log_status off
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521)))
LISTENER parameter "log_status" set to OFF
The command completed successfully
LSNRCTL> exit
2、到目錄/opt/oracle/app/diag/tnslsnr/wskjdb/listener/trace
mv listener.log listener.log.bak
3、開啟日志
LSNRCTL> set log_status on
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521)))
LISTENER parameter "log_status" set to ON
The command completed successfully
4、重新加載監(jiān)聽器
LSNRCTL> reload
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521)))
The command completed successfully
LSNRCTL> exit
LSNRCTL> show log_status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521)))
LISTENER parameter "log_status" set to ON
The command completed successfully
5、目錄下重新生成新的日志,壓縮保存$tar czvf listener.log.bak.gz listener.log.bak
6、刪除原有的日志:rm -rf listener.log.bak
二、在RAC環(huán)境中,需要切換到grid用戶來查詢監(jiān)聽日志
#su - grid
lsnrctl命令行模式
set current_listener listener_scan1
set log_status off
cat /dev/null > listener_scan1.log
set log_status on
cat listener_scan1.log
三、通過使用crontab來定時清理:
使用定時器來清理監(jiān)聽日志文件其實和上面操作類似,腳本如下:
$listener_log.sh
#!/bin/bash
data_name=`date +'%d%m'`
cd /opt/oracle/app/diag/tnslsnr/wskjdb/listener/trace
lsnrctl set log_status off
mv listener.log /tmp/listener.log.$data_name
lsnrctl set log_status on
lsnrctl reload
制定crontab任務:0 1 * * * /home/oracle/listener_log.sh > /home/oracle/listener_log.log 2>&1
執(zhí)行時間和保留策略都是可以自己制定的,通過crontab可以擺脫手工操作,通過系統(tǒng)自動去執(zhí)行維護操作。