linux下编写清理日志和oracle数据库临时数据的shell脚本

最近新系统上线,运行一个月后发现系统日志占用空间很大,数据库中流水表数据也达到了上千万条,所以编写该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 "清理流水表数据完成..."


脚本比较简单,回到家里后手打的,并不是测试通过的版本,可能会有错误




  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值