ORACLE 修改分区表存储参数freelists后偶然性丢失数据


环境:

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,如需转载请自行联系原作者

上一篇:如何在 Ubuntu 启用 Radeon 开源驱动的 UVD 硬件解码


下一篇:Java数据结构和算法——汉诺塔问题