admin

ORACLE 备份脚本(expdp方式)

admin 数据库 2018-11-29 1906浏览 0

写一个oracle备份脚本,每天备份,然后保存7天!

 

采用数据泵的方式备份,首先要建立备份目录

查看默认备份目录,会显示对应的用户和其备份路径
select * from dba_directories;
对备份目录进行授权(DBDUMPdirectory名称,根据具体查询情况而定,mhsj为用户名)

grant read,write on directory DBDUMP to mhsj;
备注:
如果想新创建directory,则为如下语句:
SQL>create directory DBDUMP as '/home/dumpdata/';
如果要更改dumpdir目录的路径,则为如下语句:
SQL>create or replace directory DBDUMP as '/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 -e

30 21 * * * /home/oracle/db_bk.sh

 

版权声明

本站《作品展示》类文章均为原创,转载必须注明出处,技术分享类文章部分来源于网络,版权归原作者所有,若侵权请留言。

发表评论