1、表空间与数据文件脱机的区别
对表空间进行offline时,oracle针对这个表空间生成检查点,刷新表空间中数据文件的相关事务。更新数据文件头SCN,数据文件SCN,文件终止SCN达到一致状态。当表空间被再ONLINE时,oracle会捕捉online时刻的SCN,更新上面各个位置的SCN,当然文件结束SCN号会置为无穷大,将数据文件都打开。
对单个数据文件做offline时,此时不会针对数据文件生成检查点,所以数据文件的终止SCN为无穷大,处于不一致状态。在v$recover_file视图中可以看到数据文件需要recover。要想将数据文件online,必须先对文件执行recover操作,然后进行online操作。
对于非归档模式下进行数据文件offline操作只能使用带有drop子句的命令:alter database datafile 5 offline drop。他不会物理删除文件的。归档模式下进行数据文件offline操作可以使用以下两种命令:alter database datafile 5 offline 或 alter database datafile 5 offline drop。
另外对于offline的数据文件,正常重新启动是不能对他进行recover的,因为它的状态是offline,数据库启动时是不检查offline文件的SCN是否一致的。所以启动后你仍然可以在v$recover_file视图中看到他,需要手工对他进行recover才能恢复。如果应用的联机日志已经switch掉,则要从归档中进行恢复。对于非归档模式如果没有归档,那么文件就只能一直处于recover状态。
注意:只能在open状态进行表空间脱机。
2、举例说明
1)system表空间不能offline ,正在使用的undo 不能offline,默认temporary tablespace不能offline。
2)表空间脱机时会在tablespace上生成检查点,下次online 不需要做恢复操作。
3)datafile offline 不生成检查点,在online 需要做recover。
09:26:34 SQL> alter tablespace system offline;
alter tablespace system offline
*
ERROR at line 1:
ORA-01541: system tablespace cannot be brought offline; shut down if necessary
9:29:06 SQL> alter tablespace undo_tbs01 offline;
alter tablespace undo_tbs01 offline
*
ERROR at line 1:
ORA-30042: Cannot offline the undo tablespace
——datafile offline 不生成检查点,在online 需要做recover
09:29:15 SQL> alter tablespace test offline;
Tablespace altered.
09:29:20 SQL> alter tablespace test online;
Tablespace altered.
21:13:36 SQL> alter database datafile 2 offline;
Database altered.
21:15:02 SQL> select file#,name ,checkpoint_change# from v$datafile_header;
FILE# NAME                                               CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ------------------
1 /u01/app/oracle/oradata/prod/system01.dbf                     1624678
2 /u01/app/oracle/oradata/prod/users01.dbf                      1624804
3 /u01/app/oracle/oradata/prod/sysaux01.dbf                     1624678
4 /u01/app/oracle/oradata/prod/index01.dbf                      1624678
5 /u01/app/oracle/oradata/prod/example01.dbf                    1624678
6 /u01/app/oracle/oradata/prod/test01.dbf                       1624678
7 /u01/app/oracle/oradata/prod/undo_tbs01.dbf                   1624678
8 /u01/app/oracle/oradata/prod/test02.dbf                       1624678
9 /u01/app/oracle/oradata/prod/cuug01.dbf                       1624678
10 /u01/app/oracle/oradata/prod/lx01.dbf                         1624678
11 /u01/app/oracle/oradata/prod/perfstat01.dbf                   1624678
12 /u01/app/oracle/oradata/prod/lx02.dbf                         1624678
13 /u01/app/oracle/oradata/prod/lx03.dbf                         1624678
14 /u01/app/oracle/oradata/prod/rtbs01.dbf                       1624678
14 rows selected.
21:15:07 SQL> alter database datafile 2 online;
alter database datafile 2 recover datafile 2;  online
*
ERROR at line 1:
ORA-01113: file 2 needs media recovery
ORA-01110: data file 2: '/u01/app/oracle/oradata/prod/users01.dbf'
21:15:24 SQL>
Media recovery complete.
21:15:42 SQL> alter database datafile 2 online;
Database altered.
——offline immediate 立刻offline 不生成检查点,下次online需要recover
21:15:47 SQL> alter tablespace tests offline immediate;
Tablespace altered.
21:17:50 SQL> select file#,name ,checkpoint_change# from v$datafile_header;
FILE# NAME                                               CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ------------------
1 /u01/app/oracle/oradata/prod/system01.dbf                     1624678
2 /u01/app/oracle/oradata/prod/users01.dbf                      1624887
3 /u01/app/oracle/oradata/prod/sysaux01.dbf                     1624678
4 /u01/app/oracle/oradata/prod/index01.dbf                      1624678
5 /u01/app/oracle/oradata/prod/example01.dbf                    1624678
6 /u01/app/oracle/oradata/prod/test01.dbf                       1624678
7 /u01/app/oracle/oradata/prod/undo_tbs01.dbf                   1624678
8 /u01/app/oracle/oradata/prod/test02.dbf                       1624678
9 /u01/app/oracle/oradata/prod/cuug01.dbf                       1624678
10 /u01/app/oracle/oradata/prod/lx01.dbf                         1624678
11 /u01/app/oracle/oradata/prod/perfstat01.dbf                   1624678
12 /u01/app/oracle/oradata/prod/lx02.dbf                         1624678
13 /u01/app/oracle/oradata/prod/lx03.dbf                         1624678
14 /u01/app/oracle/oradata/prod/rtbs01.dbf                       1624678
14 rows selected.
21:17:54 SQL> alter tablespace tests online;
alter tablespace tests online
*
ERROR at line 1:
ORA-01113: file 6 needs media recovery
ORA-01110: data file 6: '/u01/app/oracle/oradata/prod/test01.dbf'
21:18:19 SQL> recover tablespace tests;
Media recovery complete.
21:18:27 SQL> alter tablespace tests online;
Tablespace altered.
21:18:32 SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /disk1/arch/prod
Oldest online log sequence     6
Next log sequence to archive   8
Current log sequence           8

CUUG

更多oracle视频教程请点击:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6