有谁能写一下11g热备份中的全备份和7天增量备份SQL脚本,谢谢

解决方案 »

  1.   

    看看这个,不是11g上的,是10g的,http://bbs.inthirties.com/viewthread.jsp?tid=5&page=1
      

  2.   

    VERITAS 的脚本。把脚本添加到crontab里,每天晚上定时自动执行. 
    楼主修改下就可以用了. 脚本自动把结果发送到邮箱..还有,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=test
    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
      

  3.   

    脚本过长. 2部分 放一起就ok了..# ---------------------------------------------------------------------------
    # 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 pieceBACKUP
       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 "  [email protected] < $RMAN_LOG_FILE
    exit $RSTAT
      

  4.   

    我用的是windows2003,是要加到任务计划里,该怎么写?
      

  5.   

    写到bat批处理里, 在把这个bat 加入到计划任务中就可以了..
      

  6.   

    上面都给了呀,不过是linux下的脚本1. 准备rman命令的shell脚本
    如果是window系统的话,把上面的脚本转换为window下的脚本 bat2. 设置成任务,定时跑
    然后把corntab换成window下的计划任务就可以了呀无非就这两步
      

  7.   

    不好意思,我还不是很懂,能有转换成windows的脚本吗?
      

  8.   

    比如这样的写法RUN {
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'c:/whb/backup/%F';
    ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT 'c:/whb/backup/%U';
    BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10
    PLUS ARCHIVELOG FILESPERSET 20
    DELETE ALL INPUT;
    RELEASE CHANNEL CH1;
    }
      

  9.   


    这是rman的脚本
    这里除了路径,其他都是通用的你google或者baidu一下,网上有一些window的脚本的,但不知道是不是增量备份的。
      

  10.   

    有没有递增备份的rman脚本例子
      

  11.   


    这里就是增量备份的呀,不过不是window下的脚本,是linux下的,如果要window的话,回去给你写一个试好了,贴到文章里面。
      

  12.   

    #!/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=test
    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
      

  13.   

    能不能给我一个windows版本的,unix对我来说没用的,谢谢