重建控制文件时,与数据文件相关的Checkpoint信息来自何处

转载 2007年09月17日 16:06:00

背景:

关闭数据库,启动数据库到Mount状态,查询此时数据文件头,控制文件中记录的各数据文件的Checkpoint;

再次关闭数据库,备份所有数据文件;

然后打开数据库,执行各种操作,如:强制执行检查点;

再次关闭数据库,用备份的数据文件恢复现在的数据文件,重建控制文件(重建控制文件分为两种情况

1. Noresetlogs ——> 查看此时的数据文件头,控制文件记录的各数据文件的Checkpoint)

2. Resetlogs ——> 查看此时的数据文件头,控制文件记录的各数据文件的Checkpoint)

与之前的Checkpoint比较。

问题:

1. Noresetlogs 重建控制文件,此时控制文件中记录的Checkpoint信息由何处得来?

2. Resetlogs 重建控制文件,此时控制文件中记录的Checkpoint信息由何处得来?

实验步骤:

 

Resetlogs的情况:

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

SQL> select checkpoint_change#

2 from v$datafile;

CHECKPOINT_CHANGE#

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

306219

306219

306219

306219

SQL> select checkpoint_change#

2 from v$datafile_header;

CHECKPOINT_CHANGE#

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

306219

306219

306219

306219

SQL> shutdown immediate

ORA-01109: 数据库未打开

 

 

已经卸载数据库。

ORACLE 例程已经关闭。

——备份所有数据文件

SQL> startup

ORACLE 例程已经启动。

 

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

数据库已经打开。

SQL> alter system checkpoint;

 

系统已更改。

 

SQL> alter system checkpoint;

 

系统已更改。

 

SQL> alter system checkpoint;

 

系统已更改。

 

SQL> alter system checkpoint;

 

系统已更改。

 

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

——用备份的数据文件代替当前的数据文件。

SQL> startup nomount

ORACLE 例程已经启动。

 

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

——重建控制文件Resetlogs情况:

SQL> @d:ora90adminiceudumpcontrol.sql

 

控制文件已创建

 

SQL> select checkpoint_change#

2 from v$datafile;

CHECKPOINT_CHANGE#

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

306219

306219

306219

306219

SQL> select checkpoint_change#

2 from v$datafile_header;

CHECKPOINT_CHANGE#

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

306219

306219

306219

306219

SQL> alter database open;

alter database open

*

ERROR 位于第 1 行:

ORA-01589: ??????????? RESETLOGS ? NORESETLOGS ??

 

 

SQL> alter database open resetlogs;

 

数据库已更改。

——由于此时控制文件中记录的各数据文件的Checkpoint和各数据文件头记录的Checkpoint一致,

——且各数据文件的Checkpoint和其Stop Checkpoint一致,故可以直接打开数据库,不用Recover。

——只不过Open的时候要Resetlogs而已。

SQL> alter system checkpoint;

 

系统已更改。

 

SQL> alter system checkpoint;

 

系统已更改。

 

SQL> alter system checkpoint;

 

系统已更改。

Noresetlogs的情况:

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动。

 

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

SQL> select checkpoint_change#

2 from v$datafile;

CHECKPOINT_CHANGE#

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

306340

306340

306340

306340

SQL> select checkpoint_change#

2 from v$datafile_header;

CHECKPOINT_CHANGE#

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

306340

306340

306340

306340

SQL> alter database backup controlfile to trace;

——备份控制文件

数据库已更改。

 

SQL> shutdown immediate

ORA-01109: 数据库未打开

 

 

已经卸载数据库。

ORACLE 例程已经关闭。

——备份所有的数据文件

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

数据库已经打开。

SQL> alter system checkpoint;

系统已更改。

SQL> alter system checkpoint;

系统已更改。

SQL> alter system checkpoint;

系统已更改。

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

——用备份的数据文件恢复当前的所有数据文件

SQL> startup nomount

ORACLE 例程已经启动。

 

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

SQL> @d:ora90adminiceudumpcontrol.sql

——重建控制文件,用Noresetlogs

控制文件已创建

SQL> select checkpoint_change#

2 from v$datafile;

CHECKPOINT_CHANGE#

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

306454

306454

306454

306454

——当前控制文件中记录的各数据文件的Checkpoint。

SQL> select checkpoint_change#

2 from v$datafile_header;

CHECKPOINT_CHANGE#

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

306340

306340

306340

306340

——当前各数据文件头记录的各自的Checkpoint,与备份时的Checkpoint相等.

——但是与当前控制文件记录的Checkpoint不等。

 

 

 

SQL> alter session set nls_language=american;

Session altered.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01113: file 1 needs media recovery

ORA-01110: data file 1: 'D:ORA90ORADATAICESYSTEM01.DBF'

——控制文件记录的各数据文件的Checkpoint与各数据文件头记录的Checkpoint不等,故要恢复。

SQL> recove datafile 1;

SP2-0734: unknown command beginning "recove dat..." - rest of line ignored.

SQL> recover datafile 1;

Media recovery complete.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01113: file 2 needs media recovery

ORA-01110: data file 2: 'D:ORA90ORADATAICEUNDOTBS01.DBF'

SQL> recover database;

Media recovery complete.

SQL> alter database open;

Database altered.

结论:

1. Noresetlogs重建控制文件时,控制文件中的各数据文件的Checkpoint来自Online logs中的Current log头。(可以用Alter session set events ‘immediate trace name redohdr level 3’;来验证)

2. Resetlogs重建控制文件时,控制文件中的各数据文件的Checkpoint来自各数据文件头。

其实这也比较好理解,不Resetlogs的话,当前Online log中肯定是含有最新的Checkpoint,一旦Resetlogs,说明当前Online log 不可用,也就只好从各数据文件头来读取相应的Checkpoint了。

 

相关文章推荐

自动生成控制文件及数据文件并完成sqlldr的自动导入

在config.cfg里面配好相应的用户和表名就可得到相应的select语句和该表的控制文件,运行generate.sh可以得到该表的数据文件,运行sqlldr可以把生成的数据文件插入到目标库表中。目...

ORACLE 10g将数据文件,日志文件和控制文件迁移到不同的路径

ORACLE 10g将数据文件,日志文件和控制文件迁移到不同的路径       数据文件,控制文件和日志文件原路径在:"d:\oracle\10g\orcl",现在要将它们迁移至“d:...

oracle中如何移动控制文件,数据文件,日志文件

oracle中如何移动控制文件,数据文件,日志文件   oracle9i/10G-xG中移动控制文件,数据文件,日志文件 ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。 w...

Oracle学习(十八)之控制文件、日志文件、数据文件及配置文件管理总结

一、控制文件 1.查询 select * from v$controlfile; 2.修改 1)修改参数 alter system control_files= '文件路径1', '文...

更改Oracle数据文件、控制文件、日志文件位置

关于更改Oracle数据文件(包括系统数据文件)位置,网上的方法很多,但我是初学者,理解不够透彻,测试的时候急于求成,以至于试验多次才成功,原因是没有注意顺序,在此总结一下,错误之处请 多包涵,...

oracle中如何移动控制文件,数据文件,日志文件

ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。 windows环境中用: host copy 或 host move 其它均相同。 以下是unix或linux环境中, 一.移...

Oracle学习.数据文件、控制文件、重做日志文件的理解

什么是数据文件、控制文件、重做日志文件? 首先从Oracle的官方文档里摘录下面内容: The following sections explain the physical database s...

oracle数据库中重要的文件(控制文件、数据文件、重写日志文件、归档日志文件、初始化参数文件)

本篇着重从物理角度来说明oracle数据库的组成。 Oracle数据库,就是操作系统文件的集合。

丢失所有控制文件,还原所有数据文件,不还原控制文件,recover database until cancel

说明:创建表test03,切换日志,创建表test04,切换日志,删除所有数据文件,还原备份的所有数据文件,不需要还原控制文件;test03的归档日志没有丢失,test04的归档日志丢失,不能恢复te...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)