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的更多相关文章

  1. [20190416]11g下那些latch是Exclusive的.txt

    [20190416]11g下那些latch是Exclusive的.txt --//昨天测试了11g下那些latch是共享的,链接:--//是否反过来剩下的都是Exclusive的.继续测试: 1.环境 ...

  2. SCN

    SCN 一.SCN的引入 众所周知,当oracle实例崩溃时,oracle通过检查点队列使用CKPT进程,周期性的将LRBA记入控制文件,以记录读取REDO LOG的范围.确定范围之后,oracle首 ...

  3. CKPT进程工作机制

    CKPT进程工作示意图 2.CKPT进程工作机制 检查点进程被触发的条件为: a> 当发生日志组切换时: b>  用户提交了事务时(commit): c>  Redo log buf ...

  4. Oracle SCN机制解析

    SCN(System Chang Number)作为oracle中的一个重要机制,在数据恢复.Data Guard.Streams复制.RAC节点间的同步等各个功能中起着重要作用.理解SCN的运作机制 ...

  5. Oracle数据库中几种常见的SCN

    控制文件中的SCN 数据文件头的SCN 数据块中的SCN 日志文件头中的SCN 事务SCN 内存中的SCN 一 控制文件中的SCN 1.1 数据库SCN 数据库SCN表示最近一次全量checkpoin ...

  6. oracle(十一) scn

    SCN(System Chang Number)作为oracle中的一个重要机制,在数据恢复.Data Guard.Streams复制.RAC节点间的同步等各个功能中起着重要作用. 理解SCN的运作机 ...

  7. oracle 基础知识(三)--SCN

    一,SCN的介绍     SCN(System Change Number),也就是通常所说的系统改变号或者系统提交号,是数据库中非常重要的一个数据结构. SCN用以标识数据库在某个确切时刻提交的版本 ...

  8. 检查点和SCN

    有一家叫甲骨文的粮店,老板很严谨,为了防止仓库的粮食在买入卖出的时候发生问题,他制订一套流程,首先进出仓库的每一旦粮食都要求有一个编号(SCN),而且出入库之前必须先放到一个平台上(buffer ca ...

  9. Oracle SCN 详解

    一.简介 scn,system change number 在某个时间点定义数据库已提交版本的时间戳标记,Oracle为每个已提交事务分配一个唯一的scn,scn值是对数据库进行更改的逻辑时间点.sc ...

随机推荐

  1. 关于nohup 和 &的使用

    nohup  是 no hang up 的缩写,意思是不挂断运行,一直运行下去,永久运行下去,但是注意并没有后台运行的功能 & 是在后台运行的意思 单独使用一个命令,还不能在终端关闭的时候,让 ...

  2. IDEA配置GIT

    注:此方法可用于配置gitlab也可用于配置github 1.在github中创建一个账号:https://github.com/join?source=header-home 2.下载并安装git: ...

  3. 《剑指offer》第三十二题(不分行从上往下打印二叉树)

    // 面试题32(一):不分行从上往下打印二叉树 // 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印. #include <iostream> #include ...

  4. smarty课程---smarty3的安装和使用

    smarty课程---smarty3的安装和使用 一.总结 一句话总结:smarty 是什么,就不多说了,用过php,接触过php的人都对smarty 再熟悉不过了.它是一个很强大的代码分离软件,作为 ...

  5. .net开发中,C# DateTime.Now 取出的时间含有星期解决办法

    1.开始→运行→输入regedit,打开注册表编辑器,找到HKEY_USERS. 2.ctrl+f 查找sShortDate(多查询几次,将所有的都查出来). 3.在右边的窗口中找到sDate项,将其 ...

  6. 『PyTorch』第七弹_nn.Module扩展层

    有下面代码可以看出torch层函数(nn.Module)用法,使用超参数实例化层函数类(常位于网络class的__init__中),而网络class实际上就是一个高级的递归的nn.Module的cla ...

  7. 阿里云ECS服务器自定义端口无法访问问题记录

    记住阿里云ECS服务器有个安全组!!! 购买了阿里云服务器的时候,购买界面那里是可以勾选默认的几个端口是否开启的,服务器默认勾了22端口,使用户能登录服务器. 当我们在服务器里面配置nginx,开启自 ...

  8. turbine是怎么收集指标数据的

    turbine是怎么收集指标数据的 我们通过spring cloud图形化dashboard是如何实现指标的收集展示的知道了,图形化的指标是从turbine获取到指标数据的.那么turbine的数据是 ...

  9. Oracle12c 中RAC功能增强新特性之ASM&amp;Grid

    1.    自动存储管理(ASM)方面的增强 1.1.   Flex ASM 在典型的网格架构安装中,每个节点有自己的ASM实例运行并扮演该节点上数据库的存储容器的角色,对这种安装配置,存在单点失败的 ...

  10. linux tcpdump 抓包

    tcpdump是linux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是ubuntu 12.04. tcpdump的命令格式 tcpdump的参数众多,通过man tcpdump ...