监控linux操作数据库日志,Linux任务:监控大日志文件和数据库备份

一、关于c r o n

这两个任务都用到了Linux的后台服务 c r o n, c r o n是系统主要的调度进程,可以在无需人工干预的情况下运行作业。检查在某个用户下是否有任务执行用下面的命令,有则列出,无则显示no crontab for user。

1、没有crontab:

[root@nod1 ~]# crontab -l

no crontab for root

[root@nod1 ~]#

2、定义了crontab

[oracle@nod1 ~]$ crontab -l

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=oracle

HOME=/

# Export ECampus Data & Backup to the Tape Storage

30 1 * * * /u01/oraback/db_backup.sh

# Find the files while larger than 8M at 1am everyday

0 1 * * * echo "*************************************" >> /u01/oraback/log.find

1 1 * * * echo `date` >> /u01/oraback/log.find

2 1 * * * find /u01/app/oracle/product/10.1.0/db_1/ -size +8388608c -exec ls -l {} ; >> /u01/oraback/files.find

3、前提条件

要使用 c r o n服务,必须安装vixie-cron RPM软件包,而且必须在运行了crond服务的条件下。

检查软件包是否已安装:

[root@nod1 ~]# rpm -q vixie-cron

vixie-cron-4.1-36.EL4

[root@nod1 ~]#

要判定该服务是否在运行,使用/sbin/service crond status命令:

[root@nod1 ~]# service crond status

crond (pid 4516) is running...

[root@nod1 ~]#

如果服务没有启动,用/sbin/service crond start 命令启动。

二、任务定义的意义

1、监控大文件

为什么要监控大文件呢?其实主要的目的是想监控oracle数据库的日志文件的大小。Oracle的一些进程不会切换日志,当数据库运行了很长一段时间后,这些日志文件的大小就会变得很惊人。像前段时间的Portal,有2个日志文件甚至达到了7.5G和2.6G,这就导致了服务器的I/O消耗很大,影响服务的运行。

2、数据库备份

数据库备份的重要性就不冗述了。

三、用find命令监控大文件

Find命令的一般形式为:

find pathname -options [-print -exec -ok]。

这里对find命令的详细语法也不冗述。

下面就是查找大文件的命令:

find /u01/app/oracle/product/10.1.0/db_1/ -size +8388608c -exec ls -l {} ; >> /u01/oraback/files.find

意思是:查找$ORACLE_HOME下的文件大小大于8M的文件,并执行ls –l命令,将结果写到指定的监控日志文件中files.find中。

四、定时备份数据库,并存储到磁带库的脚本

脚本如下:

#文件名:db_backup.sh

#路径:/u01/oraback/

#定义shell中使用的变量

str=`date +'%Y%m%d'`

BACKUP_DIR=/u01/oraback

#运行Oracle用户的bash_profile,设置当前运行的一些环境变量

cd /home/oracle

. .bash_profile

#开始

echo "****************************************************************" >> $BACKUP_DIR/Backup.log

#用datapump命令导出znuel_dev的方案

expdp username/******** schemas=username directory=oraback dumpfile=$str.dmp logfile=$str.log

echo `date +'%Y%m%d %H:%M:%S'` "Step 1:EXPDP Finished!" >> $BACKUP_DIR/Backup.log

echo "Directory:$BACKUP_DIR" >>$BACKUP_DIR/Backup.log

echo "DumpFile: $BACKUP_DIR/$str.dmp" >> $BACKUP_DIR/Backup.log

echo "LogFile:$BACKUP_DIR/$str.log" >> $BACKUP_DIR/Backup.log

#压缩dmp和log文件

cd $BACKUP_DIR

tar -czvf $str.tar.gz $str.dmp $str.log

echo `date +'%Y%m%d %H:%M:%S'` "Step 2:Compress Finished!" >> $BACKUP_DIR/Backup.log

echo "File:$BACKUP_DIR/$str.tar.gz" >> $BACKUP_DIR/Backup.log

#备份压缩文件到磁带库

tar -rvf /dev/st0 $str.tar.gz

echo `date +'%Y%m%d %H:%M:%S'` "Step 3:Backup to Tape Storage Finished!" >> $BACKUP_DIR/Backup.log

#删除15天前的文件,即本地只备份15天的数据

find $BACKUP_DIR -name "*.dmp" -mtime +15 -exec rm {} ;

find $BACKUP_DIR -name "*.log" -mtime +15 -exec rm {} ;

find $BACKUP_DIR -name "*.tar.gz" -mtime +15 -exec rm {} ;

echo `date +'%Y%m%d %H:%M:%S'` "Step 4:Delete Expired Files Finished!" >> $BACKUP_DIR/Backup.log

echo `date +'%Y%m%d %H:%M:%S'` "All Step Finished!" >> $BACKUP_DIR/Backup.log

#End

五、定义crontab

在Oracle用户下用crontab –e命令创建定时任务:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=oracle

HOME=/

# Export ECampus Data & Backup to the Tape Storage

30 1 * * * /u01/oraback/db_backup.sh

# Find the files while larger than 8M at 1am everyday

0 1 * * * echo "*************************************" >> /u01/oraback/log.find

1 1 * * * echo `date` >> /u01/oraback/log.find

2 1 * * * find /u01/app/oracle/product/10.1.0/db_1/ -size +8388608c -exec ls -l {} ; >> /u01/oraback/files.find

定义完后:wq,crontab就会自动生成oracle用户的任务文件,存放在/var/spool/cron中的以用户名命令的文件中。

cron守护进程每分钟都检查/etc/crontab文件、etc/cron.d/目录、以及/var/spool/cron目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个crontab文件改变后就不必重新启动守护进程了。[@more@]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值