love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

关于flashback database的一个小细节

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: 关于flashback database的一个小细节

今天同事反馈我们一个客户的Oracle RAC数据库出现归档满;无法写入的情况,最好紧急加盘进行了扩容。后面进一步排查发现是数据库闪回打开了,而且闪回日志默认跟归档在同一个diskgroup,由于闪回日志近2年没有进行清理,因此消耗了大量空间。

关于flashback database的一个小细节插图

可以看到查询结果结果高达88万分钟,大概就是600多天,也就是2020年9月1号至今。相关参数设置都是默认值,按理说Oracle会自动进行清理,可是这里却没有进行进行清理闪回日志。

实际上Oracle本身又没有提供清理闪回日志的相关功能或者命令,大概只能通过如下2种方式来操作;

1、修改闪回日志空间大小限制

alter system set “_flashback_max_log_size”=xxxGB scope=both sid=’*’;

2、关闭数据库闪回等Oracle完成闪回日志清理后再打开

首先让同事尝试了第一种方案,发现并没有起作用;由此可见是遇到未知Bug了;Mos上也搜索了一下,确实有想过的bug,导致Oracle不会去清理闪回日志,比如关闭omf的情况下。

这里我模拟一下关闭闪回情况下,观察oracle的清理动作:

Oracle闪回日志的写入进程是RVWR;该进程是一个核心进程;可以通过如下方式来查询Oracle数据库 RAC环境下,哪些进程是核心进程,对于核心进程我们是不能随便Kill的,否则会导致实例crash。

可以kill一下rvwr进程来验证一下前面的观点:

可以看到rvwr进程一旦被kill,实例立刻被强行终止,出现实例重启。

最后回到正题,对于闪回日志来讲,建议还是通过关闭flashback 的方式,让Oracle自己来清理日志。

如果非要问,是否可以手工去删除闪回日志,其实也是ok的,不过也不是标准操作:

比较简单的知识点,简单记录一下~~~由此可见对于闪回监控,也是比较重要的!

Leave a Reply

You must be logged in to post a comment.