数据库启动验证
alter session set events 'immediate trace name file_hdrs level 10' dump 所有数据文件头部的控制文件项(一部分信息来自控制文件,一部分来自数据文件)
如下dump来理解数据的启动验证SQL> shutdown abort
ORACLE 例程已经关闭。
SQL>
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 647204864 bytes
Fixed Size 2178536 bytes
Variable Size 566231576 bytes
Database Buffers 71303168 bytes
Redo Buffers 7491584 bytes
数据库装载完毕。
SQL> alter session set events 'immediate trace name file_hdrs level 10';
会话已更改。
SQL> alter database open;
数据库已更改。
SQL> select * from v$diag_info where name='Default Trace File';
INST_ID NAME
---------- ----------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
1 Default Trace File
f:\app\administrator\diag\rdbms\ctw\ctw\trace\ctw_ora_6308.trc
SQL>
转储内容如下,选取一个数据文件分析
*** 2014-11-21 15:40:35.323
DATA FILE #5:
name #9: F:\APP\ADMINISTRATOR\ORADATA\CTW\PRODO1.DBF
creation size=1310720 block size=8192 status=0xe head=9 tail=9 dup=1
tablespace 5, index=6 krfil=5 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:1267 scn: 0x0000.0076ee60 11/21/2014 09:16:25
Stop scn: 0xffff.ffffffff 11/21/2014 08:41:59
Creation Checkpointed at scn: 0x0000.00047e9c 07/22/2014 16:54:07
以上是控制文件部分转储,这部分信息记录了
检查点记数 : Checkpoint cnt:1267
检查点 scn:: 0x0000.0076ee60 11/21/2014 09:16:25
数据文件stop scn : Stop scn: 0xffff.ffffffff 11/21/2014 08:41:59
以下是数据文件头的信息:
检查点Checkpointed at scn: 0x0000.0076ee60 11/21/2014 09:16:25
检查点计数:chkpt cnt: 1267 ctl cnt:1266
V10 STYLE FILE HEADER:
Compatibility Vsn = 186646528=0xb200000
Db ID=1369339915=0x519e780b, Db Name='CTW'
Activation ID=0=0x0
Control Seq=35420=0x8a5c, File size=1310720=0x140000
File Number=5, Blksiz=8192, File Type=3 DATA
Tablespace #5 - TTS_PROD01 rel_fn:5
Creation at scn: 0x0000.00047e9c 07/22/2014 16:54:07
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
reset logs count:0x32dfa9cb scn: 0x0000.00000001
prev reset logs count:0x0 scn: 0x0000.00000000
recovered at 11/21/2014 08:32:04
status:0x4 root dba:0x00000000 chkpt cnt: 1267 ctl cnt:1266
begin-hot-backup file size: 0
Checkpointed at scn: 0x0000.0076ee60 11/21/2014 09:16:25
数据库在启动的过程:
先检查数据文件头中的chkpt cnt(检查计数)是否和对应的控制文件中的chkpt cnt是否一致,如果不一致文件需要介质恢复或者是控制文件过旧
第二次检查数据文件头的开始scn和对应的控制文件中结束scn是否一致,如果结束scn等于开始scn,则不需要实例恢复,否则需要实例恢复
如下来看oracle启动验证:
if (检查点SCN < 文件头SCN)
then "控制文件来自备份,需要进行不完全恢复,并用resetlog方式打开”
eles if (检查点SCN > 文件头SCN)
then "数据文件来自备份,需要log进行完全或不完全恢复"
else if (检查点SCN = 文件头SCN)
then "数据库能正常open,还需要判断是否需要实例恢复"
if (终止SCN = 启动SCN)
then "数据库打开时不需要实例恢复“
else if (终止SCN = NULL)
then "数据库需要实例恢复"