
我们这边有一套Oracle 11GR2数据库集群,表空间大概是400G,每次都是表空间使用到47%左右报错,
ORA-12801: error signaled in parallel query server P003, instance : (1)
ORA-01658: unable to create INITIAL extent for segment in tablespace XXXX,
非常奇怪,首先是权限肯定没有问题,
alter user userName quota unlimited on tablespace1 ;
grant dba to userName ;
只能是扩容解决,但这样非常浪费空间,而且没法触发报警,已知开发那边用的是sqlloader工具,有什么能解决的吗?

你这个问题比较奇怪:
MSCPDC - ODS Load Fails ORA-01658: Unable To Create Initial Extent For Segment (Doc ID 377391.1)
可能性:
1.有很多无效的索引占用了空间浪费了,建议删除重建失效的索引
Unusable indexes can also cause this issue
2.大概率,是不是表空间碎片比较严重,这种情况下就是建议对表空间里面的表mv到其它的表空间里面去。
建议表空间使用统一的extents



检查下v$asm_disk视图,特定情况下会出现单个磁盘free_mb过小的情况,asm没有触发rebalance特性,手动reblance下问题解决


就是表空间的碎片率太大了,你查下表空间是不是system还是uniform


检查下v$asm_disk视图,特定情况下会出现单个磁盘free_mb过小的情况,asm没有触发rebalance特性,手动reblance下问题解决


检查下v$asm_disk视图,特定情况下会出现单个磁盘free_mb过小的情况,asm没有触发rebalance特性,手动reblance下问题解决


比如表空间叫A,SQLLOADER处理的表叫B,A上只有B一个表?每次DROP掉B后,A的使用率是0?B表表结构能否贴出?SQLLOADER里是以append方式插入吗?既然每次到47%就报错,那么SQLLOADER时,会产生.dsc文件存储插入失败的记录吗?sqlloader有没有选项忽略错误以完成插入?我感觉,错在某条特殊记录上。


这个就是个问题,三块磁盘大小不一样,你的 1800 也只能用 100。ASM 可用率要看 USABLE_FILE_MB。生产环境建议磁盘大小一致,另外你表空间是自动扩展的吗?如果是自动扩展也有可能是没法自动扩展导致的。
OS_MB/1024 TOTAL_MB/1024 FREE_MB/1024 NAME
---------- ------------- ------------ ------------------------------
1800 1800 781.585938 DATA_0002
100 100 43.4150391 DATA_0000
100 100 43.4169922 DATA_0001


我直接设置的31G,没有设置自动扩展
TABLESPACE_NAME sum G used G free G used%
XXXXX 744 274 470 36.87


