1、数据库正常运行中,所有数据文件的SCN都是一致的吗? 2、将一数据文件offline后,再将其online时,这个数据文件的SCN会前提吗?假如是,前提到的SCN是怎么确定的? 1.数据库正常运行时,所有数据文件的SCN不一定一致。
问题在这个所有上,比如Offline表空间,数据文件的SCN会被冻结,而且表空间的数据文件offline/online时又会发生文件检查点,使单个数据文件SCN和数据库其他问题不一致。 2.表空间online时,Oracle会取得当前SCN,解冻offline文件SCN,和当前SCN同步。 简单的实验就可以清楚地看到这些变化: SQL> set echo on SQL> @a SQL> alter system checkpoint; System altered. SQL> select file#,checkpoint_change# from v$datafile; FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 546198149 2 546198149 3 546198149 SQL> select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER ------------------------ 546198149 SQL> alter tablespace users offline; Tablespace altered. SQL> select file#,checkpoint_change# from v$datafile; FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 546198149 2 546198149 3 546198153 SQL> select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER ------------------------ 546198159 SQL> alter tablespace users online; Tablespace altered. SQL> select file#,checkpoint_change# from v$datafile; FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 546198149 2 546198149 3 546198162 SQL> SQL> select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER ------------------------ 546198178 假如是单纯的offline datafile,那么将不会触发文件检查点,只有针对offline tablespace的时候才会触发文件检查点,这也是为什么online datafile需要media recovery而online tablespace不需要。 实验结果是最好的明证。
|