linux下编写清理日志和oracle数据库临时数据的shell脚本
2018-05-21 22:47
239 查看
最近新系统上线,运行一个月后发现系统日志占用空间很大,数据库中流水表数据也达到了上千万条,所以编写该shell脚本用来定时清理日志和数据库临时数据。我们的系统应用日志是往一个日志文件中不停写入,不会按日期自动生成新日志文件
脚本dayend.sh内容如下
#!/bin/bash
cmd=zip
bt=zip
#cmd="tar cvzf"
#bt=tar.gz
dt=`date '+%Y%m%d'`
#数据库用户名密码
DBUSER=admin
DBPASS=admin
LOG_NAME=app.log
LOG_PATH=/home/admin/app/log
LOG_FILE=${LOG_PATH}/${LOG_NAME}
BAK_PATH=${LOG_PATH}
BAK_NAME=${LOG_NAME}.${dt}.${bt}
BAK_FILE=${BAK_PATH}/${BAK_NAME}
if [ ! -d ${LOG_PATH} ]; then
echo "${LOG_PATH} not exist..."
exit -1
fi
if [ ! -f ${LOG_FILE} ]; then
echo "${LOG_FILE} not exist..."
exit -1
fi
echo "清理交易日志开始..."
#打包日志
${cmd} ${LOG_FILE} ${BAK_FILE}
#清空日志cat /dev/null > ${LOG_FILE}
#删除三天前的日志压缩包
find ${BAK_PATH} -name "${LOG_NAME}*${bt}" -mtime +3 | xargs rm -rf
echo "清理交易日志结束..."
echo "清理流水表数据开始..."
sqlplus -s $DBUSER/$DBPASS <<EOF
set echo off
set feedback off
delete from sys_trans_h where (SYSDATE-TO_DATE(SUBSTR(trantime,1,8), 'YYYYMMDD'))>60;
insert into sys_trans_h (select * from sys_trans where (SYSDATE-TO_DATE(SUBSTR(trantime,1,8), 'YYYYMMDD'))>3);
delete from sys_trans where (SYSDATE-TO_DATE(SUBSTR(trantime,1,8), 'YYYYMMDD'))>3;
commit;
quit
EOF
echo "清理流水表数据完成..."
脚本比较简单,回到家里后手打的,并不是测试通过的版本,可能会有错误
相关文章推荐
- shell脚本之分析oracle数据库数据泵日志中表的大小
- linux利用shell脚本和cron实现定时备份、上传及垃圾日志清理(原创)
- linux通过awk命令,查询日志,分析数据,获取平均时间shell脚本
- linux利用shell脚本和cron实现定时备份、上传及垃圾日志清理(原创)
- 服务自动拉起,定时日志清理,数据统计的shell脚本
- Linux编写shell脚本处理Catalina.out长时间大量日志占用系统空间问题
- linux实战(二)----shell脚本监控实例-----日志截取三个命令在性能监控等运用中的实例解析
- 编写shell脚本查看linux当前各用户的cpu和memory消耗比例
- linux+shell+脚本+过滤NetScreen防火墙日志
- windows下编写的shell脚本如何在Linux运行
- linux环境下编写shell脚本实现启动停止tomcat服务的方法
- Linux 开机启动的 执行rc脚本(shell编写)的顺序
- linux执行windows编写的shell脚本出错
- 日志定时压缩清理shell脚本(日志文件后缀格式如xxxxx.log.2017-07-10)
- 【Shell】Linux操作系统中Shell脚本的编写
- linux下编写shell脚本
- shell脚本日志清理和压缩
- shell脚本批量导入数据到oracle数据库
- hive集群中间(临时)表定时清理shell脚本
- Linux下Oracle归档日志自动清理脚本代码(sh)