Linux定时备份Oracle数据库(shell脚本)

发布时间:2020-07-08编辑:脚本学堂
本文介绍了linux系统中使用shell脚本定时备份oracle数据库的方法,有需要的朋友参考下。

1、以Oracle用户登录linux系统。
如当前使用其他用户,可使用如下命令进入oracle用户。
 

复制代码 代码示例:
su - oracle 

1、创建备份脚本
 

复制代码 代码示例:
#!/bin/sh 
export ORACLE_BASE=/opt/oracle 
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 
export ORACLE_SID=orcl 
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin 
 
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 
 
export DATA_DIR=/opt/backup/data 
export LOGS_DIR=/opt/backup/logs 
export DELTIME=`date -d "7 days ago" +%Y%m%d` 
export BAKUPTIME=`date +%Y%m%d%H%M%S` 
 
mkdir -p $DATA_DIR 
mkdir -p $LOGS_DIR 
echo "Starting bakup..." 
echo "Bakup file path $DATA_DIR/$BAKUPTIME.dmp" 
exp andacms/andacms@orcl file=$DATA_DIR/$BAKUPTIME.dmp log=$LOGS_DIR/$BAKUPTIME.log 
 
echo "Delete the file bakup before 7 days..."   
rm -rf $DATA_DIR/$DELTIME*.dmp 
rm -rf $LOGS_DIR/$DELTIME*.log 
echo "Delete the file bakup successfully. "   
   
echo "Bakup completed."

注:此处的“export NLS_LANG=AMERICAN_AMERICA.AL32UTF8” 需要与数据库的字符集相同,否则备份会出现
EXP-00091: Exporting questionable statistics. 
 
输入命令查看
 

复制代码 代码示例:
SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET'; 
 
PARAMETER------------------------VALUE------------------------ 
NLS_CHARACTERSET          AL32UTF8 

2、添加定时执行任务
输入命令
crontab -e 
进入oracle用户的定时任务执行列表。
输入
 

复制代码 代码示例:
0 23 * * * /opt/backup/auto_backup.sh 
 

此处为每天晚上23点开始执行备份,具体时间 ,可参考Linux 的Cron表达式,可提供多种时间机制。