日期:2014-05-16 浏览次数:20472 次
首先讲解一下oracle 中最重要的两个概念 scn 和 rowid
scn
Scn号: 是当Oracle 数据库更新后,由 DBMS 自动维护去累积递增的一个数字。在 Oracle 中,有四种 比较重要的 SCN,分别为:系统检查点 SCN 、数据文件检查点 SCN 、启动 SCN 、终止 SCN 。
oracle系统做任何事情都要有一个号码对应,相当于数据库的内部时间,小号在前大号在后。对于用户来说他是透明的, scn 的管理完全由 oracle 自己管理。
1、系统检查点 scn
当一个检查点动作完成后,Oracle 就把系统检查点的 SCN 存储到 controlfile(控制文件 ) 中。 检查点可以暂时理解为数据库按照一定规律定时(不太准确)把内存的数据块存盘。
参看最近的 checkpoint的 scn
select?checkpoint_change#?from?v$database;
2、数据文件检查点 scn
当一个检查点动作完成后,Oracle 就把每个数据文件的 scn 单独存放在 controlfile(控制文件 ) 中。 主要用于实例恢复,它会参照控制文件的 scn号进行相应的处理(主要的恢复和回退)查看数据文件的 checkpoint 的 scn
select?name,checkpoint_change#?from?v$datafile;
3、启动 scn
Oracle 把这个检查点的 scn 存储在每个数据文件的 文件的头 中,这个值称为启动scn ,因为它用于在数据库实例启动时,检查是否需要执行 数据库恢复 。 主要和控制文件中的每个数据文件的 scn对比,看是否需要恢复。
4、终止 scn