由于中LGWR和DBWR工作的不一致,Oracle引入了检查点的概念,用于同步,保证数据库的一致性。在Oracle里面,检查点分为两种:完全检查点和增量检查点。下面我们分别介绍这两种检查点的作用:

1、完全检查点

在Oracle8i之前,数据库的发生的检查点都是完全检查点,完全检查点会将数据缓冲区里面所有的脏数据块写入相应的数据文件中,并且同步数据文件头和控制文件,保证数据库的一致。完全检查点在8i之后只有在下列两种情况下才会发生:

(1)DBA手工执行alter system checkpoint的命令;

(2)数据库正常shutdown(immediate,transcational,normal)。

由于完全检查点会将所有的脏数据库块写入,巨大的IO往往会影响到数据库的性能。因此Oracle从8i开始引入了增量检查点的概念。

2、增量检查点

Oracle 从8i开始引入了检查点队列这么一种概念,用于记录数据库里面当前所有的脏数据块的信息,DBWR 根据这个队列而将脏数据块写入到数据文件中。检查点队列按时间先后记录着数据库里面脏数据块的信息,里面的条目包含RBA(Redo Block Address,重做日志里面用于标识检查点期间数据块在重做日志里面第一次发生更改的编号)和数据块的数据文件号和块号。在检查点期间不论数据块更改几次,它在检查点队列里面的位置始终保持不变,检查点队列也只会记录它最早的RBA,从而保证最早更改的数据块能够尽快写入。当DBWR将检查点队列里面的脏数据块写入到数据文件后,检查点的位置也要相应地往后移,CKPT每三秒会在控制文件中记录检查点的位置,以表示Instance Recovery时开始恢复的日志条目,这个概念称为检查点的“心跳”(heartbeat)。检查点位置发生变更后,Oracle里面通过4个参数用于控制检查点位置和最后的重做日志条目之间的距离。在这里面需要指出的是,多数人会将这4个参数看作控制增量检查点发生的时间。事实上这是错误的,这4个参数是用于控制检查点队列里面的条目数量,而不是控制检查点的发生。

(1)fast_start_io_target

该参数用于表示数据库发生Instance Recovery的时候需要产生的IO总数,它通过v$filestat的AVGIOTIM来估算的。比如我们一个数据库在发生Instance Crash后需要在10分钟内恢复完毕,假定OS的IO每秒为500个,那么这个数据库发生Instance Recovery的时候大概将产生500*10*60=30,000次IO,也就是我们将可以把fast_start_io_target设置为 30000。

(2)fast_start_mttr_target

我们从上面可以看到fast_start_io_target 来估算检查点位置比较麻烦。Oracle为了简化这个概念,从9i开始引入了 fast_start_mttr_target这么一个参数,用于表示数据库发生Instance Recovery的时间,以秒为单位。这个参数我们从字面上也比较好理解,其中的mttr是mean time to recovery的简写,如上例中的情况我们可以将fast_start_mttr_target设置为600。当设置了 fast_start_mttr_target后,fast_start_io_target这个参数将不再生效,从9i后 fast_start_io_target这个参数被Oracle废除了。

(3)log_checkpoint_timeout

该参数用于表示检查点位置和重做日志文件末尾之间的时间间隔,以秒为单位,默认情况下是1800秒。

(4)log_checkpoint_interval

该参数是表示检查点位置和重做日志末尾的重做日志块的数量,以OS块表示。

(5)90% OF SMALLEST REDO LOG

除了以上4个初始化参数外,Oracle内部事实上还将重做日志文件末尾前面90%的位置设为检查点位置。在每个重做日志中,这么几个参数指定的位置可能不尽相同,Oracle将离日志文件末尾最近的那个位置确认为检查点位置。

oracle 9i instance recovery

1、增量检查点

在checkpoint queue的基础上实现了增量检查点,每3秒发生一次checkpoint heartbeat,记录dbwr上次写成功的最大RBA(redo block address)。这样的话做instance recovery的时候就从这个rba开始,而不是从上次checkpoint scn开始,大大节省了恢复时间。

21/212>

ORACLE检查点测试,oracle深度解析检查点相关推荐

  1. 用oracle怎么测试,oracle – 如何(单位)测试数据密集的PL / SQL应用程序

    有几种不同的PL / sql测试工具. Steven Feuerstein已经写了两个 utplsql和 Quest Code Tester for Oracle(以前的QUTE).我是utplsql ...

  2. jmeter和oracle,jmeter测试Oracle数据库

    大致步骤如下: (1) 复制ORACLE的JDBC驱动JAR包文件(ojdbc14.jar)到JMeter的lib目录下. (2) 运行jmeter.bat (3) 建立线程组:右键测试计划-> ...

  3. 做鼻子测试软件,深度解析鼻子类型,测试你属于哪种鼻子?

    鼻子是否漂亮对于一个人的气质来说至关重要. 眉毛眼睛不好看,还可以用半永久纹眉或者美瞳线,双眼皮贴来拯救,但是鼻子不美观,哪怕涂几层高光阴影都很难打造一个美丽的鼻子,还会让妆容显得很脏. 那如果想要通 ...

  4. oracle 完全检查点条件,ORACLE Checkpoint(检查点)

    1定义: ORACLE数据库采用"提交时并不强迫针对数据块的修改完成",而是"提交是保证修改记录(以重做日志形式)写入日志文件"的机制,来获得性能优势.即 用户 ...

  5. Oracle AWR报告指标全解析-11011552

    1-5 Top 5 Timed Events Waits : 该等待事件发生的次数, 对于DB CPU此项不可用 Times : 该等待事件消耗的总计时间,单位为秒, 对于DB CPU 而言是前台进程 ...

  6. Oracle AWR报告指标全解析

    1-5 Top 5 Timed Events Waits : 该等待事件发生的次数, 对于DB CPU此项不可用 Times : 该等待事件消耗的总计时间,单位为秒, 对于DB CPU 而言是前台进程 ...

  7. 【性能调优】Oracle AWR报告指标全解析

    [性能调优]Oracle AWR报告指标全解析 啥是AWR? ===================================================================== ...

  8. LoadRunner 测试Oracle数据库及Siebel性能

    本次测试使用的loadrunner 版本为8.1,oracle数据库版本为10.2.0.1,各版本的测试方法基本是一样的.这里提供loadrunner 8.1,10000个web用户的license: ...

  9. BenchmarkSQL 测试Oracle 12c TPC-C 性能

    使用BenchmarkSQL测试一下Oracle 12c的TPC-C性能,同时对比一下PostgreSQL 9.5的性能. 测试机: 3 * PCI-E SSD,逻辑卷条带,XFS,数据块对齐,16核 ...

  10. JDBC连接Oracle数据库测试

    JDBC连接Oracle数据库测试 package date20180727.dao; import java.sql.Connection; import java.sql.DriverManage ...

最新文章

  1. c#初学-索引器get和set的使用(泛型类)
  2. 【Java】学习笔记(1)
  3. HDFS的读文件、写文件过程
  4. 【Android 界面效果10】Android中View,ViewGroup,Window之间的关系
  5. 数据库缓存双写一致性的一些个人想法
  6. group by 和where 条件后面不能用刚设置的别名。
  7. java内存溢出模拟_模拟实战排查堆内存溢出(java.lang.OutOfMemoryError: Java heap space)问题...
  8. 获取当前时间---年月日时分秒------iOS
  9. matlab序列码,Matlab7 R14(sn 序列号)
  10. 公安人像(证照)比对接口简介
  11. mysql离散查询_MySQL多表查询与子查询
  12. 企业授权:SOA被低估的经济价值
  13. Bluetooth Profile Specification之1.2 A2DP 之Audio Codec(音频编解码器)-MPEG-1,2 Audio和MPEG-2, 4 AAC
  14. 毕设 深度学习图像风格迁移
  15. 【Scratch考级99图】图20-等级考试scratch绘制复杂图形5个正方形 少儿编程 scratch画图案例教学
  16. Android学习之Ubuntu12.04
  17. 而多乐在线书签导入html文件,,简单介绍HTML5中的文件导入
  18. android获取relativelayout的高度,android RelativeLayout 动态设置高度
  19. i3 10100核显相当于什么显卡
  20. mysql到linux导出备份

热门文章

  1. 如何在同一Linux服务器上创建多站点
  2. JDBC数据源(DataSource)的简单实现
  3. ASP.NET MVC实现网站验证码功能
  4. Introduction to the 80386
  5. ap_invoice_distributions_all与PO表关联问题
  6. 初次接触ruby的困惑
  7. 拓端tecdat:R语言GARCH建模常用软件包比较、拟合标准普尔SP 500指数波动率时间序列和预测可视化
  8. 拓端tecdat|数据视域下图书馆话题情感分析
  9. php模拟登录其他网站,PHP利用Curl模拟登录并获取数据例子
  10. PIL与opencv相互转换