|
|
下面的试验说明了什么道理?
我做了两个试验: 想达到的目的是: redolog没有完全写入datafiles, 不应用任何redolog不完全恢复这些datafiles. 但试验二为什么不能成功呢?
1: 试验一成功)
--DB在open状态时, RMAN全备份DB, 自动备份当前controlfile.
--shutdown DB后,删除所有数据库文件
--RMAN restore controfile, RMAN restore DB.
--不完全恢复DB成功(不应用任何redolog)
2: 试验二不成功)
--DB在 shutdown abort 后: 删除controlfile, redolog, 只保留当前 datafile.
--重建controlfile, 不完全恢复DB(不应用任何redolog)
--不成功, 必须得应用redolog才能openDB.
3: 下面是两个试验的步骤, 请帮我解释一下其中的道理.
1): 试验一(成功)
DB在open状态: rman backup DB,and autobackup controlfile;
shudown DB
RMAN>restore conrtrolfile and mount it;
RMAN>restore DB;
--下面是此时controlfile和datafile_header相关的SCN:
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
741632
SQL> select name, checkpoint_change#,last_change# from v$datafile;
NAME CHECKPOINT_CHANGE# LAST_CHANGE#
------------------------------------------------------- ------------------ ------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF 741651
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF 741651
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF 741651
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF 741651
SQL> select name,checkpoint_change# from v$datafile_header;
NAME CHECKPOINT_CHANGE#
------------------------------------------------------- ------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF 741651
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF 741651
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF 741651
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF 741651
-- 下面是此时dump controlfile 和 datafile_header 相关的SCN:
--dump controlfile:
database_scn 741632
datafile_scn:
ckpt_count:194, ckpt_scn:741651, stop_scn:ffff
ckpt_count:155, ckpt_scn:741651, stop_scn:ffff
ckpt_count:192, ckpt_scn:741651, stop_scn:ffff
ckpt_count:191, ckpt_scn:741651, stop_scn:ffff
--dump datafile header:
datafile_scn:
ckpt_count:194, ckpt_scn:741651, stop_scn:ffff
ckpt_count:155, ckpt_scn:741651, stop_scn:ffff
ckpt_count:192, ckpt_scn:741651, stop_scn:ffff
ckpt_count:191, ckpt_scn:741651, stop_scn:ffff
-- 不应用redolog恢复成功
recover database until cancel using backup controlfile;
cancel
Media recovery cancelled.
2): 试验二(没有成功)
shutdown abort
delete all controlfile and redolog
startup nomount
create new controlfile from tracefile;
--下面是此时controlfile和datafile_header相关的SCN:
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
0
SQL> select name, checkpoint_change#,last_change# from v$datafile;
NAME CHECKPOINT_CHANGE# LAST_CHANGE#
------------------------------------------------------- ------------------ ------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF 690962
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF 690962
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF 690962
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF 690962
SQL> select name,checkpoint_change# from v$datafile_header;
NAME CHECKPOINT_CHANGE#
------------------------------------------------------- ------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF 690962
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF 690962
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF 690962
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF 690962
-- 下面是此时dump controlfile 和 datafile_header 相关的SCN:
--dump controlfile:
database 0
datafile:
ckpt_count:175, ckpt_scn:690962, stop_scn:ffff
ckpt_count:136, ckpt_scn:690962, stop_scn:ffff
ckpt_count:173, ckpt_scn:690962, stop_scn:ffff
ckpt_count:172, ckpt_scn:690962, stop_scn:ffff
--dump datafile header:
datafile:
ckpt_count:175, ckpt_scn:690962, stop_scn:ffff
ckpt_count:136, ckpt_scn:690962, stop_scn:ffff
ckpt_count:173, ckpt_scn:690962, stop_scn:ffff
ckpt_count:172, ckpt_scn:690962, stop_scn:ffff
-- 不应用redolog不能恢复成功(必须得应用active和current的log,才可打开数据库,为什么呢?)
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 690962 generated at 04/16/2009 09:48:40 needed for thread 1
ORA-00289: suggestion : E:\ARCHIVE\ARC00005_0684254321.1
ORA-00280: change 690962 for thread 1 is in sequence #5
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF' |
|