Oracle 重做日志全部活动

问题描述 投票:0回答:3

首先,我对成为一名 OracleDba 知之甚少,几乎一无所知。我负责管理一个使用第三方编写的 Oracle 11g 的应用程序。我们的应用程序/数据库在过去 7 年里一直稳定。突然间,我们遇到了数据库缓慢/锁定/崩溃的情况。该应用程序的开发人员似乎认为它与我们的重做日志有关。我不能说他是对还是错,但根据我到目前为止所读到的内容,我们所有的日志文件都不应该处于活动状态。

似乎当这些日志填满时,我们会遇到各种各样的问题。彻底停止并重新启动数据库确实会清除这些日志文件,并且应用程序将再次可用,但这需要很长时间,并且会对我们开展业务的能力产生不利影响。

对于为什么这些日志文件没有切换并变得不活动有什么想法吗?我们如何找到造成这种情况的原因?我们可以使用 ALTER SYSTEM SWITCH LOGFILE; 强制切换吗?

再说一遍,我对成为 Oracle Dba 知之甚少,但我们的软件开发人员自周五以来一直无法解决该问题,我迫切需要帮助。期待了解更多相关信息。

提前致谢。

oracle switch-statement database-performance logfile
3个回答
1
投票

如果您写入日志的目的地已满,可能会冻结您的系统。

我会每小时和每天检查是否存在异常峰值。


Hourly Archive Log Generation :

set pages 1000
alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';

select trunc(COMPLETION_TIME,'HH') Hour,thread# , 
round(sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024) GB,
count(*) Archives from v$archived_log 
group by trunc(COMPLETION_TIME,'HH'),thread#  order by 1 ;


Daily Archive Log Generation :

SQL> select trunc(COMPLETION_TIME,'DD') Day, thread#, 
round(sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024) GB,
count(*) Archives_Generated from v$archived_log 
group by trunc(COMPLETION_TIME,'DD'),thread# order by 1;

其次,您可能需要考虑运行 rman 命令来释放空间,例如

DELETE expired;
DELETE obsolete;

最后,将警报日志上传到 Oracle 支持。在 11g 中这可能会有问题,因为该版本已被取消支持多年


0
投票

假设您没有空间、阻塞会话或任何其他问题,只是针对活动重做日志的问题。

Status ACTIVE 表示此时该重做日志中的某些数据更改尚未写入数据文件。您可以执行检查点以强制将所有重做写入数据文件。

SQL> alter system checkpoint;

System altered.

检查点完成后,您可以再次检查所有重做日志的状态。他们现在应该处于不活动状态。


0
投票

您的情况是如何解决的? 事实上,当所有架构日志都处于活动状态时重新启动数据库并不是最佳解决方案。正如(Alex)所描述的那样,最好执行检查点,但这可能需要很长时间,并且数据库也必须等待它完成。有必要找出在如此长时间的高活动期间,DBWR 没有将数据写入文件的原因。

我目前正在处理类似的任务。我的所有重做日志都处于活动状态,但它不会导致数据库出现问题(没有日志文件同步),并且检查点过程会立即发生。

© www.soinside.com 2019 - 2024. All rights reserved.