您的位置:首页 > 运维架构 > Shell

Linux shell crontab expdp 定时任务逻辑备份 定时删除旧文件

2017-08-21 15:27 846 查看
创建sh脚本

[oracle@localhost ~]$ vi logicbackup.sh

添加脚本内容

#!/bin/sh

# ##################################################################

#             Powered by Ironfo

# ##################################################################

# Oracle Environment settings 

ORACLE_BASE=/usr/local/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1;  export ORACLE_HOME 

PATH=$ORACLE_HOME/bin:/usr/local/bin:/usr/ccs/bin:$PATH:/usr/sbin

export PATH

CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib ; export CLASSPATH

backup_dir=$ORACLE_BASE/admin/orcl/dpdump

#可以创建数据泵目录directory,这里指定默认的目录

#SQL>CREATE DIRECTORY dump_backup_dir as '/u01/oradata/dump_backup_dir';

#SQL>grant read,write on directory dump_backup_dir to user;  

DMP_FILE=PH_$(date +%Y%m%d_%H%M%S).dmp

LOG_FILE=PH_$(date +%Y%m%d_%H%M%S).log

#

#  Let's start with an export of the database 

expdp user/pwd@orcl schemas=schema_name DUMPFILE=$DMP_FILE logfile=$LOG_FILE compression=all;

#expdp user/pwd@orcl schemas=schema_name DIRECTORY=$dump_backup_dir DUMPFILE=$DMP_FILE logfile=$LOG_FILE compression=all parallel=3;

# 这里的2个说明,用户名和密码换成自己的,我这里是备份表空间。

# parallel 这个参数是控制并行度的,默认是1,但对于数据库比较大的时候,可以设置parallel,这样可以较少备份的

#时间,但是设置并行会耗CPU 资源,如果CPU 资源比较紧张的话,就不要设了。

#

# Just to be safe (with space), we'll compress the export file

# 压缩dmp 文件,较少对空间的占用

#compress *.dmp

#

# Let's delete the backups and logs that are more than 1 days old

# 删除2天前PH_开头的dmp文件



cd $backup_dir

find $backup_dir -mtime +2 -name "PH_*"  -exec rm -f {} \;

# That's all

:wq
保存并退出

设置权限

[oracle@localhost ~]$ chmod 777 ./logicbackup.sh

添加定时任务

[oracle@localhost ~]$ crontab -e
#每6小时执行一次 错误信息将输出到 tmp/expdp.log 文件中
* */6 * * * /home/oracle/logicbackup.sh > /tmp/expdp.log 2>&1

查看任务

[oracle@localhost ~]$ crontab -l
* */6 * * * /home/oracle/logicbackup.sh > /tmp/expdp.log 2>&1
[oracle@localhost ~]$

crontab -r 删除定时任务


crontab 前面5个*参数的意义:

0~59 表示分 

1~23 表示小时 

1~31 表示日 

1~12 表示月份 

0~6 表示星期(其中0表示星期日)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息