logfile switch causes incremental checkpoint?
SQL> select checkpoint_change# from v$datafile_header where status='ONLINE'; CHECKPOINT_CHANGE# ------------------166547616654761665476166547616654761665476 6 rows selected.SQL> alter system checkpoint; System altered.SQL> select checkpoint_change# from v$datafile_header where status='ONLINE'; CHECKPOINT_CHANGE#------------------169713116971311697131169713116971311697131 6 rows selected./* 手动执行checkpoint,数据文件头的checkpoint scn立即更新了 */SQL> alter system flush buffer_cache; System altered.SQL> select checkpoint_change# from v$datafile_header where status='ONLINE'; CHECKPOINT_CHANGE# ------------------169713116971311697131169713116971311697131 6 rows selected./* 单纯flush buffer cache冲刷数据库高速缓存不会更新数据文件头的checkpoint scn */SQL> alter system set log_checkpoints_to_alert=true; System altered.SQL> alter system set log_checkpoint_timeout=20; System altered./* 设置log_checkpoint_timeout为20s,频繁引发增量检查点 */alert log: Wed Nov 3 20:24:49 2010 Incremental checkpoint up to RBA [0x3d.dff1.0], current log tail at RBA [0x3d.dff6.0] Wed Nov 3 20:25:07 2010 Incremental checkpoint up to RBA [0x3d.dff7.0], current log tail at RBA [0x3d.dffc.0] Wed Nov 3 20:25:25 2010 Incremental checkpoint up to RBA [0x3d.dffd.0], current log tail at RBA [0x3d.e002.0] Wed Nov 3 20:25:43 2010 Incremental checkpoint up to RBA [0x3d.e003.0], current log tail at RBA [0x3d.e008.0] Wed Nov 3 20:26:01 2010 Incremental checkpoint up to RBA [0x3d.e009.0], current log tail at RBA [0x3d.e00e.0]SQL> set time on;20:26:38 SQL> select checkpoint_change# from v$datafile_header where status='ONLINE'; CHECKPOINT_CHANGE# ------------------1697131169713116971311697131169713116971316 rows selected./* 可以看到增量检查点并不会引起数据文件头的checkpoint scn 被更新 */20:26:43 SQL> alter system set log_checkpoint_timeout=1800; System altered./* 那么日志文件切换就会引起数据文件头的checkpoint scn被更新吗?*/20:28:10 SQL> alter system switch logfile; System altered.20:29:16 SQL> select checkpoint_change# from v$datafile_header where status='ONLINE'; CHECKPOINT_CHANGE# ------------------169713116971311697131169713116971311697131 6 rows selected./* logfile switch 日志文件切换引起的是一种slow慢的完全检查点,它不同于alter system checkpoint(ASC),ASC要求的脏块写出和控制文件及数据文件头更新时要立即完成的,也就是说当alter system checkpoint语句返回"System altered."后以上工作都已经完成了;而alter system switch logfile或者自然的日志切换引发的是一种慢的完全检查点,它在返回"System altered"时不要求写脏块等工作必须已经完成 *//* 我们可以用冲刷高速缓存的方式保证脏块写出的工作被督促完成 */20:33:39 SQL> alter system flush buffer_cache; System altered.20:33:45 SQL> select checkpoint_change# from v$datafile_header where status='ONLINE'; CHECKPOINT_CHANGE# ------------------1697544169754416975441697544169754416975446 rows selected./* 虽然日志切换所引发的slow checkpoint(慢的检查点)并无立即完成的要求,但也并非全无限制;当某次日志切换由1号日志组切换到2号日志组时,将引发一个slow checkpoint,之后日志连续切换又要切到1号日志组时要求之前的那个slow checkpoint在切换前必须完成 */20:41:35 SQL> set timing on;20:42:02 SQL> select * from v$log;GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------1 1 67 52428800 2 YES INACTIVE 1698288 2010-11-03 20:41:192 1 68 52428800 2 YES INACTIVE 1698292 2010-11-03 20:41:213 1 69 52428800 2 NO CURRENT 1698302 2010-11-03 20:41:35 Elapsed: 00:00:00.0020:42:17 SQL> delete tv; 51134 rows deleted. Elapsed: 00:00:01.6820:42:34 SQL> commit; Commit complete. Elapsed: 00:00:00.0020:42:36 SQL> alter system switch logfile; System altered. Elapsed: 00:00:00.0120:42:40 SQL> alter system switch logfile; System altered. Elapsed: 00:00:00.0120:42:43 SQL> alter system switch logfile; System altered. Elapsed: 00:00:02.0020:45:28 SQL> select checkpoint_change# from v$datafile_header where status='ONLINE'; CHECKPOINT_CHANGE# ------------------170068617006861700686170068617006861700686 6 rows selected. Elapsed: 00:00:00.00alter.log告警日志中的内容:Wed Nov 3 20:42:40 2010 Beginning log switch checkpoint up to RBA [0x46.2.10], SCN: 1700686 ........................... Wed Nov 3 20:42:45 2010 Thread 1 cannot allocate new log, sequence 72 Checkpoint not complete .................... Completed checkpoint up to RBA [0x46.2.10], SCN: 1700686/* 最近一次的日志切换耗费2s,在告警日志中可以看到此次slow checkpoint的相关记录 */
logfile switch causes incremental checkpoint?相关推荐
- Oracle checkpoint详解
checkpoint扫盲 top什么是checkpoint 在数据库系统中,写日志和写数据文件是数据库中IO消耗最大的两种操作,在这两种操作中写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据 ...
- Oracle CheckPoint进程
在实例经过分配内存结构,加载控制文件后,然后要打开数据库的时候,需要做到控制文件,数据文件,联机重做日志保持相互状态一致性,数据库才可以打开.当数据库发生实例不正常关闭时(比如系统掉电或者Shutdo ...
- Oracle checkpoint 说明
一. Oracle Checkpoint 说明 1.1 Checkpoint (1)A synchronization event at aspecific point in time (2)Cau ...
- redolog switch会发生完全检查点还是增量检查点?
网上有很多资料都没有说清楚发生log switch的时候,到底完全检查点还是增量检查点.有人说是完全检查点,也有人说是增 量检查点.其实如果你深入了解完全检查点和增量检查点的的区别,就应该知道log ...
- oracle中的checkpoint,Oracle checkpoint详解
checkpoint扫盲 什么是checkpoint 在数据库系统中,写日志和写数据文件是数据库中IO消耗最大的两种操作,在这两种操作中写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库的性 ...
- oracle中的checkpoint,详解oracle checkpoint
这篇文章,源于群中几位网友的疑问,故打算写这篇文章给其释疑. 1. 何为检查点?其存在的意义? 2. 检查点的有哪些分类?检查点的结构如何?什么是checkpoint queue? 通俗的将,检查点仅 ...
- 【数据库管理】⑧检查点checkpoint
1. checkpoint的本质 Checkpoint是Oracle数据库中的一种机制,用于将内存中的数据写入磁盘,以保证数据的持久性和一致性.Checkpoint的本质是将数据库中的脏数据(即已经被 ...
- 什么是checkpoint (转)
checkpoint是什么? z~Pi\*N#^"u-s!n*e4^0checkpoint是数据库的一个内部事件, -g[gh$l)i q0这个事件激活以后会触发数据库写进程(DBWR)将数 ...
- oracle checkpoint检查点
检查点 检查点只是一个数据库事件,它存在的根本意义在于减少崩溃恢复(crash recovery)时间.检查点事件由ckpt后台进程触发,当检查点发生时,ckpt进程会负责通知dbwr进程将脏数据(d ...
最新文章
- python赋值语句的一般格式为_Python 基础语法
- 【干货】105页周志华教授《机器学习手推公式》开源PDF
- 关于AJAX 第三篇
- 进制转换与ascll码利用
- cordova:Error: Cannot find module '../cordova/platform_metadata'
- 日常生活小技巧 -- 网络调试助手
- hdu 2025 查找最大元素
- PMP敏捷图表之价值流程图
- easymock教程_EasyMock教程–入门
- 配置文件 web.config 的讨论
- win7电脑内存信息的查看方法
- linux装Oracle需要jdk,告诉你Ubuntu Linux下安装Oracle JDK的方法及命令
- oracle循环数据,oracle循环插入数据
- Windows上使用 OpenOCD 给 STM32 下载程序
- 开元酒店在中国的签约及在营酒店规模正式超过600家
- html5文字云在线制作,一键生成高大上的文字云,这5个工具值得推荐。
- 手写迷你Spring框架
- Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP)
- 论文笔记 Dependent Gaussian Processes 相关高斯过程
- Android 优化开机启动