`
nesta2001zhang
  • 浏览: 70719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

深入了解Oracle SCN(3)

 
阅读更多

示例
例子背景:
oracle   8i
windows
采用rman做热备,在备份 期间,做不少事务,同时做alter system checkpoint.

RMAN> run {
2> allocate channel c1  type   disk;
3> backup database filesperset 3 format 'e:/full_%p_%t.bak';
4> }

(这里需要一提的是,在这个备份角本里面我们加了filesperset 3。这样将整个数据库 分成两个备份集。这样还原出来的数据文件其checkpoint_change#将不一样。否则由于数据库数据文件不多,都将包含在一个备份集中,这样即使在备份中做insert操作和alter system checkpoint也不会产生不同的checkpoint_change#。因为rman备份是将一个备份集中的文件同时备份的。
而checkpoint_change#是存放在数据文件头部的,这样备份这些数据文件的头部的时间将是很快的。)

然后
RMAN> run{
2> allocate channel c1 type disk;
3> restore database;
4> }


SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
2156662354

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

FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 2156662355
2 2156662354
3 2156662322
4 2156662354
5 2156662354
6 2156662354

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

FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ -------------
1 2156662355
2 2156662349
3 2156662322
4 2156662342
5 2156662349
6 2156662342

从这里可以看出,显然是需要做media recovery的。正常情况下,还需要做instance recovery.当然由于没有在线日志,所以只能做resetlogs。

1.有归档日志存

若有归档日志在,则只需要做一个recover database until cancel;
然后即可alter database open resetlogs;


SQL> recover database until cancel (using backup controlfile);
ORA-00279: change 2156621770 generated at 10/07/2005 14:30:06 needed for thread 1
ORA-00289: suggestion : D:ORACLE8IRDBMSARC00738.001
ORA-00280: change 2156621770 for thread 1 is in sequence #738


Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 2156621779 generated at 10/07/2005 14:30:51 needed for thread
1
ORA-00289: suggestion : D:ORACLE8IRDBMSARC00739.001
ORA-00280: change 2156621779 for thread 1 is in sequence #739
ORA-00278: log file 'D:ORACLE8IRDBMSARC00738.001' no longer needed for this recovery


ORA-00308: cannot open archived log 'D:ORACLE8IRDBMSARC00739.001'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) 系统找不到指定的文件。


SQL> alter database open resetlogs;

Database altered.


2.无归档日志
如果没有归档日志,由于restore出来是没有在线日志的。

如果v$datafile_header中checkpoint_change#是相同的,此时由于控制文件中checkpoint_change#比数据文件头中要高,所以数据库还是需要做media recovery。

此时重建控制文件还是一样的,因为重建控制文件后,在控制文件中checkpoint_change#为0,与文件头的checkpoint_change#还是不一样,还需要media recovery.且由于控制文件中checkpoint_change#比文件头中要高,所以做recover时还需要加上using backup controlfile.

注意,这时由于没有在线日志,所以重建控制文件需要将noresetlogs改成RESETLOGS才可以创建成功,否则会报以下错误:
ORA-01565: error in identifying file 'D:ORACLE8IORADATAORA8IREDO01.LOG'
ORA-27041: unable to open file
如:
CREATE CONTROLFILE REUSE DATABASE "ORA8I" RESETLOGS ARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 254
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'D:ORACLE8IORADATAORA8IREDO01.LOG' SIZE 1M,
GROUP 2 'D:ORACLE8IORADATAORA8IREDO02.LOG' SIZE 1M,
GROUP 3 'D:ORACLE8IORADATAORA8IREDO03.LOG' SIZE 1M
DATAFILE
'D:ORACLE8IORADATAORA8ISYSTEM01.DBF',
'D:ORACLE8IORADATAORA8IRBS01.DBF',
'D:ORACLE8IORADATAORA8IUSERS01.DBF',
'D:ORACLE8IORADATAORA8ITEMP01.DBF',
'D:ORACLE8IORADATAORA8ITOOLS01.DBF',
'D:ORACLE8IORADATAORA8IINDX01.DBF'
CHARACTER SET ZHS16GBK
;

此时scn号信息如下:
SQL> select CHECKPOINT_CHANGE#,CONTROLFILE_CHANGE# from v$database;

CHECKPOINT_CHANGE# CONTROLFILE_CHANGE#
------------------ -------------------
0 0


此时由于没有归档日志和在线日志,无法做recovery。
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 2156662342 generated at 10/07/2005 17:06:27 needed for thread 1
ORA-00289: suggestion : D:ORACLE8IRDBMSARC00749.001
ORA-00280: change 2156662342 for thread 1 is in sequence #749

Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: 'D:ORACLE8IORADATAORA8ISYSTEM01.DBF'

ORA-01112: media recovery not started

所以也就无法做alter database open Resetlogs了。

此时可以加上_allow_resetlogs_corruption隐含参数,然后就可以alter database open resetlogs将数据库打开了。


当然如果v$datafile_header中checkpoint_change#是不相同的,那么此时就没有什么常归有效的办法能将数据库打开了。

如果相差不多,加上隐含参数_allow_resetlogs_corruption,然后alter database open resetlogs还是有可能可以打开的。这个参数oracle是不建议加的,且加上这个参数也只是有可能可以打开。这个参数是以最oldest的scn将数据库打开,所以最好system数据文件的scn号是最oldest的,否则容易产生大量的600号错误。

 

分享到:
评论

相关推荐

    Oracle SCN机制解析

    Oracle SCN(System Change Number)机制是Oracle数据库中用于追踪和管理数据变化的关键组件。SCN是一个不断递增的数字,确保了数据库能够准确地识别和处理...因此,掌握SCN机制是深入了解Oracle数据库核心功能的基础。

    oracle scn概念解析

    ### Oracle SCN 概念解析 #### 一、SCN 的定义与作用 **SCN (System Change Number)** 是 ...通过这些 SQL 查询,可以深入了解 SCN 在实际应用中的工作原理,对于数据库的性能调优、故障排查等方面都有着重要的意义。

    oracle scn

    ### Oracle SCN详解 #### 一、SCN概念与作用 **SCN(System Change Number)**,即系统变更号,是Oracle...通过对SCN的理解,我们可以更深入地了解Oracle数据库的内部运作机制,从而更好地管理和优化数据库性能。

    Oracle数据库IO深入分析

    在深入了解Oracle数据库的I/O操作之前,我们首先需要了解Oracle数据库的基本物理结构,这有助于更好地理解I/O产生的原因及其过程。 **1.1.1 控制文件** 控制文件是Oracle数据库的核心组成部分之一,它包含了关于...

    Oracle内存管理(深入解析)

    了解这些工具和视图可以帮助DBA有效地管理和优化Oracle数据库的内存使用,提高系统性能。 总的来说,Oracle内存管理涉及到多个层面,包括进程私有内存(PGA)和全局共享内存(SGA)的配置、使用和优化。深入理解...

    oracle介质恢复的内部过程

    - **Controlfile Dump分析**:通过对控制文件的dump内容进行分析,可以深入了解介质恢复所需的关键信息,如数据文件的位置、重做日志文件的状态等。 - **Redolog Dump分析**:重做日志文件包含了数据库的所有更改...

    oracle入门及提高

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级数据存储和处理中扮演着重要角色。...通过学习这些内容,不仅可以掌握Oracle的基本操作,还能深入了解其内部机制,从而更好地管理和优化数据库。

    论文研究-Oracle8i数据库日志文件的分析与恢复.pdf

    在实际操作中,除了掌握日志文件的结构和格式之外,还需要了解Oracle数据库的配置、运行状态以及发生故障的具体情况。通过综合分析,采用合适的恢复方法,可以将数据库恢复到一致和可用的状态。 总之,Oracle 8i...

    Oracle数据块结构分析说明BLOCK结构详解

    Oracle是业界广泛使用的大型关系型数据库管理系统,其核心组成部分之一就是数据块结构(Block)。数据块是Oracle数据库中最小的...因此,对数据块结构的深入了解对于确保数据库的稳定运行和数据的安全具有重要意义。

    lr_oracle计数器

    3. CR blocks created (V$SESSTAT1/[SYS]/ABCDEF/ORACLE.EXE) (绝对) 缓冲区被克隆(复制)的次数,通常由于缓冲区处于不兼容模式。克隆可能导致额外的I/O操作,影响性能。 4. Cached Commit SCN referenced (V$...

    oracle机制及内存区的优化建议

    Oracle数据库的优化是一个复杂而关键的任务,涉及到多个层面,包括其内部机制、内存区的配置以及数据文件和...通过深入了解Oracle的组件结构和工作原理,我们可以更好地调整和优化数据库,从而提升整体系统的运行效率。

    oracle数据误删找回

    本文将深入探讨如何在 Oracle 10g 中找回被误删的数据,主要涉及 SCNs(系统改变号)的概念及其在恢复过程中的作用。 SCN,即 System Change Number,是 Oracle 数据库的一个关键组件,它充当了数据库的内部时钟,...

    存储管理---深入ORACLE9I核心.pdf

    ### 存储管理深入Oracle9I核心 #### 11.1 大脑—控制文件 **11.1.1 控制文件的...通过上述知识点的学习,我们深入了解了Oracle9i数据库中存储管理的核心概念和技术细节,这对于日常数据库管理和维护具有重要意义。

    expert one-on-one oracle (10g) ch2

    通过这些章节的学习,读者不仅能够了解Oracle 10g 在各个层面的运作机制,还能掌握如何针对不同的操作系统环境进行有效的架构调整和优化。这不仅有助于提高数据库的性能,还能够确保其在各种应用场景下的稳定性和...

    A02_ORACLE数据库体系结构.pdf

    Oracle数据库体系结构是数据库管理员和开发人员必须深入理解的关键知识领域。Oracle数据库体系结构主要由实例和数据库组成。...对于想要深入了解Oracle数据库技术的人来说,掌握这些知识点是必不可少的。

    oracle checkpoint工作原理

    在深入了解Checkpoint的工作机制之前,我们需要熟悉几个关键概念: - **RBA(Redo Byte Address)**:表示重做日志块的地址,类似于数据文件中的ROWID,用于定位特定的重做日志记录。 - **LRBA(Low RBA)**:表示...

    在oracle中Logmnr进行日志挖掘

    在Oracle中使用Logmnr进行日志挖掘是一项复杂但非常有用的技能,它为数据库管理员提供了深入洞察数据库活动的能力。通过理解和掌握上述工作流程和示例代码,你可以有效地利用Logmnr来增强数据管理和安全审计能力。

    Oracle架构的基础知识(入门级)

    了解这些结构对于理解Oracle如何存储和管理数据至关重要。 ##### 1. 数据库文件类型 Oracle数据库主要包括以下几种类型的文件: - **数据字典文件**(`.datadictionary`):存储数据库元数据信息。 - **重做日志...

Global site tag (gtag.js) - Google Analytics