重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3427|回复: 0

[Oracle] oracle删除归档日志文件

[复制链接]
发表于 2020-1-12 20:22:59 | 显示全部楼层 |阅读模式
本帖最后由 王亮 于 2020-1-12 20:30 编辑

      Oracle数据库在控制文件controlfile中记录着每一个archivelog文件的相关信息,当在OS下把这些物理文件delete掉后,在我们的控制文件controlfile中仍然记录着这些archivelog文件的相关信息,在oracle查询相关的动态视图(例如v$archived_log)时,该部分日志仍然标注为存在。也就是说Oracle并不认为这些日志被删除了,当我们手工清除 archivelog文件后,这些记录并没有被我们从controlfile中清除掉,也就是oracle并不知道这些文件已经不存在了,这时候我们要做手工的清除的话,需要我们在删除物理归档日志时,在其他地方做一些调整:
      1.    进入rman
          [oracle@server ~]$ rman

      2.    connect target /      注:(如果磁盘空间满了的话是连接不上的,需要提前清理一些空间才能进行连接)
          RMAN> connect target /
      3.    crosscheck archivelog all;
      crosscheck archivelog all:验证的是DB的归档日志即log_archive_dest参数指定位置的文件,当手工删除了归档日志以后,Rman备份会检测到日志缺失,从而无法进一步继续执行Rman备份,所以此时需要手工执行crosscheck过程,查看所有的归档日志文件是否都是正常的然后再来执行Rman备份。
       4.    delete expired archivelog all;
      这时候我们再去动态视图中就看不到这些日志文件了,如果从来没有做过这个动作的话,可以比较这个动作前的controlfile和动作后的controlfile的文件大小。

删除归档日志的过程:
    以ORACLE用户身份登录到数据库服务器
    进入ORACLE数据备份工具:
      rman tatget /
    在命令窗口里面执行:
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';  (该方法是删除的闪回数据、类似于内存中的数据)
    说明:
      SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
      同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行数据库全备份。
      DELETE ARCHIVELOG FROM TIME 'SYSDATE-7'; (该方法是删除物理文件)


      report obsolete命令:

      使用report obsolete命令报告过期备份:      
      RMAN> report obsolete;
      使用delete obsolete命令删除过期备份:
      RMAN> delete obsolete;











回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-19 06:35 , Processed in 0.083775 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表