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 中的文件能删除吗...相关推荐
- 如何删除tmp计算机桌面,教你Win10系统中tmp文件删除不了应该如何解决?
电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到Win10系统中tmp文件删除不了应该如何解决的问题,如果我们遇到了Win10系统中tmp文件删除不了应该如何解决的情况 ...
- python上传大文件s3_使用Python boto3上传Windows EC2实例中的文件至S3存储桶中
一.创建终端节点 为什么要创建终端节点,把VPC和S3管理起来呢?如果不将VPC和S3通过终端节点管理起来,那么VPC中EC2实例访问S3存储桶是通过公共网络的:一旦关联起来,那么VPC中EC2实例访 ...
- .jar文件如何打开_如何干净的清除Windows系统中指定文件的默认打开方式?
研究了好久才找到的完美解决方案.我的问题如此(不过解决办法是通用的): 上古卷轴游戏中的文件,有一种.bsa格式后缀的文件.在没有设定打开方式的时候,它是白色的文件,即没有打开方式.但是使用WinRA ...
- python中文件打开的合法模式组合_详解python中各种文件打开模式
在python中,总的来说有三种大的模式打开文件,分别是:a, w, r 当以a模式打开时,只能写文件,而且是在文件末尾添加内容. 当以a+模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发 ...
- pyqt5生成py的文件为什么是c 语言,如何使用PyQt5在python中创建文件对话框
我有一个名为PDFviewer的python类,在运行该程序时,系统将显示一个窗口,该窗口处理button(打开文件夹),它将打开一个文件对话框,允许用户选择一个目录并显示其中的文件.在 问题是,当我 ...
- 没有权限访问储存此文件的计算机,win10你没有权限在此位置中保存文件的解决方法...
最近有朋友问小编win10系统提示你没有权限在此位置中保存文件怎么办,相信很多人都遇到过这种情况,有时我们在把文件保存到c盘中时会遇到错误提示:"你没有权限在此位置中保存文件.请与管理员联系 ...
- 在计算机窗口中打开文件夹选项,电脑无法在同一窗口打开文件夹怎么办?如何设置在电脑原窗口中打开文件夹...
最近有用户发现不知道进行什么设置后,当在电脑系统中打开文件夹时,总是以新的弹出窗口的形式打开,在很多级的情况下,会打开过多的窗口,十分不便.如果我们遇到了相同的情况,又该怎么设置才能让电脑在同一窗 ...
- linux 查找文件夹命令_如何从命令行在Linux中查找文件,文件夹和目录?
linux 查找文件夹命令 Linux provides different ways to find and locate files and folders. We can use GUI too ...
- ipados 文件 连接服务器,iPadOS 14 教程:如何管理 iPad 中的文件?
使用 iPad 文件管理,就必须了解一个 iPadOS 系统自带应用--「文件」.它就像是 Windows 上的「文件资源管理器」,或者是 macOS 上的「访达」. 「iCloud Drive」顾名 ...
- python列表写入csv文件_将多个列表写入csv。Python中的文件
我对Python(以及编程)还很陌生.我写了一个简短的程序,可以将一个专用文件夹的文件名读入字符串.在此之后,我将"提取"文件名中的信息(例如文档编号.标题等->:在示 ...
最新文章
- Cocos本地存储LocalStorage
- Talend Restful
- mysql 隐式锁和显示锁_锁的类型以及粒度,两段锁协议,隐式和显示锁
- 看微信了解MySQL及相关IT技术
- apk源码查看工具_如何查看Linux命令工具的源码?
- 新图表来袭,FineReport新增热力地图、漏斗图、图表切换新功能
- c语言从文件查找字符串,C语言文件中字符串的查找与替换?
- ConvMF论文解读
- IntelliJ IDEA开发工具插件GsonFormat插件安装使用
- 体脂率在线计算机,如何简单测算出自己的体脂率?
- Linux部署若依项目
- java新手入门学习指南
- IOS仿[自选股]项目开发
- 小米 11 ultra旗舰版官方原版ROM系统MIUI12.5所有固件
- mysql 原子操作
- 写好用户故事的10个提示
- 【话题】什么是前端工程化?
- 手写一个山寨版的springmvc框架
- NBA球星信息查询 需求描述 以下是一段包括球员信息的文本,要求编写一个程序,让用户能按照自己喜欢的球队查询其所有球员信 息,并格式化打印出来。 “Carmelo Anthony,Portland
- 计算机启动盘安装教程,u启动u盘启动盘制作工具制作u盘启动盘及u盘装系统教程...