Oracle ORA-01653 表空间不足

ORA-01653: unable to extend table JC1106.T_GL_ASSISTBALANCE by 1024 in tablespace EAS_D_JC1106_STANDARD

解决方法:设置该表空间为自动扩展,或对该表空间增加数据文件

查看表空间是否已经不足,sql脚本,直接复制粘贴即可。

select max1.tablespace_name, Total_MB,MB_used ,MB_free,trunc(pct) "UsedPercent%",maxbytes as " MaxMBytes" ,pct_warn ,round(100*MB_used/maxbytes,4) as "growupPercent",
 (case   when ((MB_used/maxbytes)>0.9) then 'Almost Full'      else 'Will Auto Increase' end ) tablespaceIncrStat
from (select T.TABLESPACE_NAME as  tablespace_name,
sum(decode(d.MAXBYTES,0,d.bytes,d.maxbytes)/1024/1024) as maxbytes 
 from dba_tablespaces t, dba_data_files d where t.TABLESPACE_NAME=d.TABLESPACE_NAME group by T.TABLESPACE_NAME) max1,
 (select  tbs.tablespace_name,
        trunc(tot.bytes/1024/1024) Total_MB,
        trunc(tot.bytes/1024/1024-sum(nvl(fre.bytes,0))/1024/1024) MB_used,
        trunc(sum(nvl(fre.bytes,0))/1024/1024) MB_free,
        (1-sum(nvl(fre.bytes,0))/tot.bytes)*100 pct,
        decode(
            greatest((1-sum(nvl(fre.bytes,0))/tot.bytes)*100, 90),
            90, '', '*'
        ) pct_warn
from    dba_free_space fre,
        (select tablespace_name, sum(bytes) bytes
        from    dba_data_files
        group by tablespace_name) tot,
        dba_tablespaces tbs
where   tot.tablespace_name    = tbs.tablespace_name
and     fre.tablespace_name(+) = tbs.tablespace_name
group by tbs.tablespace_name, tot.bytes/1024/1024, tot.bytes) avail1 
where avail1.tablespace_name=max1.tablespace_name;

目的: 获取表空间不足的表空间名称。查看目前满了的表空间总大小多大?进而选择解决方案。如果小于30GB,可以resize的方法。如果已经30gb了,只能新增dbf文件了。详见下面的解决方法。

查看表空间是否已经开启自动递增

select tablespace_name,file_name,autoextensible from dba_data_files

查看表空间已经对应的数据文件位置

select tablespace_name, file_id,file_name, 
round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;

DataFile文件设定了大小,且设置不能自动增长

优先把数据文件改为自动增长

--把数据文件改为自动增长,而且每次增加100m最大值为4000m;
--也可以吧maxsize改为 MAXSIZE UNLIMIT,来设置最大值没有限制直到最大限制32g

alter database datafile '数据文件路径' autoextend on next 100m maxsize 4000M;

DataFile设定了大小,且设置为自动增长,已经到了32G的文件最大值上限

通过添加数据文件进行解决

Alter tablespace 表空间名称 add datafile 'datafile路径/新dbf名字' size 20480M autoextend on next 500M maxsize UNLIMITED;

解释:

  • (1)、表空间名称:写入报错的表空间名称
  • ( 2)、 ‘datafile路径/新dbf名字’ --存放数据库dbf文件的路径下,建个新的dbf,如已经存在的 /u01/app/oracle/oradata/user01.dbf,需要增加个新成员,新的路径就写成: /u01/app/oracle/oradata/user02.dbf
  • (3)、autoextend on next 500M maxsize UNLIMITED:下一次自动扩展500m,最大无-限制。
eg: 为user表空间增加新的dbf文件user02.dbf,大小20GB,下一次扩展500MB
alter tablespace USERS add datafile '/u01/app/oracle/oradata/user02.dbf  'size 20480M autoextend on next 500M maxsize UNLIMITED;

设置了自动增长但是磁盘空间不足

扩展磁盘空间,可以使用电脑自带的磁盘管理工具也可以使用第三方工具。

你可能感兴趣的:(数据库)