oracle数据定时备份

流程:

1.root用户登录linux服务器

2.mkdir -p /backup/oracledata  #新建Oracle数据库备份目录

3.chown -R  oracle:oinstall /backup/oracledata -R #设置目录权限为oinstall用户组的oracle用户(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)

4.新建Oracle数据库备份脚本 ,以下部分copy出来放到一个文件中,这里命名为ordatabak.sh(或者用命令vi /backup/oracledata/ordatabak.sh),我用的FinalShell,直接建好文件拖进去

----------------------------------------------

#!/bin/sh

export ORACLE_BASH=/data/oracle

export ORACLE_HOME=/data/oracle/product/11.2.0/dbhome_1

export ORACLE_SID=orcl

export ORACLE_TERM=xterm

export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export LANG=en_US.UTF-8

export NLS_LANG="AMERICAN_AMERICA".AL32UTF8

date=`date +%Y_%m_%d`

#保留最近三天的备份记录

days=3

#连接oracle的地址

orsid=`xx.xx.xx.xxx:1521/orcl`

#以下修改为自己数据库的配置

orowner=xxxx

bakuser=xxxx

bakpass=xxxx

#备份到此文件夹,需要先建好

bakdir=/backup/oracledata

bakdata=$orowner"_"$date.dmp

baklog=$orowner"_"$date.log

ordatabak=$orowner"_"$date.tar.gz

cd $bakdir

mkdir -p $orowner

cd $orowner

echo "现在开始进行数据备份..."

exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog

echo "数据备份结束..."

echo "现在开始进行压缩备份数据..."

tar -zcvf $ordatabak $bakdata  $baklog

echo "压缩备份数据结束..."

echo "删除备份数据开始..."

find $bakdir/$orowner  -type f -name "*.log" -exec rm {} \;

find $bakdir/$orowner  -type f -name "*.dmp" -exec rm {} \;

find $bakdir/$orowner  -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;

echo "删除备份数据结束..."

echo "备份执行完毕..."

----------------------------------------------

5.sudo chmod 777 /backup/oracledata/ordatabak.sh,文件权限,这里我给了所有权限,可以按需给

  chmod +x /backup/oracledata/ordatabak.sh  #给这个脚本赋予执行的权限,定时任务后面才可执行

6.vi /etc/crontab  #编辑linux系统定时任务计划,添加以下代码到最后一行

30 3 * * * oracle  /backup/oracledata/ordatabak.sh  #也就是每天凌晨3点30分,以oracle用户执行ordatabak.sh备份文件

7.:wq! #保存退出

8.crontab /etc/crontab #加载任务,使之生效 。每天凌晨3:30会定时执行脚本备份数据,主要是考虑系统有很多定时任务在0点执行,待任务执行完再备份

9.执行systemctl status crond,查看任务的状态,Active: active(running),则系统任务状态正常,查看任务:crontab -l,是否有设置的任务

PS:几个相关命令

systemctl enable crond (设为开机启动)

systemctl start crond(启动crond服务)

systemctl status crond (查看状态)

$ crontab -u 用户名 -l (列出用户的定时任务列表)

你可能感兴趣的:(oracle数据定时备份)