nologging 与append、rman

alter database no force logging;
alter table t nologging;
insert /*+ append */ into t select * from t2; --不写日志
merge /*+ append */ into .... ; --不写日志
create table t nologging as select * from t2; --不写日志
sqlldr 是指定direct=y --不写日志
 
update和delete都写日志
 
rman恢复时,nologging的不能恢复(确实存在没写日志的数据),查询报错:
select * from test_1223;
ERROR:
ORA-01578: ORACLE 数据块损坏 (文件号 4, 块号 31584)
ORA-01110: 数据文件 4: 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF'
ORA-26040: 数据块是使用 NOLOGGING 选项加载的
 
可以通过设置 10231事件的方法来导出正确的部分数据,并恢复表T

JASON@orcl>conn / as sysdba
已连接。
SYS@orcl> ALTER SYSTEM SET EVENTS '10231 trace name context forever,level 10' ;
系统已更改。

C:\Documents and Settings\Administrator>exp userid=jason/zja file=t.dmp tables=t
est_1223

直接插入会丢弃默认值,不维护索引,主键出错(有的帖子这样说的,count(*)结果异常)

没做测试,测试太麻烦!抄的别人的

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16572356/viewspace-721316/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16572356/viewspace-721316/

你可能感兴趣的:(nologging 与append、rman)