ITPUB??ì3
订阅ITPUB精粹播报,社区精彩内容不错过
ITPUB论坛 » Oracle数据库管理 » 哪位有 standby数据库 定期删除已经apply的archive的shell脚本?


您有 1 条公共消息
  • 来自: 公共消息 标题: ITPUB国庆假期数 ... 内容: 全新编排的Oracle数据库课程,第一线数据库工程师传授亲身经验,完全摆 ...

    标题: 哪位有 standby数据库 定期删除已经apply的archive的shell脚本?
    离线 tgm78
    高级会员



    精华贴数 0
    个人空间 0
    技术积分 3486 (542)
    社区积分 22 (9405)
    注册日期 2006-4-10
    论坛徽章:5
    会员2007贡献徽章2009新春纪念徽章数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星 
          

    发表于 2008-1-18 18:36 
    哪位有 standby数据库 定期删除已经apply的archive的shell脚本?

    急用!

    以前的丢了的。


    email:

    mikle_tian@126.com

    万分感谢!!


    __________________
    hello moto!
    只看该作者    顶部
    离线 tgm78
    高级会员



    精华贴数 0
    个人空间 0
    技术积分 3486 (542)
    社区积分 22 (9405)
    注册日期 2006-4-10
    论坛徽章:5
    会员2007贡献徽章2009新春纪念徽章数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星 
          

    发表于 2008-1-18 18:43 
    比如,定期删除满足以下两个条件的归档日志:


    1、已经在standby库apply的;
    2、2天以上的

    同时满足上述两个条件的话,即删除。


    __________________
    hello moto!
    只看该作者    顶部
    离线 草中宝
    中级会员



    精华贴数 0
    个人空间 0
    技术积分 1143 (2017)
    社区积分 8 (15479)
    注册日期 2004-3-8
    论坛徽章:2
    ITPUB元老授权会员    
          

    发表于 2008-1-18 23:49 
    写个OCCI程序,10分钟搞定


    只看该作者    顶部
    离线 jimmyhe1981
    (小荷)



    精华贴数 1
    个人空间 0
    技术积分 747 (3223)
    社区积分 9 (14871)
    注册日期 2006-2-25
    论坛徽章:2
    生肖徽章2007版:鼠生肖徽章2007版:鸡    
          

    发表于 2008-1-19 01:53 
    定期删除DG归档日志的脚本·
    作者 小荷||【转载时请务必以超链接形式标明文章原始出处和作者信息】
    永久链接: http://www.oracleblog.cn/useful- ... elete-standby-arch/ ·


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

    Dataguard的维护稍微麻烦点,不能删除尚未applied的归档日志,但是每次手工去核对就比较麻烦了,今天在pub上看到这样一个要求:“哪位有 standby数据库 定期删除已经apply的archive的shell脚本?”于是就写了个脚本,基本可以满足题目的要求:

    1、已经在standby库apply的;

    2、2天以上的

    脚本如下(具体的脚本和初始化路径可见文章最后的下载tar包,在这里对这个脚本的内容进行下说明):
    OS:

    [oracle@standby1 etc]$ cat redhat-release
    Enterprise Linux Enterprise Linux AS release 4 (October Update 4)
    DB:

    BANNER
    ----------------------------------------------------------------------------------------------------
    Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
    PL/SQL Release 9.2.0.4.0 - Production
    CORE    9.2.0.3.0       Production
    TNS for Linux: Version 9.2.0.4.0 - Production
    NLSRTL Version 9.2.0.4.0 - Production
    脚本部署路径为:/oracle/del_appl_arc/bin
    脚本生成的日志路径:/oracle/del_appl_arc/log

    #!/bin/sh
    #########################################################################
    #         This shell is for primary and standby database                #
    #         to rm applied archivelog that before some day ago.            #
    #                                                                       #
    #       You can define "some day" in variables ${day_before}            #
    #            This shell can be put in crontab for auto run              #
    #                                                                       #
    #            2008-01-18   writen by www.oracleblog.cn                   #
    #########################################################################

    ## load profile file
    . /oracle/.bash_profile

    ## Path Define
    main_path=/oracle/del_appl_arc      <----------------部署的主路径
    bin_path=${main_path}/bin      <--------------------脚本所在路径
    log_path=${main_path}/log      <---------------------脚本日志所在路径
    arc_path=/oracle/arch      <-------------------------归档日志所在路径

    cd ${bin_path}

    ## Initial script
    touch app_arc_name.sh
    chmod +x app_arc_name.sh

    ## rm applied archivelog that before ${day_before} day ago
    day_before=1      <-------------------------------------假设删除1天前已经规定的日志,这个变量设置为1,你可以设置成其他。  

    ## Db info
    dbuser=test
    dbpwd=test
    dbsid=primary

    ########## Main shell start here ##########
    ## load exisit archlog list to db      <------------------------从此处开始利用sqlldr将arch文件列表load到数据库中。
    sqlplus ${dbuser}/${dbpwd}@${dbsid}<<EOF >/dev/null
    drop table ${dbuser}.arc_log_list;
    CREATE TABLE ${dbuser}.arc_log_list (arc_name VARCHAR2(2000));
    exit;
    EOF

    ls -l ${arc_path}|awk '{print $9}' |grep arc >arc_log_list.tmp

    echo "load data">>arc_log.ctl
    echo "infile 'arc_log_list.tmp'">>arc_log.ctl
    echo "replace into table arc_log_list">>arc_log.ctl
    echo "fields terminated by X'09'">>arc_log.ctl
    echo "(arc_name)">>arc_log.ctl

    sqlldr ${dbuser}/${dbpwd}@${dbsid} control=arc_log.ctl log=sqlldr_run.log bad=sqlldr_badfile.bad

    ### Create shell for rm applied archive that before some day ago
    sqlplus -s ${dbuser}/${dbpwd}@${dbsid}<<EOF>/dev/null      <-------------利用load数据库中的arch列表和
    set feedback off                                     <-------------数据库中v$archived_log,找出符合条件可以删除的arch,同时生成删除脚本。
    set pages 0
    set head off
    set timing off
    set echo off
    spool app_arc_name.tmp
    select 'rm -f '||'${arc_path}/'||arc_name from test.arc_log_list
    intersect
    select 'rm -f '||name from v\$archived_log
    where DEST_ID=1 and name like '%.arc'
    and SEQUENCE#<(select max(SEQUENCE#) from v\$archived_log where applied='YES')
    and COMPLETION_TIME<=sysdate-${day_before};
    spool
    exit
    EOF

    ## Exec the shell in background mode
    cat app_arc_name.tmp |grep -v spooling>app_arc_name.sh
    ./app_arc_name.sh
    mv app_arc_name.sh rm_appl_arc_`date +"%Y%m%d%H%M"`.log

    mv rm_appl_arc*.log ${log_path}
    rm app_arc_name.tmp arc_log.ctl sqlldr_run.log arc_log_list.tmp
    完成脚本后,你可以把脚本放入crontab中定期运行,以达到自动删除n天以前且已经applied的归档日志。


    下载tar包请到原文处:http://www.oracleblog.cn/useful- ... elete-standby-arch/

    [ 本帖最后由 jimmyhe1981 于 2008-1-19 02:33 编辑 ]


    __________________
    *************************
    Welcome to my blog:http://www.oracleblog.cn
    *************************
    只看该作者    顶部
    离线 jimmyhe1981
    (小荷)



    精华贴数 1
    个人空间 0
    技术积分 747 (3223)
    社区积分 9 (14871)
    注册日期 2006-2-25
    论坛徽章:2
    生肖徽章2007版:鼠生肖徽章2007版:鸡    
          

    发表于 2008-1-19 02:38 
    同一个脚本primary和standby都可以用,不过注意在部署crontab的时候要将时间错开,如果同时进行,会对arc_log_list表有争用。


    __________________
    *************************
    Welcome to my blog:http://www.oracleblog.cn
    *************************
    只看该作者    顶部
    离线 foxmile
    蚊子
    难得糊涂


    精华贴数 0
    个人空间 64
    技术积分 12891 (124)
    社区积分 3637 (530)
    注册日期 2004-5-8
    论坛徽章:21
    生肖徽章2007版:龙生肖徽章2007版:龙    
          

    发表于 2008-1-19 21:25 
    关注


    __________________
    年年岁岁花相似 岁岁年年人不同
    我的blog   http://space.itpub.net/?79499
    只看该作者    顶部
    离线 tgm78
    高级会员



    精华贴数 0
    个人空间 0
    技术积分 3486 (542)
    社区积分 22 (9405)
    注册日期 2006-4-10
    论坛徽章:5
    会员2007贡献徽章2009新春纪念徽章数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星 
          

    发表于 2008-1-20 10:10 
    收藏,多谢


    __________________
    hello moto!
    只看该作者    顶部
    离线 五“宅”一生
    版主


    精华贴数 0
    个人空间 0
    技术积分 16135 (88)
    社区积分 34 (7644)
    注册日期 2006-11-4
    论坛徽章:71
    现任管理团队成员ITPUB元老ITPUB季度 技术新星2010数据库技术大会纪念徽章参与WIN7挑战赛纪念授权会员
    2010世博会纪念徽章2010年世界杯参赛球队:巴拉圭2010年世界杯参赛球队:意大利数据库板块每日发贴之星2010年世界杯参赛球队:美国2010新春纪念徽章

    发表于 2008-1-20 18:18 
    我也收藏了。感谢分享!


    只看该作者    顶部
    离线 fwei_fengwei
    圆梦之旅


    来自 北京
    精华贴数 0
    个人空间 0
    技术积分 4547 (399)
    社区积分 1640 (923)
    注册日期 2007-5-22
    论坛徽章:27
    ITPUB元老授权会员    
          

    发表于 2008-6-24 16:39 
    真不错,赞一个!


    __________________
    超越自我 之 圆梦之旅

    Email:fwei_fengwei@163.com
    ----------------
    提高,源于细节;精通,来自积累。


    幸福是什么
    ==========
    1、做自己喜欢做的。
    2、用自己喜欢做的养活自己。
    3、在自己喜欢做的事上有所成就。

    中国茶文化:春喝花茶、夏喝绿茶、秋喝乌龙、冬喝红。

    我的2010圆梦旅程  : RAC管理、深入性能优化、AIX/Linux系统管理
    只看该作者    顶部
     
        

    相关内容


    CopyRight 1999-2006 itpub.net All Right Reserved.
    北京皓辰网域网络信息技术有限公司. 版权所有
    网站律师 隐私政策 知识产权声明
    广播电视节目制作经营许可证:编号(京)字第1149号
    京ICP证:060528号 联系我们

    北京市公安局海淀分局网监中心备案编号:1101082001