写一个oracle备份脚本,每天备份,然后保存7天!
采用数据泵的方式备份,首先要建立备份目录
查看默认备份目录,会显示对应的用户和其备份路径
select * from dba_directories;
对备份目录进行授权(DBDUMP 为directory名称,根据具体查询情况而定,mhsj为用户名)
grant read,write on directory DBDUMP to mhsj;备注:
如果想新创建directory,则为如下语句:
SQL>create directory DBDUMP as '/home/dumpdata/';
如果要更改dumpdir目录的路径,则为如下语句:
SQL>create or replace directoryDBDUMPas '/home/dumpfiles';
如果需要赋予用户权限
SQL>grant read,write on directory DBDUMP to mhsj;
备份脚本#!/bin/bash
#
#about backup database
#set -x
#author mhsj.net
Dsid=ORCL #实例名
Duser=mhsj #用户
Dpasswd=mhsj #密码
PATCH_LOG="/var/log/oracle_dump.log"
Date=`date +"%Y%m%d"`
echo -en "`date "+%F %T "` \t" > $PATCH_LOG
[ ! -a $PATCH_LOG] && touch $PATCH_LOG
chmod 777 $PATCH_LOG
check_status()
{
if [ $? -eq 0 ]
then
echo -e "$1 $2 ... [ OK ] " |tee -a $PATCH_LOG
else
echo -e "\033[1;31;40m $1 $2...... [FAILED] \033[0m"
echo " $1 $2 ... [FAILED]" >> $PATCH_LOG
fi
}
dump_oracle()
{
echo "bakup Oracle database ...... Starting"
expdp $Duser/$Dpasswd@$Dsid directory=DBDUMP dumpfile="$Dsid-$Date.DMP" logfile="$Dsid-Date.log" >> $PATCH_LOG
check_status bakup Oracle
}
del_file()
{
find /home/dumpfiles/ -mtime +7 -type f | xargs rm -rf
#这里具体的路径根据数据泵的备份路径而定
}
dump_oracle && del_file
然后切换oracle用户
su - oracle
配置计划任务(每天晚上9点半)
crontab -e30 21 * * * /home/oracle/db_bk.sh