检查点(checkpoint)

8.1 什么是checkpoint
checkpoint是数据库的一个内部事件,检查点激活时会触发数据库写进程(DBWR),将数据缓冲区里的脏数据块写到数据文件中。

8.2 checkpoint主要2个作用:

1)保证数据库的一致性,这是指将脏数据写入到硬盘,保证内存和硬盘上的数据是一样的。

2)缩短实例恢复的时间,实例恢复要把实例异常关闭前没有写到硬盘的脏数据通过日志进行恢复。如果脏块过多,实例恢复的时间也会过长,检查点的发生可以减少脏块的数量,从而减少实例恢复的时间。

8.3 checkpoint分类

完全检查点 full checkpoint
增量检查点 incremental checkpoint
局部检查点 partial checkpoint

8.3.1 完全检查点工作方式:记下当前的scn, 将此scn之前所有的脏块一次性写完,再将该scn号同步更新控制文件和数据文件头。
 
可以引起完全检查点的四个动作  
 
a)正常关闭数据库:shutdown immediate
b)手动检查点切换:alter system checkpoint;
c)日志切换:alter system switch logfile;
d)数据库热备模式:alter database begin backup;

验证以上概念可以做一下alter system checkpoint,然后观察v$datafile和v$datafile_header中scn被更新。
另外,我们可以研究一下日志切换:alter system switch logfile;

如果FAST_START_MTTR_TARGET<>0,v$log视图中的active状态几分钟后会变成inactive状态,然后更新了控制文件和日志文件头部的SCN。

8.3.2 增量检查点概念及相关参数:

8.3.2.1概念:

1)被修改过的块,在oracle中都被统称为脏块.脏块按照首次变脏的时间顺序被一个双向链表指针串联起来,这称做检查点队列。

2)当增量检查点发生时,DBWR就会被触发,沿着检查点队列的顺序将部分脏块刷新到磁盘上,每次刷新截止的那个块的位置就叫检查点位置,检查点位置之前的块,都是已经刷新到磁盘上的块。而检查点位置对应的日志地址(RBA)又总是被记录在控制文件中。如果发生系统崩溃,这个最后的检查点位置就是实例恢复运用日志的起点。

3)增量检查点使检查点位置前移。进而缩短实例恢复需要的日志起点和终点之间的距离,触发增量检查点越频繁,实例恢复的时间越短,但数据库性能受到频繁IO影响会降低。

4)增量检查点不会同步更新数据文件头和控制文件的SCN[等待DBW写完脏块在更新]。

8.3.2.2 与增量检查点有关的几个知识点

1)FAST_START_MTTR_TARGET参数:

这个参数是考点。它给出了你希望多长时间恢复实例。

此参数单位为秒,缺省值0,范围0-3600秒,根据这个参数,Oracle计算出在内存中累积的dirty buffer所需的日志恢复时间,如果到达该参数指定的时间,则增量检查点进程被触发。该参数如果为0,ORACLE则会根据DBWN进程自身需要尽量减少写入量,这样虽然实现了性能最大化,但实例恢复时间可能会比较长。

早期还有几个有关增量检查点的参数,

log_checkpoint_interval

规定了redo日志积累多少block后激活增量检查点,对用户来讲要给出这个参数不太方便,所谓block指的是os block,而不是oracle block。

log_checkpoint_timeout 给一个触发增量检查点的间隔,单位是秒。

如果设置了FAST_START_MTTR_TARGET参数,就不要用早期的一些参数,容易引起冲突。

*考点:

如果将fast_start_mttr_target设置为非0,1)将启用检查点自动调整机制。2)log_checkpoint_interval参数将被覆盖掉。

2)90% OF SMALLEST REDO LOG(Oarcle 内部机制),从上次切换后算起,累计日志为一个日志组大小的90%时,做一次检查点切换,Oracle内部事实上还将重做日志文件末尾前面90%的位置设为检查点位置

3)每3s检查checkpoint队列。并不触发检查点,它只是记录当时的检查点位置,并将相关信息写入到controlfile。

8.3.3实例恢复有关的顾问叫做MTTR Advisory 需要设置两个参数

1)STATISTICS_LEVEL         -->置为typical(缺省) 或者all才启用MTTR
2)FAST_START_MTTR_TARGET   -->置为非零值

8.3.4 设置合理的MTTR参数

查看视图 v$instance_recovery查看oracle给出的建议值

SQL>select recovery_estimated_ios,actual_redo_blks,target_redo_blks,target_mttr,estimated_mttr from v$instance_recovery;

RECOVERY_ESTIMATED_IOS     ACTUAL_REDO_BLKS     TARGET_REDO_BLKS     TARGET_MTTR     ESTIMATED_MTTR
---------------------- ---------------- ---------------- ----------- --------------
                    72                  333                     3700                  33                 12

//系统计算出来的目标启动时间target_mttr为33秒,当前估算的恢复时间是12秒,此时FAST_START_MTTR_TARGET可以设置成33S

8.5 局部检查点的触发条件:

对于某些操作,局部检查点是必须的,并会自动执行。
比如:表空间offline,数据文件offline,删除extent,表truncate,begin backup(将表空间置于备份模式)等。Oracle会根据需要自动执行。

oracle之二检查点的更多相关文章

  1. Oracle GoldenGate 二、配置和使用

    Oracle GoldenGate 二.配置和使用 配置和使用GoldenGate的步骤 1 在源端和目标端配置数据库支持GoldenGate 2 在源端和目标端创建和配置GoldenGate实例 3 ...

  2. oracle实例恢复之检查点队列

    chain即链. oracle中链有很多种,LRU.LRUW.checkpoint queue等,都是干什么的呢??? LRU将可用块(干净的块)串起来.LRUW将脏块串起来,指导DBWR进程率先将冷 ...

  3. 7.26实习培训日志-Oracle SQL(二)

    Oracle SQL(二) 条件表达式 CASE 语句 或者DECODE 函数,两者均可实现 IF-THEN-ELSE 的逻辑,相比较而言,DECODE 更加简洁 SELECT last_name , ...

  4. Oracle笔记二

    一.数据库语言分类  二.DML之数据插入 把一个表中的数据查询出来插入另外一个表中. create table student(id number,name varchar2(20),age num ...

  5. 26、Oracle(二)

    1)掌握多行函数与分组操作 2)掌握多表查询与子查询 3)理解集合查询与掌握Oracle分页语法 4)理解创建.修改和删除表和表约束 --------------------------------- ...

  6. Oracle(二)在 Mysql 的基础上学习 Oracle

    毕竟我是先学的mysql,对数据库的一切认知都会有一个先入为主的思想在里面,如果不搞清楚其中的异同,我感觉Oracle我是学不会 了,甚至会把它们混淆.那么,不会mysql的没必要往下看了. 下边第一 ...

  7. Java基础——Oracle(二)

    一.Oracle 中的几个服务 1.OracleDBConsoleorcl 进程:nmesrvc.exe oem控制台服务进程,dba用.Oracle Enterprise Manager(Oracl ...

  8. Oracle(二)SELECT语句执行顺序

    转载自:小强斋太-Study Notes,原文链接 从join on和where执行顺序认识T-SQL查询处理执行顺序 目录 一.样例 二.SELECT语句的处理过程 1. FROM阶段 2. WHE ...

  9. oracle入门(二)

    ### 一,视图 ```1. 什么是视图    视图是一张虚表, 可以把视图看成表使用(增删改查),视图中没有数据,所有的数据都在基本表中(tables)    封装了一个复杂的DQL    操作视图 ...

随机推荐

  1. 将阿里矢量图添加到element-ui

    在阿里矢量图的操作 选择需要的图标添加至购物车   选择图标 将购物车中的图标, 添加至项目   添加至项目 会自动跳转到我的项目   项目页面 在 更多操作 中选择 编辑项目   更多操作 将 Fo ...

  2. 《MySQL必知必会》通配符 ( like , % , _ ,)

    <MySQL必知必会>通配符 ( like , % , _ ,) 关键字 LIke WHERE 搜索子句中使用通配符,必须使用 LIKE 操作符. % 百分号通配符 % 表示任意字符出现任 ...

  3. Uni-app从入门到实战

    前言 uni-app是一个使用vue.js开发跨平台应用的前端框架,开发者只需要编写一套代码,便可以发布到IOS.Android和微信小程序等多个平台.所以我打算学习下这个框架,快速浏览了一遍官网之后 ...

  4. (趣味哈哈镜)JMF中摄像头相关的问题

    JMF已经非常古老了.最近由于做实验的需要,不得不使用JMF处理视频.开发使用win10系统和eclipse.使用中的问题如下: 1.首先想要使用JMF需要必须安装32位JDK,同时编译软件也需要是3 ...

  5. Could not create an acl object: Role '16'

    解决方案: (1) 用rm命令一个一个的清除var/cache, var/page_cache, var/di, generated/文件夹下的所有文件 (2) run setup:upgradeco ...

  6. Linux调用Kaggle API下载数据

    1. 登录Kaggle账户,点击My Account 2. Create New API Token得到kaggle.json 3. pip install kaggle 4. 执行kaggle会报错 ...

  7. 牛客网PAT练兵场-程序运行时间

    题解:无(注意下四舍五入和输出格式即可) 题目地址:https://www.nowcoder.com/questionTerminal/fabbb85fc2d342418bcacdf0148b6130 ...

  8. 玩转Spring——Spring事务

    事务的概念:多个sql 操作 要么都成功 要么都失败 ACID特性:原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生.一致性(Consisten ...

  9. Java面试题(MySQL篇)

    MySql 164.数据库的三范式是什么? 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项. 第二范式:要求实体的属性完全依赖于主关键字.所谓完全依赖是指不能存在仅依赖主关键 ...

  10. virtualenv最佳实战

    一 系统环境 windows 10 64-bit 安装python 2.7.18 和python 3.8两个版本 二 安装 默认会把virtualenv安装到系统默认python版本中 pip ins ...