合 【MOS】RAC 环境中最常见的 5 个数据库和或实例性能问题 (Doc ID 1602076.1)
Tags: OracleMosgc lost blockslog file sync
RAC 环境中最常见的 5 个数据库和/或实例性能问题 (Doc ID 1602076.1)
Top 5 Database and/or Instance Performance Issues in RAC Environment (Doc ID 1373500.1)
用途
本文旨在提供关于 RAC 环境中最常见的数据库和/或实例性能问题的摘要以及可能的解决方案
请注意,问题 3(Mutexes 上的大量等待)和问题 5(高 CPU 和内存开销)是一般性数据库问题,并非特定于 RAC 的问题。不过,本文中讨论这些问题是因为这些是最常见的问题之一,会在 RAC 环境中的某一个实例发生。
适用范围
DBAs
详细信息
问题 1:大量块丢失 (gc lost blocks, gc current/cr lost blocks)
症状
I. AWR 报告中显示有大量块丢失。
II. netstat -s 报告数据包重新组装故障(reassambly failure)和丢失数据包(dropped packets)增加。
解决方案
使用以下文档进行故障排除并解决丢失块问题。该文档描述了症状、可能原因以及解决方案。
Document 563566.1 - gc block lost diagnostics
问题 2:大量 log file sync 等待
症状
I. AWR 报告中显示 log file sync 始终位于 Top 5 等待事件列表中。
II. 平均 log file sync 时间很长(> 20 毫秒)。
III. 平均 log file parallel write 时间很长(> 10 毫秒)。
III. 平均 redo write broadcast ack time 或者 wait for scn ack 时间很长(> 10 毫秒)。
IV. 平均 log file sync 时间很短,但 log file sync 等待次数太多。
背景
用户会话在提交或回退时,会话的重做信息需要由 LGWR 刷新到重做日志文件。用户会话等待“log file sync”的同时,等待 LGWR 通知确认所有重做更改已安全存放在磁盘上。
示例:
WAIT #0: nam='log file sync' ela= 977744 buffer#=754 p2=0 p3=0 obj#=114927 tim=1212384670107387
参数:
P1 = buffer#
P2 = 未使用
P3 = 未使用
obj# = object_id
对这个 buffer(在重做日志缓冲区)的所有更改必须刷新到磁盘并确认写入,以确保事务处理已提交,并且在实例关闭之前一直保持为已提交状态。
“log file sync”等待的典型生命周期
- 用户会话发布提交或回退操作,然后开始等待 log file sync。
- LGWR 收集要写入重做日志文件的重做信息,发布 IO 并将 BOC 入队到 LMS 进程,然后通知 LMS 进程。
- LGWR 等待将重做信息刷新到磁盘以及等待 SCN 被确认收到
- 完成 IO 并从 LMS 收到 SCN 的确认信息,表示写入完成。LGWR 然后通知前台进程继续。
- 前台进程被唤醒,并且 log file sync 等待结束。
与 log file sync 相关的重要统计信息和事件
redo write time - 从重做日志缓冲区向当前重做日志文件写入所用的总时间,以10毫秒为单位。
redo writes - LGWR 向重做日志文件写入的总次数。“写入重做块数”除以此 统计信息等于每次写入的块数。
log file parallel write - 完成 I/O 的用时。虽然重做记录是并行写入的,但在最后一个 I/O 写入到磁盘上之前,并行写入不会完成。
redo write broadcast ack time - 在提交时,除了日志写入等待时间之外,与广播相关的总等待时间长度,以毫秒为单位。
user commits - 用户提交的数量。在用户提交事务时,必须将所生成的、反映对数据库块更改的重做写入到磁盘。提交操作通常代表的是最接近用户事务率的内容。
user rollbacks - 用户手动发布 ROLLBACK 语句的次数或者用户事务处理出误的次数。
Document 1064487.1 - Script to Collect Log File Sync Diagnostic Information (lfsdiag.sql) 中提供的脚本可以用于搜集诊断log file sync问题的有用信息。
可能原因
I. 重做日志文件所在设备的 IO 服务时间和吞吐量不理想。
II. Oracle Bug。有关已知 Oracle Bug,请查看 WAITEVENT: "log file sync" Reference (Document 34592.1)。
III. LMS 未在 RT(实时)类中运行。
IV. LGWR 进程调度延迟。
V. 提交数太多。
VI. 操作系统资源紧张。
解决方案