深入解析Oracle学习笔记(第二章)

SCN由两部分组成,高位SCN Wrap由2Bytes记录,低位SCN Base由4Bytes记录。

select dbms_flashback.get_system_change_number from dual;

通常在事务提交或回滚时改变,并不是任何时候都会改变的。

(1)数据文件头中包含该数据文件的checkpoint SCN  (checkpoint 计数,scn,时间,stop scn无穷大)

(2)日志文件头包含了Low SCN和Next SCN,正在使用的redo,next scn为无穷多大。查看v$log;

oracle在进行恢复时,根据低SCN和高SCN来判断需要恢复的信息位于哪个日志或归档文件中。



checkpoint

DBWR写脏数据

CKPT通知DBWR写,并更新数据文件头及控制文件上的检查点信息


检查点是为了缩短恢复时间


常规检查点需要写出全部脏数据,又叫完全检查点。同时跟新数据文件及控制文件。


LRBA:Low RBA ,第一次对数据库块修改对应的Redo Block Address。

如果一个数据块被多次修改,它在检查点队列上的位置不会改变。

相对应的,有HRBA。


增量检查点时,CKPT进程只更新控制文件中的检查点SCN及RBA信息。


v$latch  存在多个子latch,可以查看v$latch_children。


检查点队列CKPTQ

文件检查点队列FILEQ     (表空间offline等操作时会触发)


每个buffer的header上都存在CKPTQ和FILEQ队列信息,双向连边。dirty buffer才有,否则为null。


10g开始,额外增加了对象检查点队列,OBJQ。


Low cache RBA 是下一次恢复的起点 (已经写入到磁盘的dirty buffer?)

On disk RBA则是已经写入到磁盘的RBA地址,是恢复时,前滚的终点。  (已经写入到磁盘的redo?)


LOG SWITCH触发的是增量检查点,但会促使数据文件头与控制文件信息的同步。


控制文件中的heartbeat每3秒更新一次,验证实例存活。


log_checkpoint_to_alert参数设置为true,则在告警日志中,记录log switch checkpoint信息。


数据文件头中的ctl checkpoint cnt比ckpt cnt小1,目的是什么?


开始SCN记录在数据文件头。结束SCN记录在控制文件中。数据库打开后,将控制文件中的结束SCN置为无穷大。


查看数据库安装了哪些组件 v$option 视图。


FAST_START_MTTR_TARGET 参数定义了数据库进行crash恢复时间,单位是秒。


v$mttr_target_advice视图评估在不同FAST_START_MTTR_TARGET设置下,系统需要进行的IO次数等操作。


statistic_level参数设置为typical或者ALL,才会收集MTTR建议信息。

查询视图v$statistic_level,查看数据库目前收集什么信息。


v$instance_recovery查看数据库当前实例恢复状态。(系统运行过程中,不是恢复过程中。查看如果现在数据库挂了,需要多长时间恢复。系统每次执行检查点后,会重新计算。在很繁忙的系统中,预估恢复时间可能会大于FAST_START_MTTR_TARGET,因为DBWR来不及写,甚至检查点不能及时完成。)


10g新特性,自动调整检查点,利用系统地IO负载时段写出数据。FAST_START_MTTR_TARGET参数未设置时,该功能生效。


Low cache RBA:指在cache中,最低的RBA地址,实例恢复的起点。

on disk RBA:是磁盘上最高的重做值,实例恢复的终点。


除了shutdown abort之外,其他关闭方式都是执行了完全检查点,不需要实例恢复。


实例恢复包括两个步骤:1. cache recovery 2.transaction recovery。


FAST_START_PARALLEL_ROLLBACK 参数,控制并行回滚度,false 禁用,low 不超过2倍cpu_count, high 不超过4倍cpu_count。


v$rollstat 回滚段相关视图


v$fast_start_transaction 视图,显示正在回滚的事务的相关信息。


数据库重启之后,v$transaction事务表中的事务信息将消失,恢复事务变成死事务。

查看死事务恢复进度 x$ktuxe


bootstrape$

BBED




你可能感兴趣的:(深入解析Oracle学习笔记(第二章))