CKPT,SCN
CKPT进程:完全检查点
ckpt进程的作用,触发全局检查点,通过DBWR将buffer_cache中的所有脏块写入数据文件中;由于DBWR的机制,因此lgwr会先写,然后dbwr后写。
当完全检查点被触发时,也就是ckpt被触发,经常触发会造成,大量集中的IO操作,影响性能。
为什么要这个CKPT这个进程,数据一致性关库情况下,默认触发次进程,为了保存数据;如果数据库突然掉电了,内存中的大量脏块数据没了,Oracle数据库启动后会检测,开启实例恢复,实例恢复的起点,就是最近一次的检查点事件;
也就是说,如果长时间未执行CKPT进程,那么实例恢复需要超长的时间,这显然是不科学的;
因此Oracle引入了增量检查点的概念,增量检查点,通知DBWR写脏块,将上次检查点至今的脏块,放入buffer_cache中的脏队列中,等到DBWR进程自动触发条件写(详细DBWR什么时候写,请看上篇博客DBWR写进程),然后每隔3S,CKPT进程检查脏队列,最近一次的增量检查点记录SCN往前移动,减少实例恢复的前滚时间;
检查点有什么作用? 定位从何时 开始recover操作;
检查点区分: 全局检查点:所有数据块的修改,从Buffer_cache中写入datafiles文件中,造成大量集中的磁盘IO;
增量检查点:阶段性的保存被修改的块,作用为了减少实例恢复的时间,让实例恢复的起点从完全检查点转为最近的一次增量检查点;
部分检查点:定位从什么时候开始备份,用于恢复使用时从备份点开始恢复;
检查点,如何记录,通过SCN,SCN是什么是系统改变号,为何不用时间,因为时间是可以修改的,而SCN号,唯一不重复,作为Oracle数据库的内部时钟;
SCN有几种? 控制文件记录的SCN,数据文件头部记录的SCN,日志文件记录的SCN,最新的SCN号;
-----一直在说检查点,如何查看呢?
SQL> show parameter alert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_checkpoints_to_alert boolean FALSE
SQL> alter system set log_checkpoints_to_alert=true; 修改参数后,生成的检查点会写入告警日志
System altered.
完全检查点:手动触发: alter system checkpoint;
被动触发:数据库一致性关库时,会触发一次CKPT进程;
影响完全检查点的参数:
SQL> show parameter fast_start_mttr_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fast_start_mttr_target integer 600 (s)
-Oracle检查600秒没有发生一个完全检查点,则触发检查点;
-如果是0,不是说不触发了,而是Oracle自己根据数据库的运行情况自动判断,来自主选择执行时间;
SQL> show parameter log_checkpoint_timeout--距离上一次的检查点,1800秒后,触发增量检查点
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_checkpoint_timeout integer 1800
SQL> show parameter log_checkpoint_inter --距离上一次的检查点,A/512=B=操作系统块数,当日志文件写到了A的大小时,触发条件
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_checkpoint_interval integer 0 =A
----修改参数后,切换日志可以在alter.log日志中查看到增量检查点触发提示:
alter system set log_checkpoints_to_alert=true;
--通知DBWR写脏块,都放在检查点队列中,等待写出
Beginning log switch checkpoint up to RBA [0x13.2.10], SCN: 412322
Thread 1 advanced to log sequence 19 (LGWR switch)
日志切换到央行开始检查点SCN:[ 0x13.2.10 ],412322
线程1先进的日志序列19(LGWR开关)
部分检查点:
Oracle锁定数据文件头,不会锁表空间,不影响dml操作;
把更备份表空间相关的脏块写入数据文件;
备份期间,表空间的数据块被修改,Oracle会把数据块的镜像写入redolog,一般情况只写入数据块写入redo,备份期间,操作系统cp等uman操作,因为备份期间可以DML操作,如果拷贝的数据块,版本变化如何处理?不一致的备份,orale使用redo记录整体块的镜像;因此导致redo文件增加;
--发生一个检查点:alter system checkpoint; 数据文件+控制文件都会更新SCN;
--备份的表空间SCN不会更新,数据文件头被锁定;
-表空间offline;
操作验证:
SQL> select NAME,CHECKPOINT_CHANGE# from v$datafile;
/picclife/app/hukou/data/undotbs01.dbf 436567
/picclife/app/hukou/data/users01.dbf 436567
SQL> select NAME,CHECKPOINT_CHANGE# from v$datafile_header;
/picclife/app/hukou/data/undotbs01.dbf 436567
/picclife/app/hukou/data/users01.dbf 436567
SQL> alter tablespace users offline;
SQL> alter system checkpoint;
SQL> select NAME,CHECKPOINT_CHANGE# from v$datafile;
/picclife/app/hukou/data/undotbs01.dbf 436623
/picclife/app/hukou/data/users01.dbf 436592
SQL> select NAME,CHECKPOINT_CHANGE# from v$datafile_header;
/picclife/app/hukou/data/undotbs01.dbf 436623
0
-以上对比:在数据库表空间离线后,控制文件记录的数据文件SCN,离线的数据文件不变,数据文件头部的SCN转为0,因为在此时,做了部分检查点操作;
alter tablespace users online; 以下,数据库表空间转为在线后,控制文件记录与数据文件SCN保持一致,且超出普通的表空间的SCN号;
/picclife/app/hukou/data/undotbs01.db 436623
/picclife/app/hukou/data/users01.dbf 436658 --
SQL> select NAME,CHECKPOINT_CHANGE# from v$datafile_header;
/picclife/app/hukou/data/undotbs01.db 436623
/picclife/app/hukou/data/users01.dbf 436658
CKPT,SCN的更多相关文章
- [20190416]11g下那些latch是Exclusive的.txt
[20190416]11g下那些latch是Exclusive的.txt --//昨天测试了11g下那些latch是共享的,链接:--//是否反过来剩下的都是Exclusive的.继续测试: 1.环境 ...
- SCN
SCN 一.SCN的引入 众所周知,当oracle实例崩溃时,oracle通过检查点队列使用CKPT进程,周期性的将LRBA记入控制文件,以记录读取REDO LOG的范围.确定范围之后,oracle首 ...
- CKPT进程工作机制
CKPT进程工作示意图 2.CKPT进程工作机制 检查点进程被触发的条件为: a> 当发生日志组切换时: b> 用户提交了事务时(commit): c> Redo log buf ...
- Oracle SCN机制解析
SCN(System Chang Number)作为oracle中的一个重要机制,在数据恢复.Data Guard.Streams复制.RAC节点间的同步等各个功能中起着重要作用.理解SCN的运作机制 ...
- Oracle数据库中几种常见的SCN
控制文件中的SCN 数据文件头的SCN 数据块中的SCN 日志文件头中的SCN 事务SCN 内存中的SCN 一 控制文件中的SCN 1.1 数据库SCN 数据库SCN表示最近一次全量checkpoin ...
- oracle(十一) scn
SCN(System Chang Number)作为oracle中的一个重要机制,在数据恢复.Data Guard.Streams复制.RAC节点间的同步等各个功能中起着重要作用. 理解SCN的运作机 ...
- oracle 基础知识(三)--SCN
一,SCN的介绍 SCN(System Change Number),也就是通常所说的系统改变号或者系统提交号,是数据库中非常重要的一个数据结构. SCN用以标识数据库在某个确切时刻提交的版本 ...
- 检查点和SCN
有一家叫甲骨文的粮店,老板很严谨,为了防止仓库的粮食在买入卖出的时候发生问题,他制订一套流程,首先进出仓库的每一旦粮食都要求有一个编号(SCN),而且出入库之前必须先放到一个平台上(buffer ca ...
- Oracle SCN 详解
一.简介 scn,system change number 在某个时间点定义数据库已提交版本的时间戳标记,Oracle为每个已提交事务分配一个唯一的scn,scn值是对数据库进行更改的逻辑时间点.sc ...
随机推荐
- 转载:RESTful API 设计指南
http://www.ruanyifeng.com/blog/2014/05/restful_api.html 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板. ...
- map/multimap_01
标准的关联式容器 键值对序列 基于key的快速检索能力 key按序排列,按序插入 红黑树变体的平衡二叉树 对key来说支持 mapT[key] 和 mapT.at(key) multimap 不支持 ...
- http 相关文章
1. 百度百科 2.http | MDN 3.协议讲解 4.经典题 5.http与https的区别 6. http服务器返回状态总结 7.网络七层协议 开放式系统互联参考模型(OSI)的7层从上到下分 ...
- English trip -- VC(情景课)5 B Places around town 城市设施
Vocabulary focus 核心词汇 drugstore 药店: pill n. 药丸:弹丸,子弹:口服避孕药 medicine n. 药:医学:内科:巫术 hos ...
- Java基础-封装(09)
通过对象直接访问成员变量,会存在数据安全问题(比如年龄不能为负).这个时候,我们就不能让外界的对象直接访问成员变量. private关键字 是一个权限修饰符.可以修饰成员(成员变量和成员方法)被pri ...
- 『科学计算_理论』SVD奇异值分解
转载请声明出处 SVD奇异值分解概述 SVD不仅是一个数学问题,在工程应用中的很多地方都有它的身影,比如前面讲的PCA,掌握了SVD原理后再去看PCA那是相当简单的,在推荐系统方面,SVD更是名声大噪 ...
- vs2015下通过opencv使用hdf5
因为使用Kinect SDK编程,又需求高速文件I/O,所以通过opencv接口使用hdf5. (opencv 3.1以上版本,在其Extra Modules中支持hdf5) 一. 环境 OS: Wi ...
- 用DFS 解决全排列问题的思想详解
首先考虑一道奥数题目: □□□ + □□□ = □□□,要将数字1~9分别填入9个□中,使得等式成立.例如173+286 = 459.请输出所有合理的组合的个数. 我们或许可以枚举每一位上所有的数,然 ...
- kaptcha验证码使用
参数配置: Constant 描述 默认值 kaptcha.border 图片边框,合法值:yes , no yes kaptcha.border.color 边框颜色,合法值: r,g,b (and ...
- 简话Angular 05 Angular表单验证
一句话: 可以使用所有html5表单验证功能,同时Angular还增强了部分验证,支持动态验证 1. 上源码 <div ng-controller="ExampleController ...