海鸥航迹

学习之笔记,好文之收集。

导航

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参数对频繁操作的表的性能优化非常明显;

posted on 2011-03-21 08:08  海天一鸥  阅读(1102)  评论(1编辑  收藏  举报