sh 脚本备份oracle metadata

来源:互联网 发布:淘宝频繁退货会怎样 编辑:程序博客网 时间:2024/06/05 13:55

环境:rhel6.8+oracle 11g

实时库  数据量10T左右  但是大部分数据都是定期删除的 所以整体的数据量基本维持在这个水平线上,没有做rman备份,所以以防万一,做了个数据库的metadata备份。

每天定期备份  并删除7天前的备份数据


1. sh脚本:

#!/bin/sh

##################################################################
#metadata backup 

##################################################################

ORACLE_BASE=/u01/oracle/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=ycfkdb1; export ORACLE_SID
PATH=$ORACLE_HOME/bin:/usr/local/bin:/usr/sbin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
EXP_NAME=`date -d now +%F`; export EXP_NAME
DMP_DIR=/backup/script; export DMP_DIR
DUMPFILE=METADATA_$EXP_NAME.dmp; export DUMPFILE
LOGFILE=METADATA_$EXP_NAME.log; export LOGFILE


rm -f $DMP_DIR/METADATA_$EXP_NAME.dmp;
rm -f $DMP_DIR/METADATA_$EXP_NAME.log;


expdp system/
****** directory=DMP_METADATA schemas=scott dumpfile=$DUMPFILE logfile=$LOGFILE content=METADATA_ONLY;


RM_NAME=`date -d "-
7 days" +%F`; export RM_NAME


rm -f $DMP_DIR/METADATA_$RM_NAME.dmp;
rm -f $DMP_DIR/METADATA_$RM_NAME.log;
 

2. crontab脚本:

10 0 * * * /bin/sh /backup/script/metadata_backup.sh


3. 遇到的问题和解决办法:

1. expdp密码中有特殊字符   用\ 转义

2. 想输出sh的log,就把这个metadata_backup.sh嵌套在另一个.sh里面,

并加上:LOG_NAME=`date -d now +%F`; export EXP_NAME

/backup/script/metadata_backup.sh > BACKUP_$LOG_NAME   2>&1(感觉这种方法比较笨,不知道有没有更好的方法)

3. sh里面的日期格式  EXP_NAME=`date -d now +%F`;  ` 这个是1左面的按钮 不是单引号。。

4. 2>&1 指将标准信息输出路径指定为错误信息输出路径----------------这个之前没用过。