对一个datafile执行offline和offline drop的区别 (25535 Bytes) ? Focus on Oracle
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的,只是里面的数据可能会不一致。
阅读(4489) | 评论(0) | 转发(0) |