oracle 数据文件检查,重建控制文件, 数据文件检查点SCN到底来自哪里?

news/2024/7/7 15:18:47

Oracle 10.2.0.4 ,    windows 2003

关于重建控制文件后,  控制文件中的数据文件检查点SCN来自哪里, 有下面两种说法 :

1.    用noresetlogs重建控制文件时,控制文件中datafile checkpoint SCN来自online logs 中的current log头部,选择noresetlogs重建使得控制文件最新。 如记录了最新的联机日志和日志序号。

2.    用noresetlogs重建控制文件后,这时查询v$log中的current redo log的first_change# 及v$database中的系统检查点SCN, 发现重建的控制文件中的系统检查点SCN从当前redo log的low SCN获得, 而控制文件里记录的数据文件检查点SCN(v$datafile)从数据文件头部(v$datafile_header)获得.

测试发现重建控制文件后, 更新到新建控制文件中的系统检查点SCN及数据文件检查点SCN  好象都是来自于数据文件头的scn .

测试 :

SQL> insert into tony.test values (11,'CMM');

SQL> insert into tony.test values (12,'CMM');

SQL> commit;

提交完成。

SQL> alter database backup controlfile to trace  ;

数据库已更改。

SQL> insert into tony.test values (13,'CMM');

SQL> insert into tony.test values (14,'CMM');

SQL> commit;

提交完成。

SQL> alter system switch logfile;

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

正常关闭数据库后,模拟手工删除控制文件。

SQL> host del  D:\oracle\product\10.2.0\oradata\test01\CONTROL01.CTL

SQL> host del  D:\oracle\product\10.2.0\oradata\test01\CONTROL02.CTL

SQL> host del  D:\oracle\product\10.2.0\oradata\test01\CONTROL03.CTL

SQL> startup

ORACLE 例程已经启动。

Total System Global Area  524288000 bytes

Fixed Size                  1249920 bytes

Variable Size             159387008 bytes

Database Buffers          356515840 bytes

Redo Buffers                7135232 bytes

ORA-00205: ?????????, ??????, ???????

从tracefile中提出脚本重建控制文件。

SQL> CREATE CONTROLFILE REUSE DATABASE "TEST01" NORESETLOGS  ARCHIVELOG

2      MAXLOGFILES 16

3      MAXLOGMEMBERS 3

4      MAXDATAFILES 100

5      MAXINSTANCES 8

6      MAXLOGHISTORY 292

7  LOGFILE

8    GROUP 1 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\REDO01.LOG'  SIZE 50M,

9    GROUP 2 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\REDO02.LOG'  SIZE 50M,

10    GROUP 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\REDO03.LOG'  SIZE 50M

11  -- STANDBY LOGFILE

12  DATAFILE

13    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\SYSTEM01.DBF',

14    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\UNDOTBS01.DBF',

15    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\SYSAUX01.DBF',

16    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\USERS01.DBF'

17  CHARACTER SET AL32UTF8

18  ;

控制文件已创建。

SQL> select group#, first_change#  from v$log where status='CURRENT' ;

GROUP# FIRST_CHANGE#

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

1        902875        -- 在current redo log中的 LOW SCN

SQL> select  CHECKPOINT_CHANGE#  from v$database;

CHECKPOINT_CHANGE#

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

903181              -- 更新到新建控制文件中的系统检查点SCN

这时控制文件中的数据文件检查点SCN 如下 CHECKPOINT_CHANGE# :

SQL> select file# , CHECKPOINT_CHANGE#, LAST_CHANGE# from v$datafile;

FILE# CHECKPOINT_CHANGE# LAST_CHANGE#

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

1             903181       903181

2             903181       903181

3             903181       903181

4             903181       903181

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

FILE# CHECKPOINT_CHANGE#

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

1             903181      -- 数据文件头中的检查点SCN         2             903181

3             903181

4             903181

SQL> alter database mount;

SQL> select group#, first_change#  from v$log where status='CURRENT' ;

GROUP# FIRST_CHANGE#

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

3        903182

SQL> select  CHECKPOINT_CHANGE#  from v$database;

CHECKPOINT_CHANGE#

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

903565

SQL> select file# , CHECKPOINT_CHANGE#, LAST_CHANGE# from v$datafile;

FILE# CHECKPOINT_CHANGE# LAST_CHANGE#

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

1             903565       903565

2             903565       903565

3             903565       903565

4             903565       903565

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

FILE# CHECKPOINT_CHANGE#

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

1             903565

2             903565

3             903565

4             903565

SQL> recover database using backup controlfile;

ORA-00279: 更改 903565 (在 04/27/2011 11:56:24 生成) 对于线程 1 是必需的

ORA-00289: 建议:

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00003_0749482512.001

ORA-00280: 更改 903565 (用于线程 1) 在序列 #3 中

指定日志: {=suggested | filename | AUTO | CANCEL}

auto

ORA-00308: 无法打开归档日志

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00003_0749482512.001'

ORA-27041: 无法打开文件

OSD-04002: ???????

O/S-Error: (OS 2) ????????????????

ORA-00308: 无法打开归档日志

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00003_0749482512.001'

ORA-27041: 无法打开文件

OSD-04002: ???????

O/S-Error: (OS 2) ????????????????

SQL> select group#, first_change#  from v$log where status='CURRENT' ;

GROUP# FIRST_CHANGE#

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

3        903182

SQL> select  CHECKPOINT_CHANGE#  from v$database;

CHECKPOINT_CHANGE#

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

903565

SQL> select file# , CHECKPOINT_CHANGE#, LAST_CHANGE# from v$datafile;

FILE# CHECKPOINT_CHANGE# LAST_CHANGE#

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

1             903565

2             903565

3             903565

4             903565

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

FILE# CHECKPOINT_CHANGE#

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

1             903565

2             903565

3             903565

4             903565

SQL>

SQL> recover database using backup controlfile;

ORA-00279: 更改 903565 (在 04/27/2011 11:56:24 生成) 对于线程 1 是必需的

ORA-00289: 建议:

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00003_0749482512.001

ORA-00280: 更改 903565 (用于线程 1) 在序列 #3 中

指定日志: {=suggested | filename | AUTO | CANCEL}

D:\oracle\product\10.2.0\oradata\test01\REDO03.LOG

已应用的日志。

完成介质恢复。

SQL>

SQL> select group#, first_change#  from v$log where status='CURRENT' ;

GROUP# FIRST_CHANGE#

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

3        903182

SQL> select  CHECKPOINT_CHANGE#  from v$database;

CHECKPOINT_CHANGE#

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

903565

SQL> select file# , CHECKPOINT_CHANGE#, LAST_CHANGE# from v$datafile;

FILE# CHECKPOINT_CHANGE# LAST_CHANGE#

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

1             903566       903566

2             903566       903566

3             903566       903566

4             903566       903566

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

FILE# CHECKPOINT_CHANGE#

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

1             903566

2             903566

3             903566

4             903566

SQL> alter database open resetlogs ;

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\TEMP01.DBF'

2       SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;


http://www.niftyadmin.cn/n/2823431.html

相关文章

centos7.2环境yum方式快速搭建lnmp环境nginx+mariadb+php-fpm

centos7.2环境yum方式安装nginxmariadbphp-fpm1.安装lnmp环境安装epel源yum install -y epel-release安装 MySQL PHP Nginx phpMyAdminYUM 源已经配置好了,现在直接安装 MySQL PHP Nginx phpMyAdmin:yum install -y mariadb mariadb-server nginx …

中断系统和程序中断方式

http://www.softwarehistory.net/h/E_Comp_ZuchengYuanli/67.php

路由访问控制列表原理和三种类型的详解

路由访问控制列表原理详解路由访问控制列表(ACL)是应用在路由器接口的指令列表(即规则),用来告诉路由器,哪些数据包可以接收,哪些数据包需要拒绝。ACL可分为三种类型标准ACL:检查数据…

SQL Server-外部联接基础回顾(十三)

前言 本节我们继续讲讲联接类型中的外部联接,本节之后我们将讲述有关联接性能以及更深入的知识,简短内容,深入的理解,Always to review the basics。 外部联接 外部联接又分为左外部联接和右外部联接,使用关键字分别是…

缓冲、中断和DMA技术

http://www.360doc.com/content/10/0730/11/1871462_42465665.shtml

基于RSA的WEB前端密码加密方案

受制于WEB页面源码的暴露,因此传统的对称加密方案以及加密密钥都将暴露在JS文件中,同样可以被解密。 目前比较好的解决方案是WEB页面全程或用户登录等关键环节使用HTTPS进行传输。 另外一种解决方案就是通过RSA进行加密。 RSA是一种非对称加密&#xff0…

linux 多进程共享,linux多进程通讯---通过共享磁盘文件

文章目录1、举例#include #include #include #include #include #include #include int main (void){char buf[64];int i;printf ("read process pid: %d\n", getpid());int fd open ("data.txt", O_RDONLY);if (fd < 0){perror ("open");re…

网格自适应_abaqus_基于自适应网格的胎面磨损分析

关键词&#xff1a;磨损率 流线 自适应网格约束Archard磨损模型 用户子程序1. 有限元模型与Archard磨损模型(1)有限元模型轮胎的几何及有限元模型与abaqus_轮胎的稳态结果导入显式动力学分析基本相同(胎面包含花纹细节)&#xff0c;磨损分析步紧接着abaqus_轮胎的稳态滚动分析进…