Oracle Data Guard 备库 归档文件 删除脚本

    技术2026-05-25  8

     

     

           Oracle Data Guard 是通过归档文件来进行数据同步的。 主库的归档文件,我们可以在RMAN 备份的时候进行删除,但是备库的归档文件无法自动删除,需要写脚本来定时删除。

     

           如果直接删除归档文件的话,可能会出现一种情况,就是归档文件还没有来的急apply,就被删除掉了。所以最安全的做法是在删除归档文件做一个判断。 然后在删除。

     

           整理的一个删除备库的shell 脚本如下:

     

    [oracle@qs-xezf-db2 scripts]$ cat del_st_archive.sh

    #!/usr/bin/ksh

    # created by tianlesoftware

    # 2010/12/24

    export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

    export ORACLE_SID=xxxx

    export SHELL_DIR=/u02/scripts

     

    del_seq=`ls /u02/archivelog/|head -1|cut -f2 -d_`

    echo $del_seq

    $ORACLE_HOME/bin/sqlplus -s "user/pwd@sid_pd as sysdba" <<eof >/u02/scripts/max_sn.log

    set head off;

    set feedback;

    select max(sequence#) from v/$log_history;

    exit;

    eof

    max_sn=`cat /u02/scripts/max_sn.log|awk '{print $1}'|grep ^[0-9]`

    max_sn=`expr $max_sn - 30`

    -- 我这里是保留最近的30个归档文件,这个具体情况自己决定

    echo $max_sn

    while [ $del_seq -lt $max_sn ]

    do

      rm /u02/archivelog/1_"$del_seq"_737806218.arc

    -- 这里是我定义归档文件的格式,具体根据自己的归档文件格式来匹配,关键是匹配日志的sequence no

      del_seq=`expr $del_seq + 1`

      echo $del_seq

    done

     

    --脚本里的红色部分根据自己的情况进行修改

     

    [oracle@qs-xezf-db2 scripts]$ ls

    del_st_archive.sh  del_st_arch.log  max_sn.log

    --max_sn.log 是存放最大seq tmp文件。 用来进行比较的

     

    添加到crontab,定时执行:

    [oracle@qs-xezf-db2 scripts]$ crontab -l

    00 6 * * * /u02/scripts/del_st_archive.sh >/u02/scripts/del_st_arch.log 2>&1

     

    Linux Crontab 定时任务 命令详解

    http://blog.csdn.net/tianlesoftware/archive/2010/02/21/5315039.aspx

     

     

     

     

     

     

    ------------------------------------------------------------------------------

    QQ:492913789

    Email:ahdba@qq.com

    Blog: http://www.cndba.cn/dave

    网上资源: http://tianlesoftware.download.csdn.net

    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

    DBA1 群:62697716(); DBA2 群:62697977()

    DBA3 群:62697850   DBA 超级群:63306533;    

    聊天 群:40132017

    --加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

    最新回复(0)