ORA-01654_TableSpace空间不足问题处理

Posted 星火燎原

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA-01654_TableSpace空间不足问题处理相关的知识,希望对你有一定的参考价值。

操作环境:Windows Server 2008 R2,32位Oracle11g R2。

导入大批量数据时报如下错误信息:

image

ORA-01654: 索引IOT.IDX_IOT_EQUIP_ID无法通过1024(在表空间USERS中)扩展

百度发现出现这种情况的可能是表空间不足,通过如下SQL统计表空间使用情况,发现确实空间剩余不多。

-- 查看所有表空间的数据使用情况
SELECT Upper(F.TABLESPACE_NAME)         "表空间名",
       D.TOT_GROOTTE_MB                 "表空间大小(M)",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
       To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), \'990.99\')
       || \'%\'                           "使用比",
       F.TOTAL_BYTES                    "空闲空间(M)",
       F.MAX_BYTES                      "最大块(M)"
FROM   (SELECT TABLESPACE_NAME,
               Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,
               Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES
        FROM   SYS.DBA_FREE_SPACE
        GROUP  BY TABLESPACE_NAME) F,
       (SELECT DD.TABLESPACE_NAME,
               Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB
        FROM   SYS.DBA_DATA_FILES DD
        GROUP  BY DD.TABLESPACE_NAME) D
WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER  BY 1
image

image

目前所有的表都放在了USERS表空间中,已经扩展到了32GB,目前使用了99.98%,剩余8M。空间确实不足,需要进行扩展。

 

通过如下SQL扩展表空间大小

alter database datafile \'D:\\app\\Administrator\\oradata\\orcl\\USERS01.DBF\' resize 51200M

发现又报了另外一个错误:

image

百度发现默认表空间数据文件大小根据DATA BLOCKS的大小有关,默认最大为32GB,目前USERS表空间对应的数据文件USERS01.DBF已经达到了32个GB,无法再进行扩展了。

解决办法是增加表空间数据文件。

 

通过如下SQL增加表空间数据文件

alter tablespace USERS add datafile \'D:\\app\\Administrator\\oradata\\orcl\\USERS02.DBF\' size 10240M;

以上SQL语句为USERS表空间创建了一个名称为USERS02.DBF的数据文件,该数据文件默认大小为10GB。

image

此时,USERS表空间有了两个数据文件。

再次执行表空间使用情况SQL语句,查看表空间使用情况。

image

以上是关于ORA-01654_TableSpace空间不足问题处理的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01654 索引 无法通过 表空间扩展

ORA-01654: 索引 BHGX.IX_JJ_XMFY_JSD 无法通过 1024 (在表空间 USERS 中) 扩展

oracle 12c数据库报ORA-01654错的问题处理

Oracle表空间不足处理

Oracle 表空间不足引起的问题及解决方法

oracle -- 表空间(tablespace)