参考:http://www.itpub.net/showthread.php?threadid=244134&pagenumber=
http://www.itpub.net/thread-248076-1-1.html
SQL>select file#,name,checkpoint_change# from v$datafile;
FILE# NAME CHECKPOINT_CHANGE#
......
13 F:\ORACLE\ORADATA\TEST\RMAN.DBF 27259134244
14 F:\ORACLE\ORADATA\TEST\MAGGIE_DATA1.DBF 27207207995
15 F:\ORACLE\ORADATA\TEST\BLOCK01.DBF 27259134244
SQL>select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
27259186119
SQL>alter database datafile 15 offline;
数据库已更改
SQL>select file#,name,checkpoint_change# from v$datafile;
FILE# NAME CHECKPOINT_CHANGE#
......
13 F:\ORACLE\ORADATA\TEST\RMAN.DBF 27259134244
14 F:\ORACLE\ORADATA\TEST\MAGGIE_DATA1.DBF 27207207995
15 F:\ORACLE\ORADATA\TEST\BLOCK01.DBF 27259134244
SQL>select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
27259186180
SQL>alter database datafile 15 online;
ORA-01113: 文件 15 需要介质恢复
ORA-01110: 数据文件 15: 'F:\ORACLE\ORADATA\TEST\BLOCK01.DBF'
SQL>recover datafile 15;
完成介质恢复
SQL>alter database datafile 15 online;
数据库已更改
SQL>select file#,name,checkpoint_change# from v$datafile;
FILE# NAME CHECKPOINT_CHANGE#
......
13 F:\ORACLE\ORADATA\TEST\RMAN.DBF 27259134244
14 F:\ORACLE\ORADATA\TEST\MAGGIE_DATA1.DBF 27207207995
15 F:\ORACLE\ORADATA\TEST\BLOCK01.DBF 27259186244
ALTER DATABASE DATAFILE OFFLINE 的时候不对datafile做checkpoint,offline 后Checkpoint scn 和 stop scn是不一致的。stop scn比Checkpoint scn 要大一点。所以online的时候要recover。
recover的过程是作了必要的前滚和回滚,并且使Checkpoint scn 和 stop scn一致,都变为offline后的stop scn的大小。
online以后又作了一次checkpoint,并且stop scn变为无穷大。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10640532/viewspace-555618/ ,如需转载,请注明出处,否则将追究法律责任。