您在这里:首页 > 学员专区 > 技术文章
Oracle视频
Oracle
CUUG课程

管理表空间(七)--表空间与数据文件脱机的区别

 

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

相关文章 [上一篇] 管理表空间(六)--改变表空间状态
010-88589926(88587026)
CUUG热门培训课程
Oracle DBA就业培训
CUUG名师
网络课程
技术沙龙
最新动态

总机:(010)-88589926,88589826,88587026 QQ讨论群:243729577 182441349 邮箱:cuug_bj@cuug.com
通信地址:北京市海淀区紫竹院路98号北京化工大学科技园609室(CUUG)邮政编码:100089 
中国UNIX用户协会 Copyright 2010  ALL Rights Reserved 北京神脑资讯技术有限公司
京ICP备11008061号  京公网安备110108006275号