SQL>select file#,name,checkpoint_change# from v$datafile;
FILE# NAME CHECKPOINT_CHANGE#
......
13 F:\ORACLE\ORADATA\TEST\RMAN.DBF27259134244
14 F:\ORACLE\ORADATA\TEST\MAGGIE_DATA1.DBF27207207995
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.DBF27259134244
14 F:\ORACLE\ORADATA\TEST\MAGGIE_DATA1.DBF27207207995
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.DBF27259134244
14 F:\ORACLE\ORADATA\TEST\MAGGIE_DATA1.DBF27207207995
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/804471/viewspace-690406/ ,如需转载,请注明出处,否则将追究法律责任。