调整重做日志缓冲区的大小
--调整LOG_BUFFER参数
--缺省值:512K或128K * cpu_count的值,二个中较大的一个
v$session_wait视图指明在”log buffer space%”事件过程中,是否存在因会话向日志缓冲区中写入数据的速度大于LGWR写出数据的速度,而产生的任何对日志缓冲区空间的等待。
select sid,event,second_in_wait,state from v$session_wait where event=’log buffer space%’
重做缓冲区再分配的统计比例:(redo buffer allocation retries)
redo buffer allocation retries 的值应该接近0。此数值不应大于重做条目的1%。如果该数值持续递增,则进程不得不等待缓冲区的空间。
SELECT r.VALUE "Retries",e.VALUE "Entries", r.VALUE/e.VALUE*100 "Percentage"
FROM v$sysstat r,v$sysstat e
WHERE r.NAME = 'redo buffer allocation retries'
AND e.NAME = 'redo entries'
|
等待可能是由于日志缓冲区太小、检查点操作或归档操作造成的。在这种情况下,可以:
--如果必要,通过更改初始化参数log_buffer的值来增加日志缓冲区的大小
--或者,改进检查点或归档进程
重做日志缓冲工通常很小,适当增加其大小可以显著提高吞吐量。
--因为不会发生日志切换,所以”log buffer space%”事件的seconds_in_wait值表明了用于等待重做日志缓冲区空间所用的时间。
这表明填充缓冲区的速度比LGWR写入更快,也可能表明在重做日志文件上发生了磁盘I/O
争用。
--v$sysstat视图中的” redo buffer allocation retries”统计信息反映了用户进程等待重做日志缓冲区空间的次数,等待日志缓冲区空间的目的是为了新条目复制到日志缓冲区,从而覆盖其中已被写出到磁盘的条目。LGWR的写入速度通常很快,足以确保缓冲区的空间总可以写入新条目,即使在对重做日志的访问很频繁也是如此。
重做日志缓冲区优化原则
不应出现”log buffer space”等待
select sid, event, seconds_in_wait, state from v$session_wait
where event = ‘log buffer space’;
|
“redo buffer allocation retries”值应接近0,并且小于重作条目的1%
select name,value from v$sysstat
where name in (‘redo buffer allocation retries’,’redo entries’;
|
“log buffer space%”事件seconds_in_wait参数
在v$session_wait中,如果”log buffer space%”事件的seconds_in_wait值表明在重做日志缓冲区中等待空间花费卫些时间,则可以考虑采取以下操作:
--如果日志缓冲区很小,则增加其大小
--将日志文件移动到更快的磁盘,如条带化磁盘。
select sid,event,second_in_wait,state
from v$session_wait
where event=’log buffer space%’;
|
研究LGWR释放缓冲区缓慢的可能原因:
--在重做日志文件中存在磁盘I/O争用。检查重做日志文件是否存储在单独的快速设备中。
a)在v$system_event视图中,检查发生 “log file switch completion%”事件的次数,该次数为由于日志切换而等待次数。
select event,total_waits,time_waited,average_wait from v$system_event
where event like ‘log file switch completion%’;
|
a) 如果在LGWR再次需要文件之前DBWn仍未完成设置文件检查点,LGWR将不得不等待。
--在alert.log文件中,检查”checkpoint not complete”消息。
--在v$system_event视图中,检查发生”log filel switch (check%”事件的次数,该次数为因未完成检查点而引起的日志文件切换等待的次数。
select event, total_waits, time_waited, average_wait
from v$system_event
where event like ‘log file switch(check%’;
|
--检查检查点的频率,并为fast_start_mttr_target设置相应的值。
--检查重做日志组的大小和数量。
b) 归档程序不能向已归档的重做日志文件中写入数据,或者完成归档操作的速度不够快。因此,它将阻止LGWR写入。
--确认归档设备空间未满,并添加重做日志组。
--在v$system_event视图中,检查发生”log file switch(arch%”事件的次数,该次数表明因归档问题而引起的日志文件切换等待的次数。
select event, total_waits,time_waited, average_wait
from v$system_event
where event like ‘log file switch(arch%’;
|
只要当前的ARCn进程数不足以处理工作量,LGWR进程就会启动新的ARCn进程。如果预计有繁重的归档工作量,例如,在批量加载数据期间,就可以用log_archive_max_processes初始化参数指定多归档程序进程的最大数量。此参数是动态参数,可以使用alter system语句进行更改。
分享到:
相关推荐
5. 调整重做日志缓冲区大小 重做日志缓冲区记录了数据库的变化,用于恢复操作。若该缓冲区设置过小,LGWR进程会频繁将日志写入磁盘,从而增加I/O操作次数,影响系统性能。因此,需要根据实际需要调整重做日志缓冲区...
重做日志缓冲区位于系统全局区(SGA)中,它是一个循环使用的内存区域,大小由参数`LOG_BUFFER`设定。这个缓冲区存放了数据修改前后的快照,包括插入、更新、删除、创建、修改或删除等操作的信息。当事务提交时,后台...
- innodb_log_buffer_size:重做日志缓冲区的大小,决定了一次写入磁盘的数据量。 - innodb_flush_log_at_trx_commit:控制事务提交时重做日志的刷新策略,有3种模式,1代表立即写入并同步到磁盘,2代表写入文件...
SGA是实例的核心,包含了多个内存子组件,如共享池、数据库缓冲区高速缓存、重做日志缓冲区、大型池和Java池等。这些组件协同工作,确保数据的快速访问和一致性。 数据库方面,Oracle数据库是一个数据的集合,由...
**操作目的:** 调整重做日志缓冲区大小。 **操作步骤:** 1. **登录到数据库:** - 使用 `sqlplus / as sysdba`。 2. **调整参数:** - 执行以下SQL命令,将 `new_size` 替换为所需的值: ```sql ALTER ...
在优化数据库性能方面,可以通过调整SGA的各个组成部分的大小,例如增大共享池、数据块高速缓冲区或重做日志缓冲区的大小来提升性能。同时,还可以使用如DB_CACHE_ADVICE这样的参数收集统计信息,以便更准确地预测和...
3. **重做日志缓冲区(Redo Log Buffer)**:重做日志缓冲区用于暂存事务处理过程中产生的重做记录,在提交时写入重做日志文件。适当调整其大小可以有效提高事务处理能力。 #### 三、内存优化配置策略 1. **确定合适...
重做日志缓冲区的大小也需根据事务的频率和大小来调整,确保日志信息能及时写入,避免阻塞其他操作。共享池的大小则影响SQL语句的解析和复用,如果发现解析过多的SQL或频繁的硬解析,可能需要增大共享池。 内存调优...
而调整重做日志缓冲区则有助于优化事务处理速度。 综上所述,Oracle性能调整是一个复杂的过程,涉及多个层面的优化。通过恰当的工具和方法,管理员可以有效地解决性能问题,确保数据库系统能够高效、稳定地运行,...
6. **LGWR进程**:LGWR负责将重做日志缓冲区的内容写入当前的重做日志文件组,这可能发生于事务提交、缓冲区满三分之一、超过1MB的改动或者DBWn写入数据文件前。 7. **检查点进程CKPT**:在检查点时,控制文件会...
- `log_buffer`:定义重做日志缓冲区的大小,过小会导致频繁的磁盘同步操作,增加系统开销。 - `log_file_sync`:控制重做日志的同步策略,适当调整可减少不必要的磁盘I/O。 #### 总结 Oracle数据库内存优化是一个...
- **重做日志缓冲区(Redo Log Buffer)** 的大小选择也会影响性能,过小的重做日志缓冲区会导致频繁的日志切换,增加LGWR的写操作频率。 通过以上对Oracle数据库体系结构的介绍,可以看出Oracle数据库是一个复杂而...
理解和配置SGA的大小、缓冲池的参数,以及重做日志缓冲区对于优化Oracle数据库性能至关重要。使用合适的参数值可以最大化内存资源的利用效率,提升数据库运行的速度和稳定性。调整这些参数通常需要对数据库的工作...
系统全局区(SGA)是Oracle实例中所有进程共享的内存区域,它包含数据高速缓冲区、共享池、重做日志缓冲区、大型池、Java池、流池以及其他一些结构。SGA的主要作用是存储和管理数据库操作过程中常用的数据和控制信息,...
Oracle例程中的后台进程负责数据库的日常维护,例如DBWn进程负责将数据缓冲区中的更改写入数据文件,LGWR进程将重做日志缓冲区的内容写入重做日志文件,CKPT进程触发检查点来同步数据库状态,SMON和PMON则负责系统的...
- SGA包括共享池(Share Pool)、数据缓冲区(DB Buffer Cache)、重做日志缓冲区(Redo Log Buffer)、大缓冲池(Large Pool)、Java池(Java Pool)和Stream Buffer(10g引入)等。 - 其中,数据缓冲区又细分为...
后台进程在Oracle实例中扮演着关键角色,如DBWR(数据库写入进程)负责将脏缓存块写回数据文件,LGWR(日志写入进程)将重做日志缓冲区的内容写入重做日志文件,SMON(系统监控进程)负责数据库的恢复和清理任务,...
通过适当调整重做日志缓冲区的大小,可以提高日志处理的效率,从而减少磁盘IO操作,加快事务处理速度。 3. 扩充高级缓冲区 高级缓冲区管理也是优化Oracle数据库性能的关键点之一。高级缓冲区如共享池、数据库缓冲...
本章节主要介绍如何监控和调整Oracle数据库的性能,包括如何收集和分析统计信息,以及针对SGA(System Global Area)、回滚段(Rollback Segments)和重做日志缓冲区(Redo Log Buffer)的调优策略。 首先,Oracle...