• Oracle RMAN 备份一例


    Oracle RMAN备份一例:
    Solaris 10 + Oracle 11.2.0.3
    Shell:csh,安装有bash,脚本调用bash
    备份策略:周日0级备份,周一~周六1级备份,每6小时备份归档日志,每天清理历史文件夹.
    --0级备份脚本:
    #!/bin/bash
    #db0 level backup
    foldername=`date +%Y%m%d`
    cd /oradata1/backup
    if [ -d $foldername ]
    then
            echo    'go on'
    else
            echo    'need mkdir'
            mkdir $foldername
    fi
    
    export ORACLE_BASE=/opt/app/oracle/
    export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1/
    export ORACLE_SID=SHIRNOP
    export NLS_LANG="simplified chinese_china.ZHS16GBK"
    export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
    export PATH=/bin:/usr/bin:/usr/ucb:/etc:$ORACLE_HOME/bin:.
    
    rman target /  log=/oradata1/backup/$foldername/full_LOG.log << RMAN_BACKUP
    run{
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oradata1/backup/$foldername/controlfile%F';
    allocate channel c1 device type disk;
    allocate channel c2 device type disk;
    allocate channel c3 device type disk;
    allocate channel c4 device type disk;
    backup incremental level 0 tag 'db0' database format '/oradata1/backup/$foldername/db0_%d_%T_%s' include current controlfile;
    delete noprompt obsolete;
    release channel c1;
    release channel c2;
    release channel c3;
    release channel c4;
    }
    RMAN_BACKUP
    --1级备份脚本:
    #!/bin/bash
    #db1 level backup
    foldername=`date +%Y%m%d`
    cd /oradata1/backup
    if [ -d $foldername ]
    then
            echo    'go on'
    else
            echo    'need mkdir'
            mkdir $foldername
    fi
    
    export ORACLE_BASE=/opt/app/oracle/
    export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1/
    export ORACLE_SID=SHIRNOP
    export NLS_LANG="simplified chinese_china.ZHS16GBK"
    export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
    export PATH=/bin:/usr/bin:/usr/ucb:/etc:$ORACLE_HOME/bin:.
    
    rman target /  log=/oradata1/backup/$foldername/incr_LOG.log << RMAN_BACKUP
    run{
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oradata1/backup/$foldername/controlfile%F';
    allocate channel c1 device type disk;
    allocate channel c2 device type disk;
    allocate channel c3 device type disk;
    allocate channel c4 device type disk;
    backup incremental level 1 tag 'db1' database format '/oradata1/backup/$foldername/db1_%d_%T_%s' include current controlfile;
    delete noprompt obsolete;
    release channel c1;
    release channel c2;
    release channel c3;
    release channel c4;
    }
    RMAN_BACKUP
    --归档备份
    #!/bin/bash
    #arch backup
    foldername=`date +%Y%m%d`
    cd /oradata1/backup
    if [ -d $foldername ]
    then
            echo    'go on'
    else
            echo    'need mkdir'
            mkdir $foldername
    fi
    
    export ORACLE_BASE=/opt/app/oracle/
    export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1/
    export ORACLE_SID=SHIRNOP
    export NLS_LANG="simplified chinese_china.ZHS16GBK"
    export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
    export PATH=/bin:/usr/bin:/usr/ucb:/etc:$ORACLE_HOME/bin:.
    
    rman target /  log=/oradata1/backup/$foldername/arch_LOG.log << RMAN_BACKUP
    run{
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
    allocate channel c1 device type disk;
    allocate channel c2 device type disk;
    sql 'alter system archive log current';
    backup archivelog all delete input format '/oradata1/backup/$foldername/arch_%d_%T_%s';
    release channel c1;
    release channel c2;
    }
    crosscheck archivelog all;
    delete expired archivelog all;
    RMAN_BACKUP
    --系统级别删除过期备份的空文件夹
    #!/bin/bash
    #del old folders
    cd /oradata1/backup
    find . -mtime +10 | xargs rm -rf
    
    --crontab调度
    crontab -l
    0 1 * * 0 /oradata1/backupsh/db0_backup.rman > /dev/null 2&>1#
    0 1 * * 1-6 /oradata1/backupsh/db1_backup.rman > /dev/null 2&>1#
    0 6,12,18 * * * /oradata1/backupsh/arch_backup.rman > /dev/null 2&>1#
    0 3 * * * /oradata1/backupsh/del_old.sh > /dev/null 2&>1#
    
  • 相关阅读:
    liunx 学习
    Tracert 命令使用说明图解
    好的程序员应该收集一些不错的 类和方法
    apache 多端口
    数组中随机抽取一个或多个单元 (0086一随机显示列表)
    PHP 应具备的知识 学习
    rdlc报表中不显示0
    教程:VS2010 之TFS入门指南
    ORA00161: 事务处理的分支长度 xx 非法 (允许的最大长度为 64) 解决方法
    DataGridView编辑
  • 原文地址:https://www.cnblogs.com/jyzhao/p/3809099.html
Copyright © 2020-2023  润新知