[ORACLE] SNC 学习
SCN
SCN(System Change Number),也就是通常所说的系统改变号或者系统提交号,是数据库中非常重要的一个数据结构。
SCN用以标识数据库在某个确切时刻提交的版本。在事务提交时,它被赋予一个唯一的标识事务的SCN。SCN同时被作为Oracle数据库的内部时钟机制,可被看做逻辑时钟,每个数据库都有一个全局的SCN生成器。SCN在数据库中是唯一的,并随时间而增加,但是可能并不连贯。除非重建数据库,SCN的值永远不会被重置为0.
检查点: 是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件,它存在的根本意义在于减少崩溃恢复时间
四种SCN
- 系统检查点SCN: 当一个检查点动作完成后,oracle 就将系统检查点的SCN存储到控制文件中.
- 据文件检查点SCN: 当一个检查点动作完成后,OraclE将每个数据文件的SCN单独存放在控制文件中.
- 启动SCN: oracle 把这个检查点的SCN存储在每个数据文件的文件头中,这个值称为启动SCN,因为它用于在数据库实例启动时,检查是否需要执行数据库恢复
- 终止SCN 每个数据文件的终止SCN都存储在控制文件中.
作用:一致性读/保证事务的唯一性/物理备份恢复机制重要的判断点
SQL> select checkpoint_change#,last_change# from v$datafile; --last_chagne#为空或无穷大 0Xffffffff CHECKPOINT_CHANGE# LAST_CHANGE# ------------------ ------------ 9200308 9200308 9200308 9200308 9200308 9200308 9200308 9200308 8 rows selected SQL> select file#,creation_change#,resetlogs_change# from v$datafile_header; FILE# CREATION_CHANGE# RESETLOGS_CHANGE# ---------- ---------------- ----------------- 1 9 3147070 3 5480 3147070 4 1920446 3147070 7 32876 3147070 13 2171860 3147070 17 5356344 3147070 18 5356374 3147070 19 5356400 3147070 8 rows selected SQL> select file#,change# from v$backup; FILE# CHANGE# ---------- ---------- 1 9200308 3 9200308 4 9200308 7 9200308 13 9200308 17 9200308 18 9200308 19 9200308 8 rows selected SQL> alter database begin backup; Database altered SQL> select file#,change# from v$backup; FILE# CHANGE# ---------- ---------- 1 9200723 3 9200723 4 9200723 7 9200723 13 9200723 17 9200723 18 9200723 19 9200723 8 rows selected SQL> alter database end backup; Database altered SQL> select FIRST_CHANGE#,NEXT_CHANGE# from v$log; FIRST_CHANGE# NEXT_CHANGE# ------------- ------------ 9111479 9167135 9066420 9111479 9167135 1.8446744073
每天进步一点点,多思考,多总结
版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。