zoukankan      html  css  js  c++  java
  • 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 <this file name>.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 <userid>/<passwd>@<tns alias>' 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­

  • 相关阅读:
    数论练习(5)——青蛙的约会(扩gcd)
    数论练习(4)——同余方程(扩gcd)
    数论练习(3)——相同后三位(快速幂)
    s if标签
    spring获取webapplicationcontext,applicationcontext几种方法详解
    Java精确测量代码运行时间 代码执行时间 纳秒 nanoTime
    java中使用二进制进行权限控制
    hibernate注解配置举例说明
    js日期处理
    Spring 简单而强大的事务管理功能
  • 原文地址:https://www.cnblogs.com/datalife/p/1985458.html
Copyright © 2011-2022 走看看