在每个星期二的晚上 10 点,oracle 突然生成大量的重做日志,直到磁盘空间用完。根据日志,我的应用程序在此期间没有运行任何大型查询或任何东西。
我唯一能找到的是 dba_scheduler_job_run_details 表当时启动了一个 oracle 作业。我在 google 上找不到关于这份工作的任何信息,所以我非常想知道任何想法。
来自 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
最佳答案
晚上 10 点通常是自动统计信息收集开始的时间。虽然它通常每天运行。在 11g 统计信息收集中使用自动任务而不是调度程序,尝试使用如下查询查找统计信息作业:select * from dba_autotask_job_history order by window_start_time desc;
但即使问题是由统计引起的,但它会导致过多的 REDO 似乎很奇怪。通常收集统计数据是大量的阅读和极少量的写作。除非你有许多随时变化的小 table ;在那种情况下,统计信息的数量可能比实际数据大得多。如果是这种情况,您可能需要更频繁地收集统计数据,或者锁定统计数据。
或者统计过程可能在特定表上爆炸。这将向您显示最后分析的表,也许它会给您一个线索:select last_analyzed, dba_tables.* from dba_tables order by 1 desc nulls last;
关于linux - 巨大的 Oracle 重做日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5492871/