2011-03-30 84 views
1

在每个星期二的晚上10点,突然之间oracle都会产生巨大的REDO日志,直到磁盘空间不足。根据日志,我的应用程序在这段时间内没有运行任何巨大的查询或任何事情。巨大的Oracle重做日志

我唯一能找到的就是当时dba_scheduler_job_run_details表启动了一项oracle作业。我无法在Google上找到关于这项工作的任何信息,所以对于任何想法都绝望。

从dba_scheduler_job_run_details信息:

JOB_NAME:ORA $ AT_SA_SPC_SY_254

状态:停机

ACTUAL_START_DATE:22年11月3日22:00:02.125060000 CST6CDT

RUN_DURATION 9:4: 19.0

+0

我认为这是针对ServerFault或dba.stackexchange.com的主题 – 2011-03-30 22:17:14

回答

2

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

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

或者统计过程可能在特定的表格上爆炸。这会告诉你上次分析的是哪张表,也许它会给你一个线索:select last_analyzed, dba_tables.* from dba_tables order by 1 desc nulls last;

0

我的东西产生巨大的REDOLOG,那么你必须有巨大的DML活动。对于试图清除一些数据,但失败,回滚,然后试图一次又一次地做同样的任务的examaple清理脚本...

如何证明/反驳你的疑惑的最佳方式是“日志矿工工具“。这不是微不足道的,但它会告诉你哪些语句(以及哪个表)生成了大部分重做和那个时间。