日期:2014-05-16  浏览次数:20492 次

(转)table space和data file的offline

1、对一个datafile执行offline或offline drop本质上是一回事,但对一个datafile执行offline只能在归档模式下;而对一个datafile执行offline drop则既可以在归档模式也可以在非归档模式下;

?

2、对一个datafile无论是执行offline还是offline drop,都是只改写了control文件,不会更新file$和ts$,这就是为什么可以在mount状态下对某个datafile执行offline/offline drop的本质原因;

?

3、只有当对datafile所在的表空间执行offline normal的时候,才会既改写control文件,又更新ts$和seg$,oracle这里会把ts$的online$字段的值由1改为2,但依然不会去更新file$;

?

4、只有当对datafile所在的表空间执行drop操作的时候,oracle才会去更新ts$和file$,oracle这里会把ts$的online$字段的值由1改为3,会把file$的status$字段由2改为1;

注意,无论是file$的file#还是ts$的ts#,它们都是连续的!并且oracle会重用file$的file#,但是不会重用ts$里的ts#,这本质上是因为ts$里会记录tablespace的名字,而file$里并没有记录datafile的名字,所以file$里的记录可以重用而ts$则不能

?

5、只要你对一个datafile执行了offline或者offline drop操作,则oracle在open的时候就不会去存储上(无论是文件系统、裸设备还是ASM)校验这个文件了,所以即使这个文件已经在存储上被删掉了,此时库依然可以open。

?

6、无论你是在归档模式还是在非归档模式,且无论你对某个datafile是执行了offline还是offline drop操作,只要归档日志还在(对应于归档模式)或者相关的online redo log没有被logfile switch覆盖(对应于非归档模式),则这个datafile始终是可以online的,里面的数据都还在。当然,即使归档日志不在了,online redo log被logfile switch覆盖了,这个datafile也是可以online的,只是里面的数据可能会不一致。
?
?
一.DataFile脱机或联机的两种方法:

????? 1、在ARCHIVRLOG模式下的更改DataFile状态

ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf' ONLINE;

2、在NOARCHIVELOG模式下使DataFile脱机(意味着数据丢失,必须加drop)

?ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/users3.dbf' OFFLINE DROP;


二.表空间与数据文件 脱机的区别

1. ALTER TABLESPACE ... OFFLINE(Does a checkpoint on the datafiles )
?
Takes the datafiles offline
表空间Offline时,数据文件的SCN会被冻结,而且表空间的数据文件offline/online时又会发生文件检查点,使单个数据文件SCN和数据库其他问题不一致。
表空间online时,Oracle会取得当前SCN,解冻offline文件SCN,和当前SCN同步;tablespace offline有几种选项可供选择normal, temporary,immediate

2. ALTER DATABASE DATAFILE ... OFFLINE

单纯的offline datafile,将不会触发文件检查点,只有针对offline tablespace的时候才会触发文件检查点,这也是为什么online datafile需要media recovery而online tablespace不需要。

?

?

?

?

There is a big difference between:
Taking the tablespace offline and Taking the datafiles offline

ALTER TABLESPACE ... OFFLINE
Does a checkpoint on the datafiles?
Takes the datafiles offline


ALTER DATABASE DATAFILE ... OFFLINE
Does not perform. a checkpoint,
So that if the database is open, you may need to perform. media recovery when bringing it online.

That is the reason why:

You cannot do 'alter database datafile ... offline' if you are in noarchivelog (but tablespace offline works)?

You cannot do 'alter tablespace ... offline' if database is read-only (but datafile offline works)