ITPub博客

首页 > Linux操作系统 > Linux操作系统 > cannot allocate new log 的解决方法

cannot allocate new log 的解决方法

原创 Linux操作系统 作者:Jujay 时间:2011-10-09 15:20:26 0 删除 编辑
Normal 0 false false false EN-US ZH-CN X-NONE在alert.log中,有时会看到类似这样的警告信息:

Thread 1 cannot allocate new log, sequence #

Checkpoint not complete

或

Archival required

原因是当做online redo log切换时,

如果发现下一个redo log所保护的数据还未完成checkpoint (Checkpoint not complete),此时数据库hang住,DBWR将以最大优先级尽快把数据从缓冲区刷到磁盘;

如果发现下一个redo log所保护的数据还未被归档 (Archival required) (数据库处于archived log模式下),此时数据库hang住,ARCH将以最大优先级尽快复制redo log至archive目录下。

可以看到,当出现这种情况时,时间看实际上停止了,无法响应用户的请求。这种情况最容易在业务高峰期时出现,如果只是偶然情况,可以暂时忽略,如果出现很频繁,则可以从以下几个方面调整:

1. 增加更多redo log文件

2. 创建更大的redo log文件

3. 使DBWR更快一些,比如启用异步I/O,使用DBWR I/O从属进程,或者使用多个DBWR进程等等

4. 确保磁盘没有因为竞争导致I/O变慢

5. 让checkpoint发生的更频繁(比如缩小log checkpoint interval等),改方法仅针对Checkpoint not complete状况。

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26277071/viewspace-708840/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-09-14

  • 博文量
    93
  • 访问量
    291022