巨大的Oracle重做日志

时间:2011-03-30 21:48:40

标签: linux oracle oracle11g

每个星期二晚上10点突然间,oracle会产生巨大的REDO日志,直到磁盘空间不足为止。根据日志,我的应用程序在此期间没有运行任何大量查询或任何事情。

我唯一能找到的是dba_scheduler_job_run_details表在那时启动了一个oracle工作。我在谷歌找不到关于这份工作的任何信息,所以我非常渴望任何想法。

来自dba_scheduler_job_run_details的信息:

JOB_NAME:ORA $ AT_SA_SPC_SY_254

状态:停止

ACTUAL_START_DATE:11-03-22 22:00:02.125060000 CST6CDT

RUN_DURATION 9:4:19.0

2 个答案:

答案 0 :(得分:2)

晚上10点通常是自动统计信息收集开始的时间。虽然它通常每天运行。在11g统计信息收集中使用自动任务而不是调度程序,尝试使用如下查询查找统计信息作业:select * from dba_autotask_job_history order by window_start_time desc;

但即使这个问题是由统计数据造成的,但它会导致过多的REDO似乎很奇怪。通常收集统计数据是很多阅读和非常少量的写作。除非你有许多小桌子一直在变化;在这种情况下,统计信息量可能比实际数据大得多。如果是这种情况,您可能需要更频繁地收集统计数据,或者锁定统计数据。

或者统计过程可能在特定的桌子上爆炸。这将向您显示上次分析的表格,也许它会为您提供线索:select last_analyzed, dba_tables.* from dba_tables order by 1 desc nulls last;

答案 1 :(得分:0)

我生成了巨大的REDOLOG,然后你必须拥有巨大的DML活动。对于examaple清理脚本,它试图清除一些数据但是失败,回滚,然后一次又一次地尝试执行相同的任务......

如何证明/反驳您的怀疑的最佳方法是“Log miner tool”。使用它并不简单,但它会告诉你哪些语句(以及哪个表)生成了大部分重做和那个时间。