linux Oracle 定时自动备份
centos 6.5 x64, oracle 11g
脚本代码
orclback.sh
#!/bin/sh
#su - zhishiku
#路径名,指定备份的路径
FILEPATH='/home/zhishiku/OracleBackup/'
#根据指定日期格式,定义备份数据库文件名
FILENAME=`date +%Y%m%d_%H%M`
#切换至指定路径,并创建文件夹
cd $FILEPATH
mkdir $FILENAME
chmod 775 $FILENAME
cd $FILENAME
#oracle变量设置
export USER=zhishiku;
export ORACLE_SID=ZHISHIKU;
export ORACLE_HOME=/usr/local/oracle/11g;
export PATH=$ORACLE_HOME/bin:$PATH;
#导出数据库 这里使用了exp 可以根据需要使用expdp
exp zhishiku/z9z7w7w8@ZHISHIKU file=${FILEPATH}${FILENAME}"/"${FILENAME}".dmp" log= ${FILEPATH}${FILENAME}"/"${FILENAME}".log" owner=zhishiku;
#打包+加压
cd ..
tar -zcf $FILENAME.tar.gz $FILENAME
rm -rf $FILENAME
##gzip $FILENAME.tar
exit
EOF
设定脚本执行时间
我们设定规则为每天凌晨2点执行一次,采用crontab来进行处理
执行crontab -e,设定如下规则
0 2 * * * sh /home/oracle/db.sh
—以下内容不用看——
关于linux在shell中获取系统时间
获得当天的日期 date +%Y%m%d
输出: 20170823
需要使用今天之前或者往后的日期,这时可以使用date的 -d参数
获取明天的日期 date -d next-day +%Y%m%d
获取前几天的日期 date -d “7 days ago” +%Y%m%d
获取昨天的日期 date -d last-day +%Y%m%d
—以下内容不用看——
使用expect命令完成密码交互
expect命令主要用于脚本中出现必须人工干预的情况下,预先输入指令,模拟的场景为使用expect命令捕捉到提示输入指令的文字,一旦文字出现,自动使用send命令输入需要交互的命令。
此处使用为:
expect “*password:”#此处填写系统提示文字
send “your password\r”#此处填写我们输入的交互命令
expect eof