环境:
ORACLE 9.2.0.8,AIX 5.3ML5 64bit;
表A是个分区表,共存储大约2千万条记录;表所在的表空间未启用ASSM,为Manual 模式;
场景说明:
由于对该表的操作非常频繁,出现在该表上的I/O等待;为了增强并发性,修改表的存储参数:
alter table A storage (freelists 10 );
修改后,在系统高峰时期,对该表的Insert操作会出现数据丢失。客户端执行Insert语句并commit成功,但实际数据并没有保存到的数据库中。
系统的Alert.log中并无任务警告或错误。
将freelists参数改为1后,症状消失。
原因:
search 了meatlink,没有相关症状的记录。
现在还不清楚这个现象是客户端bug导致还是数据库bug导致,但将存储参数改回原值之后,系统的确不再丢失数据。
经验:
高并发表建议使用ASSM+Manual的tablespace;
建表后,建议不要修改存储参数;表的存储参数最好在建表时指定;
指定合适的freelists参数对频繁操作的表的性能优化非常明显;
本文转自海天一鸥博客园博客,原文链接:http://www.cnblogs.com/sgsoft/archive/2011/03/21/1989865.html,如需转载请自行联系原作者