ORA-01650

【字号: 日期:2024-01-08浏览:67作者:雯心
数据库很多表频繁报错 ora-01688 ORA-01650 等错误ORA-01650: unable to extend rollback segment %s by %s in tablespace %s;;; Cause: Failed to allocate extent for the rollback segment in tablespace.;;Action: Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified tablespace. 从原因上看 unable to extend 是因为没有邻近的空间可以去扩展报错的是motorola表空间首先!我的所有表的next 都是1m pctincrease 0 所以我就先去查motorola 所在表空间最大的邻近空间SQL>SELECT; max(bytes);;;;;FROM;dba_free_space;;;;;WHEREtablespace_name = 'MOTOROLA';MAX(BYTES)----------2126503936这个结果明显比表的设置 next extent= 1024k 要大那我们看看RPT_MOT_CELL_PER的参数SELECT next_extent, pct_increase, tablespace_name;FROMdba_tab_partitions;;;;WHERE; partition_name='P9' AND table_owner = 'MOT_NMC' AND TABLE_NAME='RPT_MOT_CELL_PER';NEXT_EXTENT PCT_INCREASE----------- ------------TABLESPACE_NAME------------------------------------------------------------ 1048576;0MOTOROLAmetalink上提供了解决方法:1.ALTER TABLESPACE motorola COALESCE;The extents must be adjacent to each other for this to work我用了!没有用2 add datafile 或者 resize 这个明显是有效果的!后来我加了数据文件以后也是有效果的!3.修改next 这个也是有效的后来我发现我的思路有问题了早最大的extent 并没有用!SELECT count(*);;FROM;dba_free_space;;;;;WHEREtablespace_name = 'MOTOROLA';————————47212SELECT count(*);;FROM;dba_free_space;;;;;WHEREtablespace_name = 'MOTOROLA'and bytes<1048576;————————47208大部分extent都是小与1m的所以不能分配 Oracle不会去找最大!
相关文章: