`

oracle_警告日志信息:Private Strand Flush Not Complete

 
阅读更多

Applies to:

Oracle Database - Enterprise Edition - Version 10.2.0.1 to 11.2.0.3 [Release 10.2 to 11.2]
Information in this document applies to any platform.

Symptoms

在警报日志中发现信息“Private strand flush not complete”,示例如下:

Mon Jan 23 16:09:36 2012
Thread 1 cannot allocate new log, sequence 18358
Private strand flush not complete
Current log# 7 seq# 18357 mem# 0: /u03/oradata/bitst/redo07.log
Thread 1 advanced to log sequence 18358
Current log# 8 seq# 18358 mem# 0: /u03/oradata/bitst/redo08.log

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 应当能够产生更高的吞吐量。

分享到:
评论

相关推荐

    DBA优化数据库性能心得

    作为一名专业的Oracle DBA,优化数据库性能是日常工作中至关重要的任务。在面对应用性能下降的问题时,我们往往会发现数据库响应变慢。此时,我们不能再仅仅依赖于传统的指标,而是需要转向优化等待事件,即关注...

    webpack-flush-chunks::pile_of_poo:服务器到客户端的块发现+通用渲染的传输

    :bottle_with_popping_cork: :bottle_with_popping_cork: :bottle_with_popping_cork: :rocket: :rocket: :rocket: Webpack 4演示更新正在进行中现在支持Webpack 4积极的代码拆分我们更新了webpack-flush-chunks以...

    MYSQL数据库技术分享.pptx

    MYSQL数据库技术分享 ...* innodb_flush_log_at_trx_commit:以什么方式刷新日志到磁盘。 这些参数的设置可以影响MYSQL数据库的性能和安全性。通过合理的参数设置,可以提高数据库的性能和可靠性。

    my.cnf-调优

    - **log-error**: 错误日志文件路径,用于记录MySQL运行过程中出现的错误信息。 - **log**: 通用日志文件路径,用于记录所有查询语句等信息。 - **max_connections**: 最大连接数,根据服务器资源合理设置可以有效...

    MySQL参数说明

    * innodb_flush_method:刷新日志的方法 * innodb_additional_mem_pool_size:innodb 内存池的大小,存放着各种内部使用的数据结构 * innodb_data_home_dir:InnoDB 数据文件的目录 * innodb_data_file_path:数据...

    mysql数据库配置模板

    4. **innodb_flush_log_at_trx_commit**: 调整此参数可平衡事务日志的持久性和性能,一般推荐设置为1或2。 5. **log_bin**: 开启二进制日志记录有助于实现数据恢复和主从复制。 6. **expire_logs_days**: 根据实际...

    oracle DBA_TAB_MODIFICATIONS 刷新

    Oracle DBA_TAB_MODIFICATIONS 是一个系统视图,用于跟踪数据库中的表在最近的DML(数据操纵语言)操作后的变化情况。这个视图是数据库性能监控的重要工具,它记录了表的插入、更新和删除等操作的信息。然而,它有...

    达梦读写分离集群搭建文档

    - **RLOG_SEND_APPLY_MON**: 设置为64,表示统计最近64次的日志发送信息。 2. **配置dmarch.ini**:此文件主要用于配置归档策略,确保数据的安全性和持久性。 - **ARCH_TYPE**: 归档类型,通常设置为LOCAL。 - *...

    oralce 10g

    ### Oracle 10g V$ Views与Global V$ Views详解 #### 一、概述 Oracle 10g作为Oracle数据库的一个重要版本,在性能优化、安全增强以及管理简化等方面进行了显著改进。其中,V$ views(动态性能视图)是Oracle...

    mysql 主从数据不一致,提示: Slave_SQL_Running: No 的解决方法

    此外,本文还提到了MySQL查询技巧、常用函数、日志操作、事务操作、存储过程以及数据库锁等相关技巧,这些内容对于深入理解和掌握MySQL数据库管理同样具有很高的实用价值。希望本文所述的内容能对维护MySQL数据库的...

    MySQL主从配置完整步骤资料

    mysql> FLUSH TABLES WITH READ LOCK; ``` - **目的**: 防止在创建复制时有写操作发生,确保复制的一致性。 **1.5 获取binlog文件信息** - **命令**: ```sql mysql> SHOW MASTER STATUS; ``` - **结果示例**:...

    ThreadX内核用户手册,含SMP多核(中文版).pdf

    * tx_queue_flush():清空队列中的消息 * tx_queue_front_send():发送消息到队列的前端 * tx_queue_receive():从队列中接收消息 * tx_queue_send_notify():发送消息到队列并通知接收方 ThreadX SMP 用户指南 ...

    关于MySQL性能调优你必须了解的15个重要变量(小结)

    4. **INNODB_FLUSH_LOG_AT_TRX_COMMIT**: 这个变量控制事务日志何时写入磁盘。默认值1表示每次事务提交后立即同步,可能导致较高的磁盘I/O。值0和2可以减少同步频率,提高性能,但牺牲了一定的数据安全性。根据业务...

    BIos原代码《陈文钦》

    mov al,cgroup:_refresh_value; low byte count out 41h,al mov cx,100h ; 400h..01/11/95 xor di,di mov es,di wpulse1: stosb loop wpulse1 ;---------------------------------------; extrn vanilla_...

    InnoDB性能优化参数详解.docx

    6. **innodb_flush_log_at_trx_commit**:这个参数决定事务日志何时被刷入磁盘。设置为1表示每次提交事务都会同步到磁盘,确保强一致性但可能影响性能;设置为0或2则牺牲一致性以提高性能,但可能导致数据丢失。 7....

    MTK文件系统API

    - **FS_GetDevStatus**:查询设备状态,包括但不限于读写能力、空间信息等。 - **FS_Abort**:中断正在进行的文件操作。 - **FS_FindFirstN**与**FS_FindNextN**:查找文件列表中的第一个或下一个N个文件。 - **FS_...

    关羽Mysql的优化

    8. **innodb_flush_log_at_trx_commit**:控制事务提交时日志的刷新策略。设置为0表示不刷新,1表示每次提交都刷新到磁盘,2表示刷新到操作系统缓存。选择合适的值可以平衡性能和数据安全性。 9. **table_cache**:...

    mysql核心参数

    - **innodb_flush_log_at_trx_commit**: 控制InnoDB是否将日志缓冲区的内容写入日志文件中,这直接影响到数据的安全性和系统的性能。 - **sync_binlog**: 设置每执行一条SQL语句之后是否同步二进制日志到磁盘,以...

    NRF24L01与msp430收发例程c语言

    根据提供的文件信息,本文将详细解释NRF24L01与msp430结合使用的C语言编程示例,特别是如何通过控制引脚实现对NRF24L01无线模块的操作。 ### NRF24L01简介 NRF24L01是一款低成本、高性能的2.4GHz无线收发芯片,它...

    两阶段提交1

    - `Clone_persist_gtid::flush_gtids` 和 `Clone_persist_gtid::periodic_write`:这些函数处理GTID的定期写入,确保在一定周期内将事务信息刷新到磁盘,防止数据丢失。 - `clone_gtid_thread`:这是一个后台线程,...

Global site tag (gtag.js) - Google Analytics