============================================================
Oracle 各备份恢复环境下 SCN
参考:http://space.itpub.net/12361284/viewspace-732 对于Database recovery的理解
参考:http://space.itpub.net/12361284/viewspace-346
王磊/菜小小~@2012-7-25 9:19
============================================================

  • 系统检查点scn(v$database(checkpoint_change#))
  • 数据文件检查点(v$datafile(checkpoint_change#))
  • 数据文件终止scn(v$datafile(last_change#))
  • 启动scn (v$datafile_header(checkpoint_change#)

1、系统正常关闭:

会使得:system checkpoint scn = datafile checkpoint scn = start scn = stop scn

1)system checkpoint scn = datafile checkpoint scn = start scn,不需要介质恢复

2)stop scn is not null = start SCN,不需要实例恢复

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

Total System Global Area  836976640 bytes

Fixed Size                  1339740 bytes

Variable Size             620760740 bytes

Database Buffers          209715200 bytes

Redo Buffers                5160960 bytes

Database mounted.

SQL> @getscn

SCN Location                                              CHECKPOINT_CHANGE#

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

Datafile Checkpoint SCN - V$Datafile:checkpoint_change#              2064873

Datafile Start SCN - V$Datafile_header:checkpoint_change#            2064873

Datafile Stop SCN - V$Datafile:Last_change#                          2064873

System Checkpoint SCN - V$Database:checkpoint_change#                2064873

2、系统异常关闭:

会使得:system checkpoint scn = datafile checkpoint scn = start scn , stop scn is NULL

1)system checkpoint scn = datafile checkpoint scn = start scn,不需要介质恢复

2)stop scn is null,需要实例恢复

SQL> alter database open;

Database altered.

SQL> startup mount force

ORACLE instance started.

Total System Global Area  836976640 bytes

Fixed Size                  1339740 bytes

Variable Size             620760740 bytes

Database Buffers          209715200 bytes

Redo Buffers                5160960 bytes

Database mounted.

SQL> @getscn

SCN Location                                              CHECKPOINT_CHANGE#

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

Datafile Checkpoint SCN - V$Datafile:checkpoint_change#              2064876

Datafile Start SCN - V$Datafile_header:checkpoint_change#            2064876

Datafile Stop SCN - V$Datafile:Last_change#

--&gt此处为空,需要实例恢复

System Checkpoint SCN - V$Database:checkpoint_change#                2064876

3、旧数据文件

会使得:system checkpoint scn = datafile checkpoint scn > start scn,stop scn is null/ is not null

1)system checkpoint scn = datafile checkpoint scn > start scn

需要介质恢复成system checkpoint scn = datafile checkpoint scn = start scn

2)stop scn is null,需要实例恢复,is not null 不需要实例恢复

用冷备份的数据文件覆盖当前的数据文件,然后

SQL> startup

ORACLE instance started.

Total System Global Area  836976640 bytes

Fixed Size                  1339740 bytes

Variable Size             620760740 bytes

Database Buffers          209715200 bytes

Redo Buffers                5160960 bytes

Database mounted.

ORA-01113: file 1 needs media recovery

ORA-01110: data file 1: '/home/oracle/oradata/SUN/datafile/o1_mf_system_7z9z4zhr_.dbf'

SQL> @getscn

SCN Location                                              CHECKPOINT_CHANGE#

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

Datafile Checkpoint SCN - V$Datafile:checkpoint_change#               825991

Datafile Start SCN - V$Datafile_header:checkpoint_change#

825008--&gt此处小于系统检查点,需要介质恢复

Datafile Stop SCN - V$Datafile:Last_change#                           825991

System Checkpoint SCN - V$Database:checkpoint_change#                 825991

SQL> recover database

Media recovery complete.

SQL> @getscn

SCN Location                                              CHECKPOINT_CHANGE#

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

Datafile Checkpoint SCN - V$Datafile:checkpoint_change#               825991

Datafile Start SCN - V$Datafile_header:checkpoint_change#

825989--&gt介质恢复后,两者达到一致

Datafile Stop SCN - V$Datafile:Last_change#

825989--&gt介质恢复后,两者达到一致

System Checkpoint SCN - V$Database:checkpoint_change#                 825991

4、备份控制文件

会使得:system checkpoint scn = datafile checkpoint scn <= start scn(当数据文件为旧且和旧控制文件为同一版本的时候相等,如果数据文件是当前的数据文件则是小于),stop scn not null/null

1)system checkpoint scn = datafile checkpoint scn <= start scn,需要使用using backup controlfile介质恢复成system scn = datafile scn = start scn = current log scn(当前日志最大SCN)

2)为保证上一次恢复没有用到log日志不被使用,必须在恢复完成后用resetlogs打开数据库

用冷备份的控制文件覆盖当前的控制文件,然后

SQL> startup mount

ORACLE instance started.

Total System Global Area  836976640 bytes

Fixed Size                  1339740 bytes

Variable Size             620760740 bytes

Database Buffers          209715200 bytes

Redo Buffers                5160960 bytes

Database mounted.

SQL> @getscn

SCN Location                                              CHECKPOINT_CHANGE#

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

Datafile Checkpoint SCN - V$Datafile:checkpoint_change#               825008

Datafile Start SCN - V$Datafile_header:checkpoint_change#

826676--&gt数据文件头SCN比控制文件中检查点信息高

Datafile Stop SCN - V$Datafile:Last_change#                           825008

System Checkpoint SCN - V$Database:checkpoint_change#                 825008

SQL> startup nomount force

ORACLE instance started.

Total System Global Area  836976640 bytes

Fixed Size                  1339740 bytes

Variable Size             620760740 bytes

Database Buffers          209715200 bytes

Redo Buffers                5160960 bytes

SQL> CREATE CONTROLFILE REUSE DATABASE "SUN" NORESETLOGS  ARCHIVELOG

2      MAXLOGFILES 16

3      MAXLOGMEMBERS 3

4      MAXDATAFILES 100

5      MAXINSTANCES 8

6      MAXLOGHISTORY 292

7  LOGFILE

8    GROUP 1 '/home/oracle/oradata/SUN/onlinelog/o1_mf_1_7z9z796m_.log'  SIZE 50M BLOCKSIZE 512,

9    GROUP 2 '/home/oracle/oradata/SUN/onlinelog/o1_mf_2_7z9z7d97_.log'  SIZE 50M BLOCKSIZE 512,

10    GROUP 3 '/home/oracle/oradata/SUN/onlinelog/o1_mf_3_7z9z7hfd_.log'  SIZE 50M BLOCKSIZE 512

11  -- STANDBY LOGFILE

12  DATAFILE

13    '/home/oracle/oradata/SUN/datafile/o1_mf_system_7z9z4zhr_.dbf',

14    '/home/oracle/oradata/SUN/datafile/o1_mf_sysaux_7z9z4zm5_.dbf',

15    '/home/oracle/oradata/SUN/datafile/o1_mf_undotbs1_7z9z4znc_.dbf',

16    '/home/oracle/oradata/SUN/datafile/o1_mf_users_7z9z4zpo_.dbf'

17  CHARACTER SET WE8MSWIN1252

18  ;

Control file created.

SQL> @getscn

SCN Location                                              CHECKPOINT_CHANGE#

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

Datafile Checkpoint SCN - V$Datafile:checkpoint_change#               826676

Datafile Start SCN - V$Datafile_header:checkpoint_change#             826676

Datafile Stop SCN - V$Datafile:Last_change#                           826676

System Checkpoint SCN - V$Database:checkpoint_change#                 826676

SQL> alter database open;

Database altered.

5、以noresetlogs方式重建控制文件

在以这种方式重建控制文件时,控制文件中的datafile checkpoint scn来自于Online logs中的Current log头,因此

current log scn = system checkpoint scn = datafile scn >= start scn(如果数据文件为备份而来则会大于start SCN,如果是当前的则为相等于start SCN), stop scn not null/null

1)current log scn = system checkpoint scn = datafile checkpoint scn >= start scn,因此需要介质恢复成system checkpoint scn = datafile scn = start scn = redolog scn(当前日志最大SCN)

2)stopscn is not null 不需要实例恢复

以下为简要测试:

SQL> startup nomount

ORACLE instance started.

Total System Global Area  836976640 bytes

Fixed Size                  1339740 bytes

Variable Size             620760740 bytes

Database Buffers          209715200 bytes

Redo Buffers                5160960 bytes

SQL> CREATE CONTROLFILE REUSE DATABASE "SUN"

NORESETLOGS  ARCHIVELOG

2      MAXLOGFILES 16

3      MAXLOGMEMBERS 3

4      MAXDATAFILES 100

5      MAXINSTANCES 8

6      MAXLOGHISTORY 292

7  LOGFILE

8    GROUP 1 '/home/oracle/oradata/SUN/onlinelog/o1_mf_1_7z9z796m_.log'  SIZE 50M BLOCKSIZE 512,

9    GROUP 2 '/home/oracle/oradata/SUN/onlinelog/o1_mf_2_7z9z7d97_.log'  SIZE 50M BLOCKSIZE 512,

10    GROUP 3 '/home/oracle/oradata/SUN/onlinelog/o1_mf_3_7z9z7hfd_.log'  SIZE 50M BLOCKSIZE 512

11  -- STANDBY LOGFILE

12  DATAFILE

13    '/home/oracle/oradata/SUN/datafile/o1_mf_system_7z9z4zhr_.dbf',

14    '/home/oracle/oradata/SUN/datafile/o1_mf_sysaux_7z9z4zm5_.dbf',

15    '/home/oracle/oradata/SUN/datafile/o1_mf_undotbs1_7z9z4znc_.dbf',

16    '/home/oracle/oradata/SUN/datafile/o1_mf_users_7z9z4zpo_.dbf'

17  CHARACTER SET WE8MSWIN1252

18  ;

Control file created.

SQL> @gettrace

TRACE

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

/home/oracle/diag/rdbms/sun/sun/trace/sun_ora_29201.trc

SQL> !:>/home/oracle/diag/rdbms/sun/sun/trace/sun_ora_29201.trc

SQL> @getlogdump

GROUP# FIRST_CHANGE# NEXT_CHANGE# MEMBER                                        STATUS

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

3        823813       826679 /home/oracle/oradata/SUN/onlinelog/o1_mf_3_7z INACTIVE

9z7hfd_.log

1        826679       832119 /home/oracle/oradata/SUN/onlinelog/o1_mf_1_7z INACTIVE

9z796m_.log

2        832119   2.8147E+14 /home/oracle/oradata/SUN/onlinelog/o1_mf_2_7z CURRENT

9z7d97_.log

Enter value for log_file_name:

/home/oracle/oradata/SUN/onlinelog/o1_mf_2_7z9z7d97_.log

old   1: alter system dump logfile '&LOG_FILE_NAME'

new   1: alter system dump logfile '/home/oracle/oradata/SUN/onlinelog/o1_mf_2_7z9z7d97_.log'

System altered.

SQL> @getscn

SCN Location                                              CHECKPOINT_CHANGE#

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

Datafile Checkpoint SCN - V$Datafile:checkpoint_change#

832119 --&gt此处控制文件中记录的系统检查点SCN为832119

Datafile Start SCN - V$Datafile_header:checkpoint_change#

828043--&gt此处StartSCN

Datafile Stop SCN - V$Datafile:Last_change#

System Checkpoint SCN - V$Database:checkpoint_change#

832119--&gt此处控制文件中记录的数据文件的检查点SCN为832119

通过查看Current Log的dump trace文件,可发现Current Log的Closed SCN也为

832119 ,控制文件中的Checkpoint SCN与该值一致

SQL> !vi /home/oracle/diag/rdbms/sun/sun/trace/sun_ora_29201.trc

*** 2012-07-25 09:57:50.769

Log read is SYNCHRONOUS though disk_asynch_io is enabled!

DUMP OF REDO FROM FILE '/home/oracle/oradata/SUN/onlinelog/o1_mf_2_7z9z7d97_.log'

Opcodes *.*

RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffff

SCNs: scn: 0x0000.00000000 thru scn: 0xffff.ffffffff

Times: creation thru eternity

FILE HEADER:

Compatibility Vsn = 186646528=0xb200000

Db ID=1896079205=0x7103df65, Db Name='SUN'

Activation ID=1896068453=0x7103b565

Control Seq=942=0x3ae, File size=102400=0x19000

File Number=2, Blksiz=512, File Type=2 LOG

descrip:"Thread 0001, Seq# 0000000008, SCN 0x0000000cb277-0xffffffffffff"

thread: 1 nab: 0xffffffff seq: 0x00000008 hws: 0x1 eot: 1 dis: 0

resetlogs count: 0x2ef56169 scn: 0x0000.000b8338 (754488)

prev resetlogs count: 0x296a3120 scn: 0x0000.00000001 (1)

Low  scn: 0x0000.000cb277 (832119) 07/25/2012 09:48:45

Next scn: 0xffff.ffffffff 01/01/1988 00:00:00

Enabled scn: 0x0000.000b8338 (754488) 07/05/2012 10:33:13

Thread closed scn: 0x0000.000cb277 (832119) 07/25/2012 09:48:45

Disk cksum: 0x3a97 Calc cksum: 0x3a97

Terminal recovery stop scn: 0x0000.00000000

Terminal recovery  01/01/1988 00:00:00

Most recent redo scn: 0x0000.00000000

Largest LWN: 0 blocks

End-of-redo stream : No

Unprotected mode

Miscellaneous flags: 0x800000

Thread internal enable indicator: thr: 0, seq: 0 scn: 0x0000.00000000

SQL> recover database;

Media recovery complete.

SQL> @getscn

SCN Location                                              CHECKPOINT_CHANGE#

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

Datafile Checkpoint SCN - V$Datafile:checkpoint_change#               852196

Datafile Start SCN - V$Datafile_header:checkpoint_change#             852196

Datafile Stop SCN - V$Datafile:Last_change#                           852196

System Checkpoint SCN - V$Database:checkpoint_change#                 832119

SQL> alter database open;

Database altered.

SQL>

6、以resetlogs方式重建控制文件

控制文件中datafile checkpoint scn 来自各数据文件头(start scn),而且system checkpoint scn会归为0

system checkpoint scn

1)system checkpoint scn

2)stopscn is not null 不需要实例恢复,而且因为SCN已经为redolog scn,log已经不能使用,必须用resetlogs方式打开数据库

以下为简要测试:

SQL> startup nomount

ORACLE instance started.

Total System Global Area  836976640 bytes

Fixed Size                  1339740 bytes

Variable Size             620760740 bytes

Database Buffers          209715200 bytes

Redo Buffers                5160960 bytes

SQL> CREATE CONTROLFILE REUSE DATABASE "SUN" RESETLOGS  ARCHIVELOG

2      MAXLOGFILES 16

3      MAXLOGMEMBERS 3

4      MAXDATAFILES 100

5      MAXINSTANCES 8

6      MAXLOGHISTORY 292

7  LOGFILE

8    GROUP 1 '/home/oracle/oradata/SUN/onlinelog/o1_mf_1_7z9z796m_.log'  SIZE 50M BLOCKSIZE 512,

9    GROUP 2 '/home/oracle/oradata/SUN/onlinelog/o1_mf_2_7z9z7d97_.log'  SIZE 50M BLOCKSIZE 512,

10    GROUP 3 '/home/oracle/oradata/SUN/onlinelog/o1_mf_3_7z9z7hfd_.log'  SIZE 50M BLOCKSIZE 512

11  -- STANDBY LOGFILE

12  DATAFILE

13    '/home/oracle/oradata/SUN/datafile/o1_mf_system_7z9z4zhr_.dbf',

14    '/home/oracle/oradata/SUN/datafile/o1_mf_sysaux_7z9z4zm5_.dbf',

15    '/home/oracle/oradata/SUN/datafile/o1_mf_undotbs1_7z9z4znc_.dbf',

16    '/home/oracle/oradata/SUN/datafile/o1_mf_users_7z9z4zpo_.dbf'

17  CHARACTER SET WE8MSWIN1252

18  ;

Control file created.

SQL> @getscn

SCN Location                                              CHECKPOINT_CHANGE#

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

Datafile Checkpoint SCN - V$Datafile:checkpoint_change#

852914--&gt此处控制文件中记录的数据文件的检查点SCN为852914

Datafile Start SCN - V$Datafile_header:checkpoint_change#

852914--&gt此处数据文件头上记录的检查点SCN为852914

Datafile Stop SCN - V$Datafile:Last_change#

System Checkpoint SCN - V$Database:checkpoint_change#

0--&gt此处控制文件中记录的系统检查点SCN为0

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> alter database open resetlogs;

Database altered.

SQL> @getscn

SCN Location                                              CHECKPOINT_CHANGE#

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

Datafile Checkpoint SCN - V$Datafile:checkpoint_change#

852918

Datafile Start SCN - V$Datafile_header:checkpoint_change#

852918

Datafile Stop SCN - V$Datafile:Last_change#

System Checkpoint SCN - V$Database:checkpoint_change#

852918

SQL> @getlog

GROUP# FIRST_CHANGE# NEXT_CHANGE# MEMBER                                        STATUS

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

3             0            0 /home/oracle/oradata/SUN/onlinelog/o1_mf_3_7z UNUSED

9z7hfd_.log

2             0            0 /home/oracle/oradata/SUN/onlinelog/o1_mf_2_7z UNUSED

9z7d97_.log

1        852915   2.8147E+14 /home/oracle/oradata/SUN/onlinelog/o1_mf_1_7z CURRENT

9z796m_.log

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence

1

Next log sequence to archive

1

Current log sequence

1

注:

使用resetlogs打开数据库(log sequence number变为1)后无必完整地备份一次数据库。而且这一操作会抛弃所有在上一次恢复没有用到的日志信息,确保这部分日志不被重新用与恢复。

如果我们指定以alter database open resetlogs打开数据库,那么我们当前online line日志的sequence number会归为1,并且之前的日志信息都会被抛弃。

以下条件需要使用resetlog

1)在不完全恢复(介质恢复)

2)使用备份控制文件(backup的控制文件一般从日志文件和数据库的信息以及SCN的信息,相比目前的状态都已经过期了)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21162451/viewspace-736571/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21162451/viewspace-736571/

Oracle 各备份恢复环境中SCN的理解相关推荐

  1. 资源放送丨《Oracle DataGuard 备份恢复最佳实践 》PPT视频

    前段时间,墨天轮邀请到墨天轮MVP,鼎甲科技高级技术顾问,姚远分享了直播<Oracle DataGuard 备份恢复最佳实践>,在这里小编跟大家共享一下PPT和视频,供大家参考学习. 提到 ...

  2. 今晚直播丨Oracle DataGuard 备份恢复最佳实践

    Oracle DataGuard 备份恢复最佳实践 - 09/24 提到DataGuard环境下的备份恢复,大家都知道可以在备库上备份,然后恢复到主库,但您知道在生产中实施会遇到多少坑吗?实际生产中我 ...

  3. 直播预告丨Oracle DataGuard 备份恢复最佳实践

    Oracle DataGuard 备份恢复最佳实践 - 09/24 提到DataGuard环境下的备份恢复,大家都知道可以在备库上备份,然后恢复到主库,但您知道在生产中实施会遇到多少坑吗?实际生产中我 ...

  4. Oracle 11g Data Guard环境中的归档管理

    在11g里面,随着ASM.RAC.Data Guard(包括Active Data Guard)的成熟,使用RAC+ASM+Data Guard越来越成为一种可靠的.维护简单.稳定的高可用性和容灾保护 ...

  5. oracle中毒,oracle数据库中毒恢复 oracle数据库解密恢复 服务器中勒索病毒解密恢复.Hermes666...

    oracle数据库中毒恢复 oracle数据库解密恢复 服务器中勒索病毒解密恢复.Hermes666 客户名称 保密 数据类型 oracle 11G 数据容量 100 gb 故障类型 服务器中毒,文件 ...

  6. 在linux oracle 10g/11g x64bit环境中,goldengate随os启动而自己主动启动的脚本

    在linux oracle 10g/11g x64bit环境中,goldengate随os启动而自己主动启动的脚本 在linux.oracle 10g/11g x64bit环境中,goldengate ...

  7. 大讲堂:Oracle DataGuard备份恢复最佳实践(同时在线730人)

    <Oracle DataGuard 备份恢复最佳实践>,该课已被收录进「2020恩墨大讲堂」课程第25章) PPT课件 直播预告 录像回看 视频回放 直播

  8. window oracle 只有bak文件怎么恢复_一起来学习Oracle的备份恢复基础吧-4

    基于backup controlfile的恢复 使用备份的控制文件在实际工作中的两种情况: 当前控制文件全部损坏,而数据文件备份.控制文件备份及当前的日志处在不同的SCN版本,它们之间又增加过表空间( ...

  9. oracle数据备份 恢复,Oracle数据备份和恢复

    Oracle数据库的备份和恢复有很多种方法,是一个很大的话题,足可以写一本书,但是,本文只介绍采用exp和imp进行数据备份和恢复,这也是程序员最常用的方法. 本文涉及的备份与恢复的其它概念都是狭义的 ...

  10. cdp备份适合oracle吗,备份系统建设中的四个认识误区,你有吗?

    [摘要]本文总结了企业在备份建设中常见的四个认识误区. [作者]李志刚 企业在备份建设中,主要的认识误区有以下几个: 一.用双机.阵列复制等系统冗余替代数据备份 双机双柜可实现服务器和存储的高可用性, ...

最新文章

  1. 图形图像处理_c/c++
  2. php加载不了图片不显示,图片显示不出来,但是数据库里有显示
  3. ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)+预测新数据得分
  4. 一步一步SharePoint 2007之四十三:实现自定义Workflow(2)——设置配置文件
  5. FreeRTOS系统配置文件FreeRTOSConfig.h
  6. lua判断字符不为空或空格_Lua判断字符串前缀是否为指定字符的3种方法
  7. 听说你是程序员的,给我做个网站呗
  8. 推荐一些数据挖掘和生信友好的SCI!
  9. yntaxError: Non-UTF-8 code starting with ‘\xe6‘ in file
  10. 软件实施提升效率的五个工具
  11. 从Jensen不等式到Minkowski不等式
  12. Android 常用adb shell 命令(转)
  13. ILSpy c#反编译工具,附下载地址
  14. 入门易精通难的Unity要如何学
  15. 网易开源分布式存储系统 Curve,性能彪悍
  16. Nice UI - Hacked.io
  17. java保存图片_java 保存图片
  18. Neo4j ① <图论>图,节点,关系,属性<知识图谱和图库>图谱,图库,优势<基础>模块,应用场景,环境搭建,浏览器
  19. HB 7066机舱内部非金属材料毒性测定
  20. Posix 接口笔记

热门文章

  1. D. Decreasing Debts
  2. [云原生专题-1]:总体-云原生初步探究,什么是云原生,云原生的基本特性
  3. 西瓜书 第九章 聚类算法
  4. halcon案例-指纹图片增强
  5. HBuilderX - 高效极客技巧
  6. linux 修改 bcast,Linux Ubuntu下IP的查看和修改
  7. QString的toLocal8bit与toLatin1的区别
  8. 红孩儿编辑器的模块设计4
  9. 用Python爬取斗鱼各区的主播信息,并制作热度排行榜
  10. SQl语句学习专题(转)