首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux/Unix shell 脚本清除归档日志文件

Linux/Unix shell 脚本清除归档日志文件

作者头像
Leshami
发布于 2018-08-14 02:06:36
发布于 2018-08-14 02:06:36
1.4K00
代码可运行
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界
运行总次数:0
代码可运行

      对于DEV以及UAT环境,有些时候,数据库需要处于归档模式,但并不需要备份数据库。因此,archive归档日志不停的增长导致磁盘空间被大量耗用。对于这种情形,可以使用一个shell脚本来定时自动清除这些归档日志。本文给出了清除归档日志的脚本。

1、清除归档日志shell脚本  

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
robin@SZDB:~/dba_scripts/custom/bin> more remove_arch_dump.sh
#!/bin/bash
# ------------------------------------------------------------+
#   FileName: remove_arch_dump.sh                             |
#   Desc:                                                     | 
#        Remove old archived log and data pump file           |
#   Usage:                                                    |
#        ./remove_arch_dump.sh                                |
#                                                             |
#   Authror : Robinson                                        |
#   Blog    : http://blog.csdn.net/robinson_0612              |
# ------------------------------------------------------------+

filename=/etc/oratab

cat $filename | while read LINE
do
    case $LINE in
        \#*)                ;;        #comment-line in oratab
        *)
        ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
        echo $ORACLE_SID
  
        # ---------------------------------
        # define archived log directory     
        # ---------------------------------
        dir=/u02/database/$ORACLE_SID/archive/
        echo $dir

        filelist=`ls -t $dir`
        echo $filelist
        
        # ----------------------------------------------------------
        # start to remove archived log and keep last 2 archived log
        # ----------------------------------------------------------
        count=0
        for filename in $filelist
        do
                echo $filename
                count=$(($count+1))
                if [ $count -gt 2 ]; then
                        echo $count
                        rm -vrf $dir$filename
                fi
        done
        ls -tr $dir
        
        # --------------------------------
        # define data pump dump directory
        # --------------------------------
        dir=/u02/database/$ORACLE_SID/BNR/dump/
        echo $dir

        filelist=`ls -t $dir`
        echo $filelist
        
        # ---------------------------------------------------------
        # start to remove data pump file and keep last 5 dump file 
        # ---------------------------------------------------------
        count=0
        for filename in $filelist
        do
                echo $filename
                count=$(($count+1))
                if [ $count -gt 5 ]; then
                        echo $count
                        rm -vrf $dir$filename
                fi
        done
        ls -tr $dir

     ;;
    esac
done
exit

2、脚本说明     a、该脚本通过一个外部循环来读取oratab中定义的数据库的SID来寻找对应数据库的归档日志路径以及datapump dump路径。     b、使用了一个for循环来清除归档日志,且保留最后的2个归档日志文件。     c、接下来的另一个for循环则用来清除当前SID下对应的dump(Oracle datapump)目录下导出的dump文件。     d、同清除归档日志一样,设定了保留dump目录最近的5个文件。保留多少个最近的文件(dump的5,或者归档日志2)可以修改。     e、如果不需要清除dump路径,可以将dump部分注释掉。     f、根据需要将其部署到crontab。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013年04月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Oracle RMAN 清除归档日志
      在开发环境及UAT环境经常碰到需要清除归档日志的情形,对于这个问题方法有很多。可以直接使用rm方式清除归档日志,也可以使用find命令来查找符合条件的记录来清除归档日志,或者直接写个shell脚本来搞定。这样在DEV或者UAT还可以,但是在Prod环境还是建议使用RMAN提供的命令来搞定比较妥当。因为rm,find方式删除了实际的归档日志也释放了空间,但对应的存储在控制文件中的归档信息并没有彻底清除。依旧占用着一些空间未能及时清除而需要控制文件通过age out方式来释放空间。本文描述了使用RMAN方式来清除归档日志,同时也可以将其部署到shell脚本中使用。
Leshami
2018/08/13
4.2K0
Linux/Unix shell 自动导入Oracle数据库
      使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来实现自动导入Oracle数据库。
Leshami
2018/08/14
1.4K0
delete archivelog all 无法彻底删除归档日志?
    最近在因归档日志暴增,使用delete archivelog all貌似无法清除所有的归档日志,到底是什么原因呢?
Leshami
2018/08/14
1.4K0
Linux/Unix shell 自动 FTP 备份档案
       使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来实现自动FTP备份档案。
Leshami
2018/08/14
1.1K0
【DB笔试面试501】在Oracle中,如何定时删除归档日志文件?
1、在Oracle用户下,创建归档日志删除文件del_OCPLHR1_arch.sh
AiDBA宝典
2019/09/30
9510
Linux/Unix shell 监控Oracle告警日志(monitor alter log file)
    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来监控 Oracle 告警日志(monitor alter log file)。
Leshami
2018/08/14
8480
Linux/Unix shell 自动导出Oracle数据库
       使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来实现数据库自动导出。
Leshami
2018/08/14
1.3K0
Oracle RMAN删除归档日志脚本
Oracle 开启归档模式后,会一直不停的产生归档日志,如果不定时删除,迟早会撑爆磁盘空间,所以就需要布置定时删除归档日志的脚本!
Lucifer三思而后行
2021/09/23
1.7K0
linux 下RMAN备份shell脚本
       RMAN备份对于Oracle数据库的备份与恢复简单易用,成本低廉。对于使用非catalog方式而言,将RMAN脚本嵌入到shell脚本,然后再通过crontab来实现中小型数据库数据库备份无疑是首选。本文提供了一个简单易用的基于linux shell下的RMAN备份脚本供参考。大家可根据自己的需要进行适当调整。
Leshami
2018/08/14
2.1K0
Linux/Unix shell 调用 PL/SQL
    Linux/Unix 下除了调用SQL之外,调用PL/SQL也是DBA经常碰到的情形,下面主要通过一些示例给出如何在shell下面来调用pl/sql。
Leshami
2018/08/14
1.2K0
中小型数据库 RMAN CATALOG 备份恢复方案(三)
      在前两篇文章中描述了中小型数据库使用RMAN catalog设计备份与恢复方案,并给出了所有相关的脚本来从某种车程度上模拟Oracle Data Guard以减少硬件故障带来Prod服务器上数据库损失。在这边文章中主要描述Prod数据库的变迁在Bak server端如何进行恢复。
Leshami
2018/08/13
9570
中小型数据库 RMAN CATALOG 备份恢复方案(一)
        对于数据库的稳定性,高可用,跨平台以及海量数据库的处理,Oracle 数据库通常是大型数据库和大企业的首选。尽管如此,仍然不乏很多中小企业想要品尝一下Oracle腥味,因此在Oracle环境中也有不少中小型数据库。出于成本的考虑,通常有可能就搞个标准版了,跑在Linux上。谁叫Oracle太贵呢?对于中小企业而言,选择合理的才是最好的。对我们这些个搞DB的,贵的一定有贵的道理,我们也可以都进多几斗米。哈哈......典型的打工者的心态哟。言归正传,中小企业的成本限制了我们搞高可用,RAC和DG也就比较少了。最近就碰到这样的情形,就是能否模拟DataGuard来保护数据库。我们知道DataGuard可以实时将数据库从主库切换到备库,或者从备库再切换回主库,实现无缝对接,从而避免由于硬件故障所带来的数据损失。下文即是基于上面的情形来使用rman catalog方式从某种程度上模拟DataGuard来更大程度地保护数据。
Leshami
2018/08/13
9010
Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)
      Oracle 数据库可以实现数据库不完全恢复与完全恢复。完全恢复是将数据库恢复到最新时刻,也就是无损恢复,保证数据库无丢失的恢复。而不完全恢复则是根据需要特意将数据库恢复到某个过去的特定时间点或特定的SCN以及特定的Sequence。我们可以通过基于用户管理的不完全恢复实现,也可以通过基于RMAN方式来实现。本文主要描述是基于RMAN的不完全恢复的几种情形并给出示例。有关数据库备份恢复,RMAN备份恢复的概念与实战可以参考文章尾部给出的链接。
Leshami
2018/08/13
2.6K0
Linux/Unix shell 自动发送AWR report
     观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告。不过awrrpt.sql脚本执行时需要我们提供一些交互信息,因此可以将其整合到shell脚本中来实现自动产生指定时段的awr报告并发送给相关人员。本文即是描述linux shell脚本来实现此功能。     1、shell脚本
Leshami
2018/08/14
6960
【DB笔试面试536】在Oracle中,Oracle 10g和11g告警日志文件的位置在哪里?
作为一名DBA,必须知道告警日志是什么,在何处。实时的监控数据库的告警日志是必须进行的工作。监控并且根据不同的告警级别,通过邮件或短信发送告警信息给DBA,这可以帮助DBA及时了解数据库的变化与异常,及时响应并介入处理。
AiDBA宝典
2019/09/29
1.3K0
DG环境数据库RMAN备份策略制定 全库备份 归档备份 删除历史文件夹 删除归档
DG环境数据库RMAN备份策略制定: 主库(Primary) 全库备份 归档备份 删除历史文件夹 备库(Standby) 删除归档 引用说明 主库(Primary) $ crontab -l 0 1 * * * /bin/bash /usr2/backupsh/full_backup.rman 0 */2 * * * /bin/bash /usr2/backupsh/arch_backup.rman 0 3 * * * /bin/bash /usr2/backupsh/del_old.sh 全库备份
Alfred Zhao
2019/05/24
1.4K0
Oracle 基于备份控制文件的恢复(unsing backup controlfile)
    通常在当前控制文件丢失,或者当前的控制文件与需要恢复的控制文件不一致的情况下,我们需要重新创建一个控制文件或者使用 unsing backup controlfile方式来恢复控制文件。说简单点,只要是备份的控制文件与当前的控制文件不一致进行恢复数据库,就需要使用到 unsing backup controlfile方式,而一旦使用了该方式,则需使用resetlgos选项来打开数据库。
Leshami
2018/08/14
8680
Linux/Unix shell 自动发送AWR report(二)
       观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告。不过awrrpt.sql脚本执行时需要我们提供一些交互信息,因此可以将其整合到shell脚本中来实现自动产生指定时段的awr报告并发送给相关人员。本文对Linux/Unix shell 自动发送AWR report的功能进行了完善和补充。   
Leshami
2018/08/14
3560
rman 还原归档日志(restore archivelog)
     听说过还原(restore)数据库,表空间及数据库文件,使用归档日志恢复(recover)数据库,表空间,数据库文件。咦,还有还原归档日志这一说法呢?没错,可能我们忽略了还原归档日志这一个过程,原因是还原归档日志通常情况下是oracle在recover时自动完成的。大多数情况下我们是先还原数据库,恢复数据库,打开数据库。实际上在恢复数据库之前有一个动作,那就是还原归档日志,也就是将日志文件还原到缺省的归档位置,如果我们在备份归档日志时使用了delete [all] input子句的话。本文对此给出了单独还原归档日志以及恢复归档日志的示例以及restore archivelog的一些用法,仅仅是为了更好来的理解还原与恢复的过程,因为大多数情形下,数据文件被还原到缺省路径。如果是还原到非缺省路径,那就需要手动restore archivelog。
Leshami
2018/08/13
3.4K0
Linux/Unix shell 脚本跨服务器跨实例执行SQL
      在DB运维的过程中,难免碰到需要跨多个服务器以及多个Oracle实例查询数据库的情形。比如我们需要查看当前所有生产环境数据库上open_cursor参数的值以便考虑是否需要增加。而需要查看的数据库服务器上有多个实例,同时又存在多个数据库服务器,这样子下来,几十个DB,上百个的情形一个个查,那得把人给累死。那就像点办法撒,写个shell脚本,轮巡所有服务器及服务器上的所有实例。见本文的描述。
Leshami
2018/08/13
2.3K0
推荐阅读
相关推荐
Oracle RMAN 清除归档日志
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验