一、各种SCN简介:如图,控制文件中有系统SCN号,针对每个数据文件还有文件SCN号、结束SCN号(如四个数据文件就有4个对应的文件SCN号、结束SCN号)数据文件头部

一、各种SCN简介:

如图,控制文件中有系统SCN号,针对每个数据文件还有文件SCN号、结束SCN号(如四个数据文件就有4个对应的文件SCN号、结束SCN号)

数据文件头部有开始SCN号。都是为了保证数据文件的一致性

正常情况下:系统SCN、文件SCN、文件头部的开始SCN应该一样,结束SCN为null

系统SCN:

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#

------------------

617242

文件SCN:

SQL> select name,checkpoint_change# from v$datafile;

NAME CHECKPOINT_CHANGE#

-------------------------------------------------- ------------------

/u01/app/oracle/oradata/jiagulun/system01.dbf 617242

/u01/app/oracle/oradata/jiagulun/undotbs01.dbf 617242

/u01/app/oracle/oradata/jiagulun/sysaux01.dbf 617242

/u01/app/oracle/oradata/jiagulun/users01.dbf 617242

/u01/app/oracle/oradata/jiagulun/example01.dbf 617242

/u01/app/oracle/oradata/jiagulun/data1_01_dbf 617242

结束SCN:

SQL> select name,last_change# from v$datafile;

NAME LAST_CHANGE#

-------------------------------------------------- ------------

/u01/app/oracle/oradata/jiagulun/system01.dbf

/u01/app/oracle/oradata/jiagulun/undotbs01.dbf

/u01/app/oracle/oradata/jiagulun/sysaux01.dbf

/u01/app/oracle/oradata/jiagulun/users01.dbf

/u01/app/oracle/oradata/jiagulun/example01.dbf

/u01/app/oracle/oradata/jiagulun/data1_01_dbf

数据文件头部开始SCN:

SQL> select name,checkpoint_change# from v$datafile_header;

NAME CHECKPOINT_CHANGE#

-------------------------------------------------- ------------------

/u01/app/oracle/oradata/jiagulun/system01.dbf 617242

/u01/app/oracle/oradata/jiagulun/undotbs01.dbf 617242

/u01/app/oracle/oradata/jiagulun/sysaux01.dbf 617242

/u01/app/oracle/oradata/jiagulun/users01.dbf 617242

/u01/app/oracle/oradata/jiagulun/example01.dbf 617242

/u01/app/oracle/oradata/jiagulun/data1_01_dbf 617242

每一条日志都有SCN,每个日志组文件的头部有两个SCN first SCN和next SCN

first SCN:即这个文件组中第一条日志的SCN,等于上一组的next SCN。

next SCN:即这个文件组中最后一条日志的SCN,等于下一组的first SCN。

二、SCN如何保证数据库文件一致性(如何确认需要恢复)?

正常关闭:将所有buffer cache脏块写到磁盘,同时更新系统SCN、文件SCN,,数据头部开始SCN,同时结束SCN写上与系统SCN、文件SCN、数据头部开始SCN都一样的时间点(关闭时间)

非正常关闭:结束SCN为null,未正常写上。开启数据库时检测到结束SCN为null,则需要实例恢复。

数据文件丢失:例如当1号DBF文件丢失了,从备份中拷贝一个备份的1号DBF文件过来,此时文件头部的SCN比较旧,与控制文件系统SCN号对比,oracle则发现需要做恢复。则用跑日志将其SCN跑到与控制文件中文件SCN一样。

控制文件丢失:控制文件和数据文件都换成旧的,此时光对比控制文件中的SCN号和数据文件头部的SCN号还不能确认需不需要恢复,oracle还要对比on disk rba scn,如果on disk rba scn比控制文件中的SCN号和数据文件头部的SCN号都新,则要实例恢复。

用SCN号确认使用哪些日志组来恢复实例:

目前系统SCN号为617242:

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#

------------------

617242

此时日志组1first SCN为617242,则需要日志组1恢复即可;

试着经过两次日志组切换:

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

此时系统当前最新的文件SCN仍然是617242

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#

------------------

617242

那么这时候数据库实例崩溃使用哪些日志组恢复呢?

此时617242在日志组1,按照序列号8-10,日志组3是最新日志,此时需要日志组1、2、3恢复。

日志中active代表组中存在日志对应的脏块还没有写到磁盘中。

执行

SQL> alter system flush buffer_cache;

System altered.

后,日志组active变为inactive:

而此时控制文件中的SCN也更新为:

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#

------------------

628825

此时如果数据库实例非正常关闭,则需要日志组3来恢复。

三、总结:

控制文件中系统SCN,文件SCN等于最旧的active日志文件组的first SCN,实例恢复需要active和current日志组。

控制文件中的系统SCN,文件SCN用于确认数据恢复的所需要的重做日志文件组。

确认文件组后根据控制文件中的LRBA地址去跑日志跑到on disk rba地址。

CKPT进程只是将LRBA地址写到控制文件中,而控制文件中的系统SCN,文件SCN和数据头部SCN的更新是当一个日志组由active变为inactive时更新的,结束SCN则是关闭数据库时候更新的。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

怎么恢复php格式关联,SCN与数据恢复关联相关推荐

  1. EasyRecovery易恢复15好用的电脑数据恢复管理软件

    在我们使用电脑时偶尔出现一些小失误,把十分重要的数据删除,并且也清空了回收站,导致自己的工作不能顺利进展更严重的话电脑不能正常使用.如果遇上这种情况的话,我们就需要用到专业的数据恢复软件来把被自己误删 ...

  2. 文件恢复软件哪个最好用?数据恢复软件,推荐这几款

    互联网时代,我们在工作和生活中,越来越多地使用电脑.日常使用的时候大家可能都有遇到过文件丢失的情况,电脑里或者其他个人电脑中出现了一些数据丢失.要怎么做呢?有时候自己的电脑可能是被误删了文件,这时候想 ...

  3. oracle scn与数据恢复,基于scn的数据恢复

    不小心delete掉一些数据,而且已经commit了,怎么办?我们可以基于回闪(flashback)和scn进行一些数据的恢复. --查询当前scn SQL> select dbms_flash ...

  4. 亚马逊卖家账号又被关联了?这些关联因素你应该知道!

    最近快接近旺季了,亚马逊又开始严查各种封号问题,那么如果无法保证账号的安全问题,所以在这里和大家分享一下亚马逊卖家账号被封的一些原因,大家一定要注意这些被封的原因,及时避免! 一.什么是账号关联? 虽 ...

  5. scrum敏捷项目管理工具leangoo卡片关联上线(可关联卡片,看板,项目)

    本次更新,企业版新增卡片关联功能. 卡片关联 在卡片上,用户可以将和任务相关的卡片.看板.脑图.项目关联到任务卡片上,关联后,用户既可以快速查看和此任务相关的信息,也可以快速浏览和访问相关内容,从而简 ...

  6. jpa多表关联查询_JPA【关联查询篇】

    摘要:本文主要介绍JPA的多表关联查询(一对一.一对多.双向关联.多对一.多对多)以及N+1查询的优化. 1. JPA多表关联查询 多表关联查询就是实现使用一个实体类对象操作或者查询多个表的数据. 配 ...

  7. java多对多关联数据操作,hibernate实施多对多关联查询时,关联表数据被删除

    hibernate执行多对多关联查询时,关联表数据被删除 本帖最后由 binbb521 于 2012-12-04 11:48:29 编辑 S2SH框架开发的网站,执行两个多对多关系的表查询时,关联两个 ...

  8. C++primer第十一章 关联容器 11.3关联容器操作 11.4 无序容器

    11.3关联容器操作 除了表9.2(第295页)中列出的类型,关联容器还定义了表11.3中列出的类型.这些类型表示容器关键字和值的类型. 对于set类型,key_type和value type是一样的 ...

  9. Outlook2010怎么关联邮箱 Outlook邮箱关联的教程

    Outlook想要关联自己的邮箱,该怎么关联呢?下面我们就来看看详细的教程. 1.首先我们登录进入我们的Outlook,点击文件-添加账户 Outlook2010怎么关联邮箱? Outlook邮箱关联 ...

最新文章

  1. php 返回一个json对象,PHP给前端返回一个JSON对象的实例讲解
  2. 基于KNN的相关内容推荐
  3. GPS系统误差的主要来源
  4. 高压线下,恶俗短视频为何仍在批量生产?
  5. USB3.0超高速接口应用方案
  6. js urlencode 20 php,js实现php函数urlencode
  7. 2013计算机一级考试综合试题答案,2013全国计算机等级考试试题题库及答案.doc
  8. 【JavaScript】提取字符串里的分数,及计算平均分并与平均分比较输出
  9. windows Ctrl + Alt + 方向键 取消屏幕反转
  10. 2017.5.8-morning
  11. jenkins配置sonar并扫描C#代码
  12. java多线程基础篇第一篇-JMM
  13. 遇到Io阻塞时会切换任务之【爬虫版】
  14. MyBatis和Spring总结
  15. 求每个月最后一天mysql函数_计算指定年月的最后一天的自定义MYSQL函数_MySQL
  16. DSP28335学习笔记1
  17. PG 数据库表备份方案
  18. Python + ElasticSearch:轻松玩转跨越千年的两百三十万条地震数据
  19. [初级-详细]新大陆NewLand云平台Android离线程序开发(离线导入Moudle)
  20. 软文推广标题的写法,怎么才能让软文标题更有吸引力

热门文章

  1. http协议中的响应代码从 1xx ~ 5xx,一共有41种
  2. MongoDB初试备份及恢复
  3. [bzoj3676]回文串[后缀数组+Manacher]
  4. 无法装载文件或者汇编的AjaxControlToolkit
  5. postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(2)
  6. 3.数据类型和变量---用Python做数学运算
  7. struts2上传文件时把文件放到服务器真实路径下的webapps\upload下
  8. javascript实现下拉条联动_JavaScript gt;gt;gt; 003
  9. ros发布节点信息python_ROS入门笔记(一): ROS简介
  10. 装饰画必备素材——装饰设计师,填充不用愁!