暂无图片
如何清除不存在的归档日志
我来答
分享
Edward
2022-08-11
如何清除不存在的归档日志

1、由于归档日志满了导致数据库停机;
2、查询归档日志的记录和归档日志空间的使用,发现日志的数量和容量完全小于空间设置的最大值
归档日志设置空间
image.png
3、查询现有的归档日志
有46条,并且都是今天的
image.png
4、查询控制文件中的数量,46条和归档日志表中查询的结果一致
image.png
5、但是record_total字段显示的是31040条记录,这个应该怎么处理掉才能与实际保持一致,另外数据库做了shutdown abort后重启归档日志空间不回收
image.png
这样导致数据库无法正常启动。而1T的空间是操作系统硬盘最大的空间了,这个空间怎么进行回收?

我来答
添加附件
收藏
分享
问题补充
23条回答
默认
最新
刘贵宾

用rman查一下看看,crosscheck archivelog all;

然后再到归档日志目录ssd盘下看一下,具体有多少归档日志,应该是归档日志没有注册到吧

rman下catalog start with重新注册下,然后执行删除呢

暂无图片 评论
暂无图片 有用 0
Edward
题主
2022-08-11
重新注册了,结果是今天的,以前的没有
张sir

可以参考下面的文章,利用rman清理已经归档。

https://blog.huati365.com/dc8ab204ddbddba4


1、 crosscheck archivelog all;--此命令的含义是检查所有归档日志的状态,并把遗失的标记为expired,也就是说,expired 表示已经被操作系统中被删除的归档日志。

 2、delete expired archivelog all; --此命令的含义是删除expired的归档日志

暂无图片 评论
暂无图片 有用 0
Edward
题主
2022-08-11
delete expired archivelog all 结果是没有存在的记录,这些都执行过
Edward

catalog start with 重新注册的结果
image.png
清除过期日志
image.png

暂无图片 评论
暂无图片 有用 0
刘贵宾

+ssd/EASDB/ARCHIVELOG/目录下有多少文件?截图看下

暂无图片 评论
暂无图片 有用 0
张sir

先确认下你的闪回区里是谁占用的空间,是归档日志不:

select file_type,
          percent_space_used        as used,
          percent_space_reclaimable as reclaimable,
          number_of_files           as "number"
     from v$flash_recovery_area_usage;
暂无图片 评论
暂无图片 有用 0
刘贵宾
2022-08-11
赞同
Edward

+ssd/EASDB/ARCHIVELOG/目录情况
image.png

暂无图片 评论
暂无图片 有用 0
Edward

和V$RECOVERY_FILE_DEST的数据不一致

image.png

SELECT * FROM V$RECOVERY_FILE_DEST;
image.png

暂无图片 评论
暂无图片 有用 0
刘贵宾

说个笨方法,你到grid用户下,然后asmcmd,cd ssd目录下

然后du 每个目录,看看空间到底是被谁给用了

暂无图片 评论
暂无图片 有用 0
Edward

du SSD目录的情况
image.png

这个目录文件夹
image.png

暂无图片 评论
暂无图片 有用 0
刘贵宾

神奇啊,通过v$recovery_file_dest查询出来的使用空间和在asmcmd中查询出来的完全不一致,归档只占用了12.5G

你在系统执行下这个,看下有没有正在用被删文件的进程,导致空间没释放

lsof | grep deleted

暂无图片 评论
暂无图片 有用 0
刘贵宾
select file_type,
          percent_space_used        as used,
          percent_space_reclaimable as reclaimable,
          number_of_files           as "number"
     from v$flash_recovery_area_usage;

执行这个看看

暂无图片 评论
暂无图片 有用 0
Edward

image.png

image.png

暂无图片 评论
暂无图片 有用 1
刘贵宾
2022-08-11
root下执行lsof | grep deleted
Edward

image.png
image.png

暂无图片 评论
暂无图片 有用 0
刘贵宾

正常啊,你asmcmd后lsdg看一下

暂无图片 评论
暂无图片 有用 0
Edward

image.png

暂无图片 评论
暂无图片 有用 0
刘贵宾
你将spfile转为pfile,然后查看pfile中db_recovery参数配置
暂无图片 评论
暂无图片 有用 0
Edward

两个节点的参数都是一样的,1000G
image.png

image.png

暂无图片 评论
暂无图片 有用 0
张sir

上杀手锏,试试这个吧,

重置一下v$recovery_file_dest

 alter session set events 'immediate trace name kra_options level 1';

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=298937656790111&id=2780810.1&displayIndex=4&_afrWindowMode=0&_adf.ctrl-state=5yt49g99d_484


暂无图片 评论
暂无图片 有用 0
Edward
题主
2022-08-12
这个操作完成或者进行操作的时候需要停止oracle服务吗?
刘贵宾

问题处理的怎么样?解决了么

暂无图片 评论
暂无图片 有用 0
Edward
题主
2022-08-12
现在在业务繁忙期间,不敢动。怕出现不可控问题影响业务应用,只能在周末或者晚上进行
刘贵宾
答主
2022-08-12
看起来也只能重置了,操作前逻辑物理两种都备份好留存,好运
张sir

看起来不需要重启,mos上的文档,风险应该比较可控。

暂无图片 评论
暂无图片 有用 0
Edward
题主
2022-08-12
我找人看了下这个问题,写的适合是12C以上的版本,我的库是11.2.0.4的。
Edward


暂无图片 评论
暂无图片 有用 0
张sir
2022-08-14
这个也不一定,mos比如有的bug说在某个版本修复了,但是实际上并没有修复,可以在测试环境测下,或者开个sr问下
virvle
请问最后怎么解的😉
暂无图片 评论
暂无图片 有用 0
一杯拿铁

最后咋解决的呀,学习学习

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏