Thread 1 cannot allocate new log Private strand flush not complete 警告

官方解释如下:

CHANGES

切换日志时,所有 private strand 都必须刷新到当前日志,然后才允许继续切换。

CAUSE

此信息表示我们在尝试切换时,尚未完全将所有 redo 信息写入到日志中。它本质上类似于“checkpoint not complete”,不同的是,它仅涉及到正在被写入日志的redo。在写入所有 redo 前,无法切换日志。

“strand”是 10g 中的新术语,它用于处理 redo 的 latch。

Strands是一种允许进程利用多个 allocation latch 更高效地将 redo 写入 redo 缓冲区的机制,它与 9i 中出现的 log_parallelism 参数相关。

提出 Strand 的概念是为了确保实例的 redo 生成率达到最佳,并能确保在出现某种 redo 争用时,可以动态调整 strand 的数量进行补偿。

初始分配的 strand 数量取决于 CPU 的数量,最少两个 strand,其中一个 strand 用于活动的 redo 生成。

对于大型企业系统,redo 生成的量相当大,因此当前台进程遇到此 redo 争用(allocated latch 竞争)时,这些 strand 会“被激活”,这就是动态 strand 的概念开始发挥作用的时候。

shared strand 总是与多个 private strand 共存。

Oracle 10g 的 redo(和 undo)机制有一些重大变化,目的是为了减少争用。

此机制不再实时记录 redo,而是先记录在一个“私有区域”,并在提交时写到 redo 日志缓冲区中。

与此相似,undo 可作为“in memory undo”生成并成批应用。这会影响用于管理 redo 的内存和分片刷新此内存的可能性。您获取的信息与内部 Cache Redo File 管理相关。

... 该信息是正常的,可以被忽略。

SOLUTION

这些信息不需要特别关注,除非“cannot allocate new log”信息和“advanced to log sequence”信息之间有明显的时间差。

在某些情况下,增大 db_writer_processes 的值有助于避免生成该信息。原因:因为 DBWR 的其中一个主要功能是通过写出脏缓存块来保持缓冲区缓存的干净。因此,使用多个 db_writer_processes 应当能够产生更高的吞吐量。

关于更详细的机制
参考文章
http://blog.csdn.net/tianlesoftware/article/details/6014898

时间: 2024-10-12 21:55:52

Thread 1 cannot allocate new log Private strand flush not complete 警告的相关文章

关于 Private strand flush not complete

      网友发来告警日志,原本是关于一个死锁的情形,而另外的一个问题则是从redo log buffer写出到redo log file出现了不能分配新的日志,Private strand flush not complete的等待事件.这是个和redo log相关的话题,从Meatlink也找到了对此的描述如下文.   1.错误消息 Tue Sep 24 14:27:48 2013Thread 1 cannot allocate new log, sequence 22120Private

0607Private Strand Flush Not Complete 2

[20170607]再论Private Strand Flush Not Complete.txt --//曾经跟zergduan有过讨论,链接www.itpub.net/thread-2065703-1-1.html,按照道理只要使用IMU,在日志切换时如果在Private Strand --//有信息一定会出现Private Strand Flush Not Complete提示在alert.log日志文件中,因为要把那些信息写入redo文件. --//我在我的一个生产系统看到,我发现一个没

0322Private strand flush not complete

[20170322]Private strand flush not complete.txt --//探究一下生产系统出现alert大量出现Private strand flush not complete.这台服务去年4,5月我做了优化,前面设置sga太小,导致数 --//据缓存很小. SYS@xxxxxx> select * from v$version; BANNER ------------------------------------------------------------

[20170322]关于IMU.txt

[20170322]关于IMU.txt --昨天测试实例crash恢复时,别人测试无法重复我前面的测试,最终发现IMU导致这个问题. --我本人对IMU的东西很少探究.摘抄一段: 从Oracle10g开始,Oracle在数据库中引入了In Memory Undo(可以被缩写为IMU)的新技术,使用这一技术,数据库会在共享内存中 (Shared Pool)开辟独立的内存区域用于存储Undo信息,这样就可以避免Undo信息以前在Buffer Cache中的读写操作,从而可以进一步的 减少Redo生成

[20120109] 11g alert log的一些细小变化.txt

[20120109] 11g alert log的一些细小变化.txt 我个人检查数据库,查看alert log文件,喜欢查看文本格式,而不喜欢查看xml格式的文件,对于adrci的命令不是很熟悉,以及不习惯使用. 今天查看对比了两个格式的文件,发现以后要习惯查看xml格式,学会使用adrci命令. 对比如下:1.xml格式的文件可以精确到milliseconds. Thread 1 cannot allocate new log, sequence 264Checkpoint not comp

解决Oracle 12.1.0.2 的OLAP API组件无效问题

数据库从11.2.0.3.x升级到12.1.0.2.3之时出现如下错误,Oracle OLAP API组件无效 Oracle Database 12.1 Post-Upgrade Status Tool           04-21-2015 10:58:50                                                                                      Component                        

ORA-16401: archivelog rejected by RFS

早上检查邮件的时候发现有ORA-16401: archive log rejected by Remote File Server (RFS)报警邮件! 通常此问题是由于主库的fal_client参数与备库的log_archive_dest_n中的service参数不匹配造成的. 模拟一下环境(案例来自metalink [ID 1183143.1]) ********* Primary ******** log_archive_config DG_CONFIG=(p1ncm1,p1ncm2) l

oracle数据库-oracle 11g ORA-00445:每个月数据库都会死,pl/sql登录不上

问题描述 oracle 11g ORA-00445:每个月数据库都会死,pl/sql登录不上 每个月数据库都会无缘无故的死掉,重启数据库又正常了,下面是alert_orcl.log里面的日志,window服务器内存8G ,oracle版本11gR2,这个是什么原因导致的呢 Tue Oct 28 20:18:25 2014 Errors in file d:oraclediagrdbmsorclorcltraceorcl_cjq0_2628.trc (incident=65106): ORA-00

[20140418]使用dgmgrl管理dataguard(6).txt

[20140418]使用dgmgrl管理dataguard(6).txt 参考链接: http://blog.itpub.net/267265/viewspace-1142649/ http://blog.itpub.net/267265/viewspace-1143027/ http://blog.itpub.net/267265/viewspace-1143058/ http://blog.itpub.net/267265/viewspace-1143126/ http://blog.itp