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
分享到:
相关推荐
4. 提交确认类:如 log file sync 等待,发生在提交命令执行后等待重做日志写入确认。 5. 并发类:由内部资源争用导致,如闩锁等待。 6. 配置类:由数据库或实例配置不当引起,如重做日志文件大小不足,共享池大小不...
Oracle数据库在运行过程中,会遇到各种等待事件,这些等待事件是数据库性能分析的重要线索,帮助DBA(数据库管理员)理解数据库的运行状况并优化性能。本文将深入解析Oracle中的常见等待事件,特别是其中的十大等待...
12. **Log File Sync**: 事务提交时,等待日志文件同步。优化事务大小和频率,以及I/O子系统性能可减轻。 13. ** PGA Memory**: 当PL/SQL进程等待PGA内存分配时。调整PGA内存限制和优化PL/SQL代码以减少内存消耗。 ...
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_...
例如,"db file sequential read"表示数据文件的顺序读取,"log file sync"则意味着日志文件同步,这些都是常见的等待事件。 在实践中,分析等待事件通常涉及以下步骤: 1. **收集等待事件数据**:使用如`v$session...
Oracle数据库在运行过程中可能会遇到各种等待事件,这些事件通常是数据库性能瓶颈的指示器。下面将对几个常见的等待事件进行详细解释,并提供相应的处理方法。 1. **db file scattered read**:这种等待事件通常与...
7. **等待事件**:包括行级锁等待、ITL(Intent To Lock)条目不足导致的等待、提交和回滚(logfile sync事件)过多,以及由于管道输出导致的延迟。 8. **IO性能**:ADDM关注磁盘IO吞吐量不足、日志文件太小导致的...
- **参数设置**:例如`_use_adaptive_log_file_sync`控制日志同步方式,post/wait模式可能消耗大量CPU资源,而polling方式则可能导致延迟感知。应避免频繁切换以减少性能影响。`archive_lag_target`用于设置日志...
- **Wait Events:** 等待事件,记录了数据库操作中的等待情况。 #### 19. Latch 锁和 Lock 锁的区别 - **知识点:** - **Latch:** 数据库内部使用的轻量级锁,用于保护数据结构。 - **Lock:** 数据库并发控制...
- **配置数据库发送 redo 数据**:通过 `log_archive_dest_n` 参数来指定重做日志的传输目的地及相关属性。 - 参数解释: - `service`: 指定目标服务名。 - `sync`: 同步发送重做日志。 - `async`: 异步发送...
7. **加入需要分析的日志文件**:添加要分析的redo日志文件,通过`dbms_logmnr.add_logfile`过程指定日志文件路径和选项。你可以根据实际的redo log文件位置和数量执行此步骤多次。 8. **分析日志并同步数据**:...