一般,归档下offline tablespace有3种方式:normal(默认),immediate,temporary
Normal会对该表空间所有文件执行检查点,会将对应的db_buffer中的脏数据写到数据文件中,online时不需要recover,只需要将当前的scn写到数据文件头即可;
Immediate 不会对该表空间执行检查点,立即脱机,不会转储任何脏数据。所以online的时候需要应用日志做recover。只有文件受到损坏以至没法完成检查点时,通常才这么做;
Temporary 介于normal跟immediate之间,能执行检查点的执行检查点,不能执行检查点的(如文件损坏)就立即脱机,当然online时也相应的需要恢复。
数据文件的offline相当于immediate方式,不写检查点,但online时需要recover
archive mode
1. tablespace offline: normal(默认)
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
493517
SQL> select FILE#,NAME,STATUS,CHECKPOINT_CHANGE# from v$datafile;
6 rows selected.
SQL> select FILE#,NAME,STATUS,CHECKPOINT_CHANGE# from v$datafile;
FILE# NAME STATUS CHECKPOINT_CHANGE#
---------- ---------------------------------------- ------- ------------------
1 C:\ORACLE\ORADATA\RC\SYSTEM01.DBF SYSTEM 493334
2 C:\ORACLE\ORADATA\RC\UNDOTBS01.DBF ONLINE 493334
3 C:\ORACLE\ORADATA\RC\SYSAUX01.DBF ONLINE 493334
4 C:\ORACLE\ORADATA\RC\USERS01.DBF ONLINE 493334
5 C:\ORACLE\ORADATA\RC\CQF01.DBF ONLINE 493334
6 C:\ORACLE\ORADATA\RC\CQF02.DBF ONLINE 493334
6 rows selected.
SQL> alter tablespace cqf offline normal;
Tablespace altered.
SQL> select FILE#,NAME,STATUS,CHECKPOINT_CHANGE# from v$datafile;
FILE# NAME STATUS CHECKPOINT_CHANGE#
---------- ---------------------------------------- ------- ------------------
1 C:\ORACLE\ORADATA\RC\SYSTEM01.DBF SYSTEM 493334
2 C:\ORACLE\ORADATA\RC\UNDOTBS01.DBF ONLINE 493334
3 C:\ORACLE\ORADATA\RC\SYSAUX01.DBF ONLINE 493334
4 C:\ORACLE\ORADATA\RC\USERS01.DBF ONLINE 493334
5 C:\ORACLE\ORADATA\RC\CQF01.DBF OFFLINE 493550
6 C:\ORACLE\ORADATA\RC\CQF02.DBF OFFLINE 493550
6 rows selected.
SQL> alter tablespace cqf online;
Tablespace altered.
SQL> select FILE#,NAME,STATUS,CHECKPOINT_CHANGE# from v$datafile;
FILE# NAME STATUS CHECKPOINT_CHANGE#
---------- ---------------------------------------- ------- ------------------
1 C:\ORACLE\ORADATA\RC\SYSTEM01.DBF SYSTEM 493334
2 C:\ORACLE\ORADATA\RC\UNDOTBS01.DBF ONLINE 493334
3 C:\ORACLE\ORADATA\RC\SYSAUX01.DBF ONLINE 493334
4 C:\ORACLE\ORADATA\RC\USERS01.DBF ONLINE 493334
5 C:\ORACLE\ORADATA\RC\CQF01.DBF ONLINE 493623
6 C:\ORACLE\ORADATA\RC\CQF02.DBF ONLINE 493623
6 rows selected.
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
493647
2. tablespace offline: immediate
SQL> alter tablespace cqf offline immediate;
Tablespace altered.
SQL> select FILE#,NAME,STATUS,CHECKPOINT_CHANGE# from v$datafile;
FILE# N