数据库的SCN一直是一个既熟悉又陌生的东西,很多人晓得有这个概念,但是是否真正理解就又是一回事,数据库几个视图和函数都能够查询到SCN,SCN最重要的使用地方是数据库启动的时候,这些概念其实很多文章都有介绍,我们再来梳理和巩固下:

四种SCN

1、 系统检查点scn

当一个检查点动作完成后,Oracle就把系统检查点的SCN存储到控制文件中。

Selectcheckpoint_change# from v$database

2、 数据文件检查点scn

当一个检查点动作完成后,Oracle就把每个数据文件的scn单独存放在控制文件中。

Selectcheckpoint_change# from v$datafile

3、 启动scn(数据文件头SCN)

Oracle把这个检查点的scn存储在每个数据文件的文件头中,这个值称为启动scn,因为它用于在数据库实例启动时,检查是否需要执行数据库恢复。

Selectname,chekpoint_change# from v$datafile_heade

4、 终止scn

  每个数据文件的终止scn都存储在控制文件中。

Selectname,last_change# from v$datafile

几个检查点SCN号的关系

1、 正常关闭数据库

当正常关闭数据库时,checkpoint会进行,并且此时保存到控制文件里面的datafile的终止scn和数据文件头的启动scn会相同。 等到open数据库时,Oracle检查datafileheader中的启动 scn和存于control file中的datafile的scn是否相同, 如果相同,再检查datafile的scn和终止 scn是否相同,如果仍然相同,数据库就会正常开启,否则就需要recovery。

等到数据库开启后,储存在control file中的终止 scn就会恢复为NULL值,此时表示datafile是open在正常模式下了。

2、  非正常关闭

数据库非正常关闭(或称为实例崩溃)时,终止SCN不会被设置,依然为NULL,这可以通过把数据库启动至mount状态查询出来。这样Oracle通过这个信息就可以知道实例上次运行时崩溃了,检查点没有执行。这样重新启动时,Oracle会执行实例恢复工作,即先执行前滚、回滚操作,再把数据库打开。

注意一点:

(1)启动数据库时,如果发现终止 SCN = NULL,表示需要进行crash recovery;

(2)启动数据库时,如果发现有datafile header的启动 SCN 不等于储存于CONTROLFILE的DATAFILE SCN,表示需要进行Media recovery

(2)这种情况又有2种:

数据文件检查点SCN及系统检查点SCN比文件头启动SCN大:这时的情况是:系统发生介质故障,数据文件被以前的备份代替,控制文件中的数据文件检查点SCN肯定比文件头中的启动SCN要大,这样Oracle就知道要对这个文件进行介质恢复。这时要通过下面语句恢复数据库:

recoverdatabase ……

系统检查点SCN及数据文件SCN比文件头启动SCN小:在数据库恢复时,控制文件可能不是最新的,即把一个较早的控制文件还原为当前的控制文件,然后再执行恢复操作,这时控制文件中的系统检查点SCN和数据文件SCN可能比文件头的启动SCN小。这时恢复数据库要用下面命令:

recoverdatabase using Backup Controlfile或其他的恢复语句

数据库启动关闭有关的SCN相关推荐

  1. MySQL 数据库 启动 关闭

    MySQL 数据库 启动 & 关闭 ​ MySQL数据库服务器通常指的的是mysqld,而命令行mysql则是mysql客户端程序,这两个概念通常容易混淆.通常启动mysql服务器即是启动my ...

  2. GreenPlum 数据库启动关闭及数据库状态检查

    本篇文章主要记录GreenPlum数据库的启动.关闭及状态查询.GreenPlum数据库提供gpstart和gpstop脚本来启动和关闭数据库,可以通过-help参数来查看这些脚本的帮助信息. vie ...

  3. PG数据库启动关闭等命令

    PG数据库关闭 su postgres -c "pg_ctl stop -D /home/ssd1/PostgreSQL_data" # -D:声明该数据库文件的文件系统位置. 如 ...

  4. Oracle数据库启动与关闭

    C:\app\Administrator\virtual\product\12.2.0\dbhome_2\bin>dir oracle.exe 驱动器 C 中的卷没有标签. 卷的序列号是 7E6 ...

  5. oracle表启用online,Oracle数据库启动与关闭

    C:\app\Administrator\virtual\product\12.2.0\dbhome_2\bin>dir oracle.exe 驱动器 C 中的卷没有标签. 卷的序列号是 7E6 ...

  6. 2. Oracle 数据库实例启动关闭过程

    转载自: http://blog.csdn.net/leshami/article/details/5542983 Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行 ...

  7. oracle数据库从关闭到启动,Oracle数据库的启动和关闭详细过程

    一.数据库打开 startup数据库正常启动 1.startup nomount 启动 Oracle DB 实例:NOMOUNT ,创建sga,创建了alert日志,用于create db,creat ...

  8. 02_clickhouse安装,卸载,启动/关闭服务,交互式命令(数据库创建,数据导入,查询),批模式数据导入,MySQL接口操作ClickHouse,DBeaver可视化工具安装与使用(学习笔记)

    1 ClickHouse安装 安装文件清单 clickhouse-client-${version}.noarch.rpm clickhouse-common-static-dbg-${version ...

  9. Linux下oracle数据库启动和关闭操作

    第一步:登陆 root登陆之后切换到oracle用户上,输入 su oracle 第二步:连接 在oracle用户下,输入 sqlplus /nolog 第三步:使用管理员权限 输入 connect ...

最新文章

  1. 固态硬盘是什么接口_SATA接口和M.2接口的固态硬盘哪个好?SATA接口和M.2接口的区别...
  2. cygwin下安装软件
  3. GT Transceiver中的重要时钟及其关系(4)CPLL的工作原理介绍
  4. 处理js两个数相乘的坑
  5. Bit-Z开放零门槛做市商计划 最高返100%交易手续费
  6. WebServices应用集成框架ESB(Enterprise Service Bus 企业服务总线)
  7. java wait 参数_java中wait()和join()方法的区别是什么
  8. jquery ajax 跨域解决方案 - CORS
  9. 金融数学与计算机专业,金融数学专业就业方向及前景分析(解读)
  10. Android安全开发之ZIP文件目录遍历
  11. centOS6.6虚拟机启动后登陆界面无法显示
  12. UE4.27 Live Link Face无法连接的一种解决办法
  13. Gym - 101964E - Fishermen - (二分+区间更新)
  14. gradle尚硅谷笔记
  15. 3个超神器工具,让你的电脑比手机好玩,值得收藏
  16. Linux开发工具(3)——gcc/g++
  17. SAP中SD交货与WM下架功能的集成应用
  18. R语言基础(1)-帮助函数|工作空间|IO|模块安装
  19. 如何复制qq好友--丢号不丢人
  20. 巡风xunfeng代码研究---新建Flask项目模板

热门文章

  1. Mysql字符串替换函数
  2. 个人知识管理系统 mysql_个人知识管理系统Version1.0开发记录(12)
  3. 高等数学公式及其结论(上)
  4. 50 个新酷的 jQuery 插件
  5. python 异或两个文件
  6. ajax302错误,Wordpress admin-ajax导致错误302重定向
  7. 关于计算机的一些常识
  8. Redis详解(3)数据持久化机制
  9. 求斜率,针对非线性传感器分段计算斜率,套入程序中。
  10. Android手机一键Root原理分析(作者:非虫,文章来自:《黑客防线》2012年7月)