日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle的diag文件可以删除,oracle11g rac diag/tnslsnr/pgis2/listener/alert 中的文件能删除吗...

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle的diag文件可以删除,oracle11g rac diag/tnslsnr/pgis2/listener/alert 中的文件能删除吗... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

滿意答案

yaoyangm

2016.08.03

采納率:47%????等級:12

已幫助:27962人

當然要對監聽日志文件(listener.log)進行定期清理,如果不定期清理,會遇到下面一些麻煩:

1:監聽日志文件(listener.log)變得越來越大,占用額外的存儲空間。(當然現在存儲白菜價,不差那幾G的空間。但是我們還是要本著工匠情懷,精益求精)

2:監聽日志文件(listener.log)變得太大會帶來一些問題:LISTENER.LOG日志大小不能超過2GB,超過會導致LISTENER監聽器無法處理新的連接。

3:監聽日志文件(listener.log)變得太大,給寫入、查看帶來的一些性能問題、麻煩。

也有人說是監聽服務進程一般使用標準C函數Write寫出到Listener.log,listener.log文件時使用的是O_WRONLY|O_CREAT|O_APPEND,O_APPEND即追加到文件的尾端,一般來說追加寫方式不會因為文件越大寫地越慢。撇開這個不談,在一個很大的監聽日志文件(listener.log)查找某一天或某一個錯誤,這個確實會帶來一些性能問題。查找起來也相當麻煩。

所以應該定期對監聽日志文件(listener.log)進行清理,另外一種說法叫截斷日志文件。關于截斷監聽日志,要注意一些問題。初學ORACLE的時候遇到一個錯誤的截斷監聽日志的,下面演示一下

[oracle@DB-Server log]$ mv listener.log listener.log.20150114

[oracle@DB-Server log]$ cp /dev/null listener.log

[oracle@DB-Server log]$ more listener.log

如上所示,這樣截斷監聽日志(listener.log)后,監聽服務進程(tnslsnr)并不會將新的監聽信息寫入listener.log,而是繼續寫入listener.log.20150114

[oracle@DB-Server log]$ tail listener.log.20150114

15-JAN-2015 22:40:01 * service_update * EPPS * 0

15-JAN-2015 22:47:59 * service_update * EPPS * 0

15-JAN-2015 22:58:00 * service_update * EPPS * 0

15-JAN-2015 23:08:00 * service_update * EPPS * 0

15-JAN-2015 23:18:01 * service_update * EPPS * 0

15-JAN-2015 23:28:01 * service_update * EPPS * 0

15-JAN-2015 23:38:02 * service_update * EPPS * 0

15-JAN-2015 23:41:02 * service_update * EPPS * 0

15-JAN-2015 23:50:26 * ping * 0

15-JAN-2015 23:51:03 * service_update * EPPS * 0

[oracle@DB-Server log]$ tail listener.log.20150114

15-JAN-2015 23:18:01 * service_update * EPPS * 0

15-JAN-2015 23:28:01 * service_update * EPPS * 0

15-JAN-2015 23:38:02 * service_update * EPPS * 0

15-JAN-2015 23:41:02 * service_update * EPPS * 0

15-JAN-2015 23:50:26 * ping * 0

15-JAN-2015 23:51:03 * service_update * EPPS * 0

15-JAN-2015 23:57:40 * ping * 0

15-JAN-2015 23:57:41 * ping * 0

15-JAN-2015 23:57:42 * ping * 0

15-JAN-2015 23:57:43 * ping * 0

[oracle@DB-Server log]$ more listener.log

[oracle@DB-Server log]$

規范正確的流程應該這么處理:

Step 1:首先停止監聽服務進程(tnslsnr)記錄日志。

[oracle@DB-Server log]$ lsnrctl set log_status off;

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 16-JAN-2015 00:02:59

Copyright (c) 1991, 2007, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.9.15)(PORT=1521)))

LISTENER parameter "log_status" set to OFF

The command completed successfully

Step 2:將監聽日志文件(listener.log)復制一份,以listener.log.yyyymmdd格式命名

[oracle@DB-Server log]$ cp listener.log listener.log.20150114

Step 3:將監聽日志文件(listener.log)清空。清空文件的方法有很多

3.1 echo “” > filename

3.2 cp /dev/null 或 echo /dev/null > filename

Step 4:開啟監聽服務進程(tnslsnr)記錄日志

[oracle@DB-Server log]$ lsnrctl set log_status on;

當然也可以移走監聽日志文件(listener.log),數據庫實例會自動創建一個listener.log文件。

% lsnrctl set log_status off

% mv listener.log listener.yyyymmdd

% lsnrctl set log_status on

當然這些操作應該通過shell腳本來處理,然后結合crontab作業定期清理、截斷監聽日志文件。例如網上的一個清理、截斷監聽日志文件的shell腳本。

rq=` date +"%d" `

cp $ORACLE_HOME/network/log/listener.log $ORACLE_BACKUP/network/log/listener_$rq.log

su - oracle -c "lsnrctl set log_status off"

cp /dev/null $ORACLE_HOME/network/log/listener.log

su - oracle -c "lsnrctl set log_status on"

這樣的腳本還沒有解決一個問題,就是截斷的監聽日志文件保留多久的問題。比如我只想保留這些截斷的監聽日志一個月時間,我希望作業自動維護。不需要我去手工操作。有這樣一個腳本cls_oracle.sh可以完全做到這個,當然它還會歸檔、清理其它日志文件,例如告警文件(alert_sid.log)等等。功能非常強大。

#!/bin/bash

#

# Script used to cleanup any Oracle environment.

#

# Cleans: audit_log_dest

# background_dump_dest

# core_dump_dest

# user_dump_dest

#

# Rotates: Alert Logs

# Listener Logs

#

# Scheduling: 00 00 * * * /home/oracle/_cron/cls_oracle/cls_oracle.sh -d 31 > /home/oracle/_cron/cls_oracle/cls_oracle.log 2>

&1

#

# Created By: Tommy Wang 2012-09-10

#

# History:

#

RM="rm -f"

RMDIR="rm -rf"

LS="ls -l"

MV="mv"

TOUCH="touch"

TESTTOUCH="echo touch"

TESTMV="echo mv"

TESTRM=$LS

TESTRMDIR=$LS

SUCCESS=0

FAILURE=1

TEST=0

HOSTNAME=`hostname`

ORAENV="oraenv"

TODAY=`date +%Y%m%d`

ORIGPATH=/usr/local/bin:$PATH

ORIGLD=$LD_LIBRARY_PATH

export PATH=$ORIGPATH

# Usage function.

f_usage(){

echo "Usage: `basename $0` -d DAYS [-a DAYS] [-b DAYS] [-c DAYS] [-n DAYS] [-r DAYS] [-u DAYS] [-t] [-h]"

echo " -d = Mandatory default number of days to keep log files that are not explicitly passed as parameters."

echo " -a = Optional number of days to keep audit logs."

echo " -b = Optional number of days to keep background dumps."

echo " -c = Optional number of days to keep core dumps."

echo " -n = Optional number of days to keep network log files."

echo " -r = Optional number of days to keep clusterware log files."

echo " -u = Optional number of days to keep user dumps."

echo " -h = Optional help mode."

echo " -t = Optional test mode. Does not delete any files."

}

if [ $# -lt 1 ]; then

f_usage

exit $FAILURE

fi

# Function used to check the validity of days.

f_checkdays(){

if [ $1 -lt 1 ]; then

echo "ERROR: Number of days is invalid."

exit $FAILURE

fi

if [ $? -ne 0 ]; then

echo "ERROR: Number of days is invalid."

exit $FAILURE

fi

}

# Function used to cut log files.

f_cutlog(){

# Set name of log file.

LOG_FILE=$1

CUT_FILE=${LOG_FILE}.${TODAY}

FILESIZE=`ls -l $LOG_FILE | awk '{print $5}'`

# Cut the log file if it has not been cut today.

if [ -f $CUT_FILE ]; then

echo "Log Already Cut Today: $CUT_FILE"

elif [ ! -f $LOG_FILE ]; then

echo "Log File Does Not Exist: $LOG_FILE"

elif [ $FILESIZE -eq 0 ]; then

echo "Log File Has Zero Size: $LOG_FILE"

else

# Cut file.

echo "Cutting Log File: $LOG_FILE"

$MV $LOG_FILE $CUT_FILE

$TOUCH $LOG_FILE

fi

}

# Function used to delete log files.

f_deletelog(){

# Set name of log file.

CLEAN_LOG=$1

# Set time limit and confirm it is valid.

CLEAN_DAYS=$2

f_checkdays $CLEAN_DAYS

# Delete old log files if they exist.

find $CLEAN_LOG.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] -type f -mtime +$CLEAN_DAYS -exec $RM {} \; 2>/dev/null

}

# Function used to get database parameter values.

f_getparameter(){

if [ -z "$1" ]; then

return

fi

PARAMETER=$1

sqlplus -s /nolog <

set head off pagesize 0 feedback off linesize 200

whenever sqlerror exit 1

conn / as sysdba

select 'a='||value from v\$parameter where name = '$PARAMETER';

EOF

}

# Function to get unique list of directories.

f_getuniq(){

if [ -z "$1" ]; then

return

fi

ARRCNT=0

MATCH=N

x=0

for e in `echo $1`; do

if [ ${#ARRAY[*]} -gt 0 ]; then

# See if the array element is a duplicate.

while [ $x -lt ${#ARRAY[*]} ]; do

if [ "$e" = "${ARRAY[$x]}" ]; then

MATCH=Y

fi

done

fi

if [ "$MATCH" = "N" ]; then

ARRAY[$ARRCNT]=$e

ARRCNT=`expr $ARRCNT+1`

fi

x=`expr $x + 1`

done

echo ${ARRAY[*]}

}

# Parse the command line options.

while getopts a:b:c:d:n:r:u:th OPT; do

case $OPT in

a) ADAYS=$OPTARG

;;

b) BDAYS=$OPTARG

;;

c) CDAYS=$OPTARG

;;

d) DDAYS=$OPTARG

;;

n) NDAYS=$OPTARG

;;

r) RDAYS=$OPTARG

;;

u) UDAYS=$OPTARG

;;

t) TEST=1

;;

00分享舉報

總結

以上是生活随笔為你收集整理的Oracle的diag文件可以删除,oracle11g rac diag/tnslsnr/pgis2/listener/alert 中的文件能删除吗...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。