排查oracle日志增速过快记录

发布时间 2023-12-28 11:52:45作者: 小相公

问题产生:

最近同事连接开发环境oracle数据报错,一开始简单更加了下归档空间,每次加5G,语句如下:

查看归档空间大小:

show parameter db_recovery;

查看使用占比:

select * from v$flash_recovery_area_usage;

增加归档空间:

alter system set db_recovery_file_dest_size=30G;

 

后来每过3天左右就又满聊,是时候看看了。

第一步:

统计下归档日志文件大小:

select trunc(first_time) "time", sum(block_size * blocks) / 1024 / 1024 / 1024 "size(g)" from v$archived_log
group by trunc(first_time) order by trunc(first_time);

 

从结果看,每天产生1个多G的量,甚至2023-12-27号产生4.5G这么恐怖的归档。另外通过查看某个时间点前其实每天只占用90M左右空间,之后就开始产生几百兆到大于1G的日志归档。

然后开始分析下归档日志空间占用大的对象。

第二步:

查询大对象:

select * from (
select to_char(dhs.begin_interval_time, 'yyyy-MM-dd HH24:mi:ss') snap_time, dhsso.object_name, SUM(dhss.db_block_changes_delta) sum_change
from dba_hist_snapshot dhs inner join dba_hist_seg_stat dhss on dhs.snap_id = dhss.snap_id and dhs.instance_number = dhss.instance_number
inner join dba_hist_seg_stat_obj dhsso on dhss.obj# = dhsso.obj# and dhss.dataobj# = dhsso.dataobj#
where begin_interval_time > sysdate - 30
group by to_char(dhs.begin_interval_time, 'yyyy-MM-dd HH24:mi:ss'), dhsso.object_name order by 3 desc
)where rownum<=10;

 

结果查看:

 好家伙,应该就是它了,DATA_CHECK_SYNC, 去连接我们的数据库查了下这个表,表数据为空。为了验证就是这个表产生了大量归档日志,开始下一步,查看日志文件。

第三步:

安装软件 toad for oracle, 安装过程跳过。我是安装了12.1.0.22版本的(软件自行获取许可,懂得都懂-_-)。

打开软件,把出问题的数据库连接上,依次选择 database -> diagnose ->logMiner。

1.设置如图,点next

 

 

2.选择你要分析的日志文件,然后next

 

3.选择分析的时间段等参数,点finish

 4.点一下这个按钮,就可以看到结果了

 

从结果可以看到,确实是有大量插入 "DATA_CHECK_SYNC 这个表的操作,记录完毕,拜拜