RMAN 热备份脚本

#########################################################################­

## hot_database_backup.sh ##­

#########################################################################­

#!/bin/sh ­

# $Header: hot_database_backup.sh,v 1.9 2002/02/06 16:48:56 lstrub Stab $ ­

# ­

#bcpyrght ­

#*************************************************************************** ­

#* $VRTScprght: Copyright 1993 - 2002 VERITAS Software Corporation, All Rights Reserved $ * ­

#*************************************************************************** ­

#ecpyrght ­

# ­

# --------------------------------------------------------------------------- ­

#     hot_database_backup.sh ­

# --------------------------------------------------------------------------- ­

#  This script. uses Recovery Manager to take a hot (inconsistent) database ­

#  backup. A hot backup is inconsistent because portions of the database are ­

#  being modified and written to the disk while the backup is progressing. ­

#  You must run your database in ARCHIVELOG mode to make hot backups. It is ­

#  assumed that this script. will be executed by user root. In order for RMAN ­

#  to work properly we switch user (su -) to the oracle dba account before ­

#  execution. If this script. runs under a user account that has Oracle dba ­

#  privilege, it will be executed using this user's account. ­

# --------------------------------------------------------------------------- ­

# --------------------------------------------------------------------------- ­

# Determine the user which is executing this script. ­

# --------------------------------------------------------------------------- ­

­

CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1` ­

­

# --------------------------------------------------------------------------- ­

# Put output in .out. Change as desired. ­

# Note: output directory requires write permission. ­

# --------------------------------------------------------------------------- ­

RMAN_LOG_FILE=${0}.out ­

# --------------------------------------------------------------------------- ­

# You may want to delete the output file so that backup information does ­

# not accumulate.  If not, delete the following lines. ­

# --------------------------------------------------------------------------- ­

if [ -f "$RMAN_LOG_FILE" ] ­

then ­

rm -f "$RMAN_LOG_FILE" ­

fi ­

# ----------------------------------------------------------------- ­

# Initialize the log file. ­

# ----------------------------------------------------------------- ­

­

echo >> $RMAN_LOG_FILE ­

chmod 666 $RMAN_LOG_FILE ­

­

# --------------------------------------------------------------------------- ­

# Log the start of this script. ­

# --------------------------------------------------------------------------- ­

­

echo Script. $0 >> $RMAN_LOG_FILE ­

echo ==== started on `date` ==== >> $RMAN_LOG_FILE ­

echo >> $RMAN_LOG_FILE ­

­

# --------------------------------------------------------------------------- ­

# Replace /u01/app/oracle/product/10.2.0.3, below, with the Oracle home path. ­

# --------------------------------------------------------------------------- ­

ORACLE_HOME=/u01/app/oracle/product/10.2.0.3 ­

export ORACLE_HOME ­

# --------------------------------------------------------------------------- ­

# Replace ora81, below, with the Oracle SID of the target database. ­

# --------------------------------------------------------------------------- ­

ORACLE_SID=pinnsoft ­

export ORACLE_SID ­

# --------------------------------------------------------------------------- ­

# Replace oracle 10g, below, with the Oracle DBA user id (account). ­

# --------------------------------------------------------------------------- ­

ORACLE_USER=oracle ­

export ORACLE_USER ­

­

# --------------------------------------------------------------------------- ­

# Set the Oracle Recovery Manager name. ­

# --------------------------------------------------------------------------- ­

RMAN=$ORACLE_HOME/bin/rman ­

# -------------------------------------------------------------------------- ­

# Recovery Catalog Connect String ­

# -------------------------------------------------------------------------- ­

# --------------------------------------------------------------------------- ­

# Print out the value of the variables set by this script. ­

# --------------------------------------------------------------------------- ­

echo >> $RMAN_LOG_FILE ­

echo   "RMAN: $RMAN" >> $RMAN_LOG_FILE ­

echo   "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE ­

echo   "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE ­

echo   "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE ­

# --------------------------------------------------------------------------- ­

# Print out the value of the variables set by bphdb. ­

# --------------------------------------------------------------------------- ­

#echo  >> $RMAN_LOG_FILE ­

#echo   "NB_ORA_FULL: $NB_ORA_FULL" >> $RMAN_LOG_FILE ­

#echo   "NB_ORA_INCR: $NB_ORA_INCR" >> $RMAN_LOG_FILE ­

#echo   "NB_ORA_CINC: $NB_ORA_CINC" >> $RMAN_LOG_FILE ­

#echo   "NB_ORA_SERV: $NB_ORA_SERV" >> $RMAN_LOG_FILE ­

#echo   "NB_ORA_POLICY: $NB_ORA_POLICY" >> $RMAN_LOG_FILE ­

# --------------------------------------------------------------------------- ­

# NOTE: This script. assumes that the database is properly opened. If desired, ­

# this would be the place to verify that. ­

# --------------------------------------------------------------------------- ­

echo >> $RMAN_LOG_FILE ­

# --------------------------------------------------------------------------- ­

# If this script. is executed from a NetBackup schedule, NetBackup ­

# sets an NB_ORA environment variable based on the schedule type. ­

# The NB_ORA variable is then used to dynamically set BACKUP_TYPE ­

# For example, when: ­

#     schedule type is                BACKUP_TYPE is ­

#     ----------------                -------------- ­

# Automatic Full                     INCREMENTAL LEVEL=0 ­

# Automatic Differential Incremental INCREMENTAL LEVEL=1 ­

# Automatic Cumulative Incremental   INCREMENTAL LEVEL=1 CUMULATIVE ­

# ­

# For user initiated backups, BACKUP_TYPE defaults to incremental ­

# level 0 (full).  To change the default for a user initiated ­

# backup to incremental or incremental cumulative, uncomment ­

# one of the following two lines. ­

# BACKUP_TYPE="INCREMENTAL LEVEL=1" ­

# BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE" ­

# ­

# Note that we use incremental level 0 to specify full backups. ­

# That is because, although they are identical in content, only ­

# the incremental level 0 backup can have incremental backups of ­

# level > 0 applied to it. ­

# --------------------------------------------------------------------------- ­

­

if [ "$NB_ORA_FULL" = "1" ] ­

then ­

        echo "Full backup requested" >> $RMAN_LOG_FILE ­

        BACKUP_TYPE="INCREMENTAL LEVEL=0" ­

­

elif [ "$NB_ORA_INCR" = "1" ] ­

then ­

        echo "Differential incremental backup requested" >> $RMAN_LOG_FILE ­

        BACKUP_TYPE="INCREMENTAL LEVEL=1" ­

­

elif [ "$NB_ORA_CINC" = "1" ] ­

then ­

        echo "Cumulative incremental backup requested" >> $RMAN_LOG_FILE ­

        BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE" ­

­

elif [ "$BACKUP_TYPE" = "" ] ­

then ­

        echo "Default - Full backup requested" >> $RMAN_LOG_FILE ­

        BACKUP_TYPE="INCREMENTAL LEVEL=0" ­

fi ­

­

# --------------------------------------------------------------------------- ­

# Call Recovery Manager to initiate the backup. This example does not use a ­

# Recovery Catalog. If you choose to use one, replace the option 'nocatalog' ­

# from the rman command line below with the ­

# 'rcvcat /@' statement. ­

# ­

# Note: Any environment variables needed at run time by RMAN ­

#       must be set and exported within the switch user (su) command. ­

# --------------------------------------------------------------------------- ­

#  Backs up the whole database.  This backup is part of the incremental ­

#  strategy (this means it can have incremental backups of levels > 0 ­

#  applied to it). ­

# ­

#  We do not need to explicitly request the control file to be included ­

#  in this backup, as it is automatically included each time file 1 of ­

#  the system tablespace is backed up (the inference: as it is a whole ­

#  database backup, file 1 of the system tablespace will be backed up, ­

#  hence the controlfile will also be included automatically). ­

# ­

#  Typically, a level 0 backup would be done at least once a week. ­

# ­

#  The scenario assumes: ­

#     o you are backing your database up to two tape drives ­

#     o you want each backup set to include a maximum of 5 files ­

#     o you wish to include offline datafiles, and read-only tablespaces, ­

#       in the backup ­

#     o you want the backup to continue if any files are inaccessible. ­

#     o you are not using a Recovery Catalog ­

#     o you are explicitly backing up the control file.  Since you are ­

#       specifying nocatalog, the controlfile backup that occurs ­

#       automatically as the result of backing up the system file is ­

#       not sufficient; it will not contain records for the backup that ­

#       is currently in progress. ­

#     o you want to archive the current log, back up all the ­

#       archive logs using two channels, putting a maximum of 20 logs ­

#       in a backup set, and deleting them once the backup is complete. ­

# ­

#  Note that the format string is constructed to guarantee uniqueness and ­

#  to enhance NetBackup for Oracle backup and restore performance. ­

# ­

# ­

#  NOTE WHEN USING TNS ALIAS: When connecting to a database ­

#  using a TNS alias, you must use a send command or a parms operand to ­

#  specify environment variables.  In other words, when accessing a database ­

#  through a listener, the environment variables set at the system level are not ­

#  visible when RMAN is running.  For more information on the environment ­

#  variables, please refer to the NetBackup for Oracle Admin. Guide. ­

# ­

# --------------------------------------------------------------------------- ­

CMD_STR=" ­

ORACLE_HOME=$ORACLE_HOME ­

export ORACLE_HOME ­

ORACLE_SID=$ORACLE_SID ­

export ORACLE_SID ­

$RMAN nocatalog target /  msglog $RMAN_LOG_FILE append << EOF ­

RUN { ­

#ALLOCATE CHANNEL ch00 TYPE DISK; ­

change archivelog all crosscheck; ­

BACKUP ­

    $BACKUP_TYPE ­

    SKIP INACCESSIBLE ­

    TAG pinnsoft_hot_db_bk_level0 ­

    FILESPERSET 5 ­

    # recommended format ­

    FORMAT '/u01/app/backup/hotbackup/pinnsoft_%U_%t' ­

    DATABASE; ­

#To break backup into 3 piece ­

BACKUP ­

   FILESPERSET 20 ­

   FORMAT '/u01/app/backup/hotbackup/pinnsoft_%U_%t' ­

   ARCHIVELOG ALL DELETE INPUT; ­

#RELEASE CHANNEL ch00; ­

report obsolete; ­

delete noprompt obsolete; ­

#crosscheck backup; ­

#list backup summary; ­

} ­

" ­

EOF ­

# Initiate the command string ­

­

if [ "$CUSER" = "root" ] ­

then ­

    echo "Root Command String: $CMD_STR" >> $RMAN_LOG_FILE     ­

    su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE ­

    RSTAT=$? ­

else ­

    echo "User Command String: $CMD_STR" >> $RMAN_LOG_FILE     ­

    /usr/bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE ­

    RSTAT=$? ­

fi ­

­

# --------------------------------------------------------------------------- ­

# Log the completion of this script. ­

# --------------------------------------------------------------------------- ­

­

if [ "$RSTAT" = "0" ] ­

then ­

    LOGMSG="ended successfully" ­

else ­

    LOGMSG="ended in error" ­

fi ­

­

echo >> $RMAN_LOG_FILE ­

echo Script. $0 >> $RMAN_LOG_FILE ­

echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE ­

echo >> $RMAN_LOG_FILE ­

/usr/bin/mailx -s "RMAN Backup - PINNSOFT" jasoname@qq.com < $RMAN_LOG_FILE ­

exit $RSTAT­

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22741583/viewspace-684132/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22741583/viewspace-684132/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库热备份全过程包括以下步骤: 1. 配置归档模式:确保数据库处于归档模式下,这样可以将日志文件保存到归档日志目录中。 2. 创建备份目录:选择一个合适的位置,在磁盘上创建一个目录用于存储备份文件。 3. 创建备份脚本:使用RMAN(Recovery Manager)工具创建一个备份脚本,该脚本定义了备份的类型、备份目标和备份文件的保存位置等信息。 4. 执行备份脚本:运行备份脚本RMAN将自动执行备份操作。这个过程中,RMAN会读取数据库的数据文件,并将它们备份到指定的备份目录中。 5. 备份控制文件:在备份过程中,RMAN还会备份数据库的控制文件,控制文件是Oracle数据库的元数据之一,包含了数据库的结构信息。 6. 备份归档日志:在备份过程中,RMAN还会备份归档日志文件。这些日志文件是数据库的重要组成部分,记录了数据库中发生的所有事务操作。 7. 验证备份:备份完成后,可以通过RMAN工具验证备份文件的完整性和可用性。这个过程可以确保备份文件没有损坏,并且可以用于恢复数据库。 8. 将备份文件复制到备份服务器:为了提高备份的可靠性和安全性,可以将备份文件复制到备份服务器或者其他存储设备上。 总结起来,Oracle数据库热备份全过程包括配置归档模式、创建备份目录、创建备份脚本、执行备份脚本、备份控制文件、备份归档日志、验证备份以及复制备份文件到备份服务器等步骤。这样可以确保数据库的数据和日志文件都得到了完整备份,以便在需要时进行恢复操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值