oracle 表空间不足解决办法
oracle表空间不足,一般有两个原因:一,原表空间太小,没有自增长;二,表空间已自增长,而且表空间也已足够大,对于这两种原因分别有各自的解决办法。
最近服务器数据库报ora-01653错误,无法创建新表,有些表插入数据有问题,有些表先删后插的可以
之前已经做了表空间的自动增长,怀疑是表空间文件超过32G(window服务器环境下,oracle数据文件最大32G),经查询果真如此,于是增加一个新的表空间文件,直接设置为32G大小,其实也可以设置较小的值,然后再设为自动增长即可
以下是网上搜的解决方案和检查办法
--1、查看表空间USERS使用情况SELECT T.TABLESPACE_NAME,D.FILE_NAME,D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUSFROM DBA_TABLESPACES T,DBA_DATA_FILES DWHERE T.TABLESPACE_NAME =D.TABLESPACE_NAME and T.TABLESPACE_NAME='USERS'ORDER BY TABLESPACE_NAME,FILE_NAME;--2、修改表空间为自动增长ALTER DATABASE DATAFILE 'D:\oradata\orcl\USERS01.DBF' AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED--3、自动增长还是不行,可能是数据库文件满了【注意:DBF文件在windows平台32g就不能用了】,就增加几个数据库文件 ALTER TABLESPACE USERS ADD DATAFILE 'D:\oradata\orcl\USERS02.DBF' SIZE 1G AUTOEXTEND ON NEXT 1G MAXSIZE 30g;
-- 查看所有表空间的数据使用情况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_BYTESFROM SYS.DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MBFROM SYS.DBA_DATA_FILES DDGROUP BY DD.TABLESPACE_NAME) DWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAMEORDER BY 1
如果觉得《oracle 表空间不足解决办法》对你有帮助,请点赞、收藏,并留下你的观点哦!