- 浏览: 187627 次
- 性别:
- 来自: 杭州
文章分类
最新评论
Checkpoint
checkpoint是用来减少在数据库恢复过程中所花的时间(instance recovery).数据库中有个CKPT进程,这个是个可选进程,但是真正执行检查点的任务并不是有ckpt来完成的,而是ckpt在更新控制文件和数据文件头的有关信息后,通知DBWn进程,产生一个检查点,在产生检查点的时候,DBWn进程会将buffer cache中的脏数据(当前online redo log对应的脏数据),写入我们的数据文件当中。那么这个时候如果数据库此时崩溃(比如我们做个shutdown abort),那么在进行实例恢复的时候就可以不需要当前online redo log的内容了,会很快就做完。因此ckpt进程只是个辅助进程,他的任务更多的是用来在系统做checkpoint的时候更新控制文件和数据文件头中的信息。其实在oracle 8i的时候呢,ckpt的任务一般都是由lgwr进程来完成,到了8i以后,随着CKPT进程的引入,lgwr的工作负担就减轻了很多(commit的速度加快了)
那么如何来产生检查点呢?有三种方法:
1.alter system checkpoint
2.alter system switch logfile
3.DBWn进程写出脏块
SCN (system change number)
在Oracle的内部同步时钟,是系统改变号,的缩写(system change number。
可以通过dbms_flashback包来查询当前系统的改变号:select dbms_flashback.get_system_change_number from dual;
一般来讲SCN主要是用来标识数据库所做的所有改变,只能前进,不能回退,除非我们打算重建库,否则数据库中的SCN永远不会归0.
需要注意的是:
1.CKPT一定是是在checkpoint发生的时候将数据库当前的SCN更新入数据库文件头和控制文件当中,同时DBWn进程将buffer cache中的脏数据块(dirty block)写到数据文件当中(这个脏数据也一定是当前online redo log保护的那一部分)。
2.同时CKPT进程还会在控制文件当中记录(redo block address)RBA,这个地址用来标志恢复的时候需要从日志中的那个位置开始。
在Oracle数据库中和checkpoint相关的SCN总共有4个
1.System checkpoint SCN (存在于控制文件)
在系统执行checkpoint后,Oracle会更新当前控制文件中的System checkpoint SCN。
我们可以通过以下视图来查看
select checkpoint_change# from v$database:
2.Datafile checkpoint SCN (存在于控制文件)
由于控制文件中记录了Oracle中各个数据库文件的位置和信息,其中当然也包括了Datafile checkpoint SCN,因此在执行checkpoint的时候,Oracle还会去更新控制文件中所记录的各个数据文件的datafile checkpoint SCN.
我们可以通过以下视图来查看
select checkpoint_change# from v$datafile;
3.Start SCN (存在于各个数据文件头)
在执行checkpoint时,Oracle会更新存放在各个实际的数据文件头的Start SCN (除开控制文件),这个SCN存在的目的是用于检查数据库启动过程中是否需要做media recovery(介质恢复)
我们可以通过以下视图来查看
select checkpoint_change# from v$datafile_header;
4.End SCN(存在于控制文件)
最后一类SCN,End SCN他也是记录在控制文件当中,每一个所记录的数据文件头都有一个对应的End SCN,这个End SCN一定是存在于控制文件当中。这个SCN主要是用来去和控制文件的scn比较,判断数据库启动的时候是否需要做instance recovery。
我们可以通过以下视图来查看
select name,last_change# from v$datafile
那么其实在数据库正常运行的情况下,对于read/write的online 数据文件这个SCN号为#FFFFFF(NULL).
oracle的启动与oracle的SCN
1.在数据库的启动过程中,当System Checkpoint SCN=Datafile Checkpoint SCN=Start SCN的时候,Oracle数据库是可以正常启动的,而不需要做任何的media recovery。而如果三者当中有一个不同的话,则需要做media recovery
2.那什么时候需要做instance recovery呢?
其实在正常open数据库的时候,oracle会将记录在控制文件中的每一个数据文件头的End SCN都设置为#FFFFFF(NULL),那么如果数据库进行了正常关闭比如(shutdown or shutdown immediate)这个时候,系统会执行一个检查点,这个检查点会将控制文件中记录的各个数据文件头的End SCN更新为当前online数据文件的各个数据文件头的Start SCN,也就是End SCN=Start SCN,如果再次启动数据库的时候发现二者相等,则直接打开数据库,并再次将End SCN设置为#FFFFFF(NULL).
那么如果数据库是异常关闭,那么checkpoint就不会执行,因此再次打开数据库的时候End SCN != Start SCN这个时候就需要做实例恢复。
这个更新SCN操作的执行着就是CKPT进程,他不仅仅会更新SCN,而且还会通知DBWn执行操作(write datafile , archive log file 等)。
再说一下System Checkpoint SCN和Datafile Checkpoint SCN,这两个SCN都是记录在控制文件当中的。但是这两个SCN有什么作用呢?
1.对于只读表空间(readonly tablespace) ,其数据文件的Datafile Checkpoint SCN、Start SCN和END SCN号均相同。这三个SCN在表空间处于只读期间都将被冻结。
2.如果控制文件不是当前的控制文件(其实就是说,想比当前redo log的SCN来讲,控制文件已经过时了),则System checkpoint SCN会小于Start SCN(Start SCN是来自实际的数据文件头,有比较依据)。记录这些SCN号,可以区分控制文件是否是当前的控制文件。当有一个Start SCN(从当前各个在线数据文件中获得)号超过了System Checkpoit SCN号时,则说明控制文件不是当前的控制文件,因此在做recovery时需要采用using backup controlfile。这是为什么需要记录SystemCheckpoint SCN的原因之一。
控制文件已经过时,我们需要重建控制文件,重建方式分两种(resetlogs 和 noresetlogs)
1.使用resetlogs选项时,System Checkpoint SCN为被归为0,而其中记录的各个数据文件的Datafile Checkpoint SCN则来自于Start SCN(也就是说可能会从冷备份的数据文件的数据文件头中获取)。根据上述的描述,此时需要采用using backup controlfile做recovery. 因此情况是 System Checkpoint SCN=0 < Start SCN = Datafile Checkpoint SCN
2.使用noresetlogs选项时,有一个前提就是:一定要有online redo log的存在。否则就要使用resetlogs选项。这个时候控制文件重建好时,其system checkpoint SCN=Datafile Checkpoint SCN=Lastest Checkpoint SCN in online redo log,我们可以看到Datafile Checkpoint SCN并没有从Start SCN中读取。而是读取了最新的日志文件中的SCN作为自己的数据。此时重建的控制文件在恢复中的作用跟最新的控制文件类似,System Checkpoint SCN(已经读取最新的redo log的checkpoint SCN信息)可能会>Start SCN (因为数据文件可能会从冷备份中恢复),恢复时就不需要加using backup controlfile子句了
发表评论
-
oracle树操作,异步查询,子节点过多分批查询
2014-04-11 15:31 1037oracle树操作链接 select ... -
oracle数组游标批量插入
2013-12-07 16:40 3351declare type ary is table ... -
MERGE into (用法笔记)
2013-11-05 14:01 986MERGE INTO trackedVehicleBus ... -
Oracle 随机取一行数据
2012-11-19 19:34 1302从表中随机取一条数据 select * from ( ... -
(原) ORACLE10g创建SCHEDULER_JOB
2012-08-03 16:07 1686BEGIN SYS.DBMS_SCHEDULER ... -
PL/SQL Developer使用技巧
2012-07-18 14:12 18841、PL/SQL Developer记住登陆密码 ... -
Oracle体系结构之-物理结构(transshipment)
2012-06-16 09:35 848一、物理文件的分类 ... -
oracle Toad使用指南
2012-06-19 08:34 6154一.Toad功能综述二. ... -
Oracle 超长字段的处理
2012-06-17 08:50 3202ORACLE中的大对象: LONG: 可变长的字符 ... -
oracle Optimizer CBO RBO (优化器)
2012-06-13 08:34 1081Oracle 的优化器有两 ... -
共享锁和排它锁
2012-06-12 08:23 9671.共享锁【S锁】 又称读锁,若事务T对数据对象 ... -
oracle with admin option 和with grant option
2012-06-20 08:29 1579with admin option 用于系统权限授权,w ... -
oracle10 新功能DBMS_SCHEDULER 简介
2012-06-13 08:40 3972Oracle 10g新增了scheduler的功能,功能 ... -
ORACLE 用户自定义异常
2012-06-21 12:57 58511CREATE OR REPLACE PROCEDURE te ... -
ORACLE SGA的结构、功能和一般设置
2012-06-17 08:50 1052System global area(SGA) 是一组共享的内 ... -
oracle表之间的关联方式
2012-06-14 08:42 1424oracle表之间的关联方 ... -
oracle中使用on delete cascade
2012-06-15 08:38 7775oracle中使用on delete ca ... -
关于oracle的行级锁
2012-06-17 08:52 986在oracle中,行级锁只对用户正在访问的行进行锁定。 ... -
oracle 10g 创建job 相关-dbms_scheduler.create_job
2012-06-19 08:35 8535grant create job to somebody ... -
PGA与SGA的区别,PGA的功能介绍
2012-06-15 08:39 1222当用户进程连接到数 ...
相关推荐
Linux中检查点(Checkpoint)的核心支持——ckpt文件系统的设计.pdf
查看ckpt中变量的方法有三种: 在有model的情况下,使用tf.train.Saver进行restore 使用tf.train.NewCheckpointReader直接读取ckpt文件,这种方法不需要model。 使用tools里的freeze_graph来读取ckpt 注意: ...
ckpt.t7资源ckpt.rar
加载textcnn的ckpt模型,并将它转化为pd文件用于tensorflow_serving
Google训练的inception_v3.ckpt模型和来自https://storage.googleapis.com/download.tensorflow.org的inception_dec_2015模型文件(内含tensorflow_inception_graph.pb、imagenet_comp_graph_label_strings.txt和一个...
深度学习风格迁移训练后权重 ckpt格式
重新训练后的deepsort重识别权重文件ckpt.t7
ckpt.t7文件deepsort重识别模型
检查点进程(CKPT) 在Oracle中,一个用户拥有的所有数据库对象统称为(B)。 A.数据库 B.模式 C.表空间 D.实例 在Oracle中,有一个教师表teacher的结构如下: ID NUMBER(5) NAME VARCHAR2(25) EMAIL VARCHAR2...
rain-princess.ckpt
PVRNet中点云的预训练模型
PVRNet中多视图的预训练模型
这是tensorflow1.x ckpt转pb的脚本代码,使用python3版本编写的,测试非常好用,只需要输入输出节点名字就可以转换
7 维护重做日志文件 目标 7-2 使用重做日志文件 7-3 重做日志文件的结构 7-4 重做日志是如何工作的 7-5 强制日志切换和检查点 7-6 增加联机重做日志组 7-7 增加联机重做日志成员 7-8 删除联机重做日志组 7-9 删除...
deepsort 挺经典的一篇论文了。 这里首先下载yolov3的权重和deepsort的权重 Download deepsort parameters ckpt.t7 cd deep_sort/deep/checkpoint # download ckpt.t7 from ...cd ../../../ 提供给 外链下载过慢 或不能...
bert_model.ckpt.data-00000-of-00001
本文首先详细介绍了oracle中buffer cache的概念以及所包含的内存结构。然后结合各个后台进程(包括...比如为何会引入touch次数、为何会引入增量检查点等等。最后全面介绍了有关buffer cache监控以及调优的实用方法。
日志写进程(LGWR) 检查点进程(CKPT) 9 归档进程(ARCn) 恢复器进程(RECO) 9 2日志写进程(LGWR) 10 3检查点进程(CKPT) 10 6归档进程(ARCn) 10 7恢复器进程(RECO) 11 4. 内存结构 11 1共享池:shared ...
使用这个python程序可以直接将ckpt文件转成固化的模型文件,用于预测结果,注意修改路径
多目标追踪文件