日期:2014-05-17  浏览次数:20728 次

创建表空间时用了nologing选项,为什么还可以recover?
大家好:
      我在创建表空间时使用了nologing选项,也就是不记录重做日志:
create tablespace user05 nologging datafile '/ora01/oracle/oradata/demo/user_05.dbf' size 1m;
做实验,然后关闭数据库,删除 user_05.dbf 数据文件:
shutdown immediate;
rm -f /ora01/oracle/oradata/demo/user_05.dbf
,再startup启动数据库报错,报找不到user_05.dbf 数据文件,之后,我执行
alter database create datafile '/ora01/oracle/oradata/demo/user_05.dbf'
重新创建数据文件,
然后再执行 recover datafile '/ora01/oracle/oradata/demo/user_05.dbf';
居然可以成功,然后可以正常打开数据库,正常使用该 表空间数据文件。
想问一下,我创建表空间时,使用了nologging,为何使用 recover datafile '/ora01/oracle/oradata/demo/user_05.dbf';
命令应用重做日志会成功呢?
创建表空间时,使用了nologging选项,不是不记录记录重做日志的吗?
为什么还可以应用日志恢复该数据文件的呢?
待复,感谢!
oracle nologging recover

------解决方案--------------------
不是说recover不行,是recover 之后,可能出现block是坏块,无法正常使用
------解决方案--------------------
nologging 不影响正常的数据库操作的日志生成,只影响所谓的 bulk operation,比如 direct path 的 sql loader 等等。
------解决方案--------------------
TOM:
and we said...

The NOLOGGING option on the CREATE table only affects the actual operation of the CREATE 
TABLE itself. All subsequent operations are logged as normal. 

以上是Tom大神的原文