`
哇哈哈852
  • 浏览: 92027 次
文章分类
社区版块
存档分类
最新评论

RAC数据库中的'log file sync'等待事件

阅读更多


RAC 数据库中的'log file sync' 等待事件要比单机数据库中的'log file sync' 等待事件复杂,主要原因是由于RAC 数据库需要将SCN同步到所有实例。

    单机数据库中的'log file sync' 等待事件,当user session 提交(commit)时,user session会通知LGWR进程将redo buffer中的信息写入到redo log file,当LGWR进程完成写操作后,LGWR再post(通知)user session 写操作已经完成,user session 接收到LGWR的通知后提交操作才完成。因此user session 在没有收到LGWR post(通知)之前一致处于等待状态,具体的等待事件为'log file sync'。在RAC数据库中为了一致性读,需要将Commit SCN同步/传播到所有的节点上。SCN同步/传播的主要方法有两种:Lamport SCN 和 immediate commit propagation (BOC)。
    10gR1 及以下版本默认使用Lamport SCN,Lamport SCN方式即一个节点上的commit SCN 不保证立刻同步/传播到所有节点,也就是说可能延时同步/传播,对于一些实时性要求高的RAC数据库Lamport SCN方式是不可取的。如果希望commit SCN 立刻同步/传播到所有节点,手动修改参数MAX_COMMIT_PROPAGATION_DELAY=1。从10gR2开始默认使用immediate commit propagation (BOC),BOC即一个节点上的commit SCN 立刻同步/传播到所有节点。

    介绍 immediate commit propagation (BOC)的工作原理:
1. user session 执行提交(commit),user session会通知LGWR进程将redo buffer中的信息写入到redo log file;
2. LGWR进程收到user session通知后,将redo buffer中的信息写入redo log file,同时LGWR 将COMMIT SCN 同步/传播给远程的数据库实例的LMS 进程;
3. 远程数据库实例的LMS将commit SCN同步到本地SCN,然后通知commit实例的LMS,表示SCN 同步已经完成;
4. 当commit 实例的LMS接收到所有远程数据库实例的LMS的通知后,commit 实例的LMS再通知本地的LGWR 所有节点SCN同步已经完成;

5. LGWR 在完成了IO 操作和LMS进程通知后,LGWR通知user session commit 成功。user session在没有收到LGWR通知前,一直处于等待log file sync;
    通过以上原理的说明,我们不难看出来导致'log file sync' 等待事件的主要原因有:

1. 磁盘IO 慢导致LGWR进程将redo buffer中的信息写入到redo log file速度慢;

2. user session commit过于频繁;

3. 本地或者远程服务器CPU资源不足,导致LMS和/或者LGWR不能及时得到CPU调度,不能正常工作;

4. RAC私有网络性能差,导致LMS同步commit SCN慢;

5. Oracle BUG;
  • 大小: 43.2 KB
分享到:
评论

相关推荐

    监控oracle的等待事件

    4. 提交确认类:如 log file sync 等待,发生在提交命令执行后等待重做日志写入确认。 5. 并发类:由内部资源争用导致,如闩锁等待。 6. 配置类:由数据库或实例配置不当引起,如重做日志文件大小不足,共享池大小不...

    Oracle常见等待事件说明

    Oracle数据库在运行过程中,会遇到各种等待事件,这些等待事件是数据库性能分析的重要线索,帮助DBA(数据库管理员)理解数据库的运行状况并优化性能。本文将深入解析Oracle中的常见等待事件,特别是其中的十大等待...

    30种oracle常见的等待事件说明.zip_oracle

    12. **Log File Sync**: 事务提交时,等待日志文件同步。优化事务大小和频率,以及I/O子系统性能可减轻。 13. ** PGA Memory**: 当PL/SQL进程等待PGA内存分配时。调整PGA内存限制和优化PL/SQL代码以减少内存消耗。 ...

    ORACLE 11GRAC配置单实例ADG

    ALTER SYSTEM SET log_archive_dest_2='service=racdg sync valid_for=(online_logfiles,primary_role) db_unique_name=racdg' SCOPE=BOTH SID='*'; ``` - 启用归档目的地1: ```sql ALTER SYSTEM SET log_...

    Oracle Wait Interface性能诊断与调整实践指南

    例如,"db file sequential read"表示数据文件的顺序读取,"log file sync"则意味着日志文件同步,这些都是常见的等待事件。 在实践中,分析等待事件通常涉及以下步骤: 1. **收集等待事件数据**:使用如`v$session...

    oracle 常见等待事件及处理方法

    Oracle数据库在运行过程中可能会遇到各种等待事件,这些事件通常是数据库性能瓶颈的指示器。下面将对几个常见的等待事件进行详细解释,并提供相应的处理方法。 1. **db file scattered read**:这种等待事件通常与...

    Oracle10g数据库自动诊断监视工具

    7. **等待事件**:包括行级锁等待、ITL(Intent To Lock)条目不足导致的等待、提交和回滚(logfile sync事件)过多,以及由于管道输出导致的延迟。 8. **IO性能**:ADDM关注磁盘IO吞吐量不足、日志文件太小导致的...

    Oracle数据库的优化建议.docx

    - **参数设置**:例如`_use_adaptive_log_file_sync`控制日志同步方式,post/wait模式可能消耗大量CPU资源,而polling方式则可能导致延迟感知。应避免频繁切换以减少性能影响。`archive_lag_target`用于设置日志...

    Oracle面试题

    - **Wait Events:** 等待事件,记录了数据库操作中的等待情况。 #### 19. Latch 锁和 Lock 锁的区别 - **知识点:** - **Latch:** 数据库内部使用的轻量级锁,用于保护数据结构。 - **Lock:** 数据库并发控制...

    DAVE Oracle DG 学习笔记

    - **配置数据库发送 redo 数据**:通过 `log_archive_dest_n` 参数来指定重做日志的传输目的地及相关属性。 - 参数解释: - `service`: 指定目标服务名。 - `sync`: 同步发送重做日志。 - `async`: 异步发送...

    Oracle通过LogMiner实现数据同步迁移

    7. **加入需要分析的日志文件**:添加要分析的redo日志文件,通过`dbms_logmnr.add_logfile`过程指定日志文件路径和选项。你可以根据实际的redo log文件位置和数量执行此步骤多次。 8. **分析日志并同步数据**:...

Global site tag (gtag.js) - Google Analytics