oracle解决表空间不足问题

ORA-00604: 递归sql级别1出现错误

ORA-01654:索引SYS.I_COL1 无法通过 128 (在表空间SYSTEM中) 扩展

 

这种情况是表空间不够需要查看表空间的容量,和表空间所对应的数据文件

连上数据查看表空间情况:

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 4 DESC;

oracle解决表空间不足问题_第1张图片

oracle解决表空间不足问题_第2张图片

 

通过这条sql可以看出SYSTEM表空间已经使用了99.98,表空间不够了

SYSTEM表空间不足
查看表空间文件名称和是否自动增长
SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;

oracle解决表空间不足问题_第3张图片

 

增加表空间大小
alter database datafile '/opt/app/oracle/oradata/oradb/system01.dbf' resize 64000m;

同样也报错

 

然后我选择在原路径上新建一个数据文件

新增数据文件,并且允许数据文件自动增长
ALTER TABLESPACE app_data ADD DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP04.DBF' SIZE 50M
AUTOEXTEND(自动扩展) ON NEXT 5M MAXSIZE 100M(unlinited无限制);

 

之后发现还是报错,然后我就去看了lunix磁盘情况

然后发现u01磁盘满了.最后数据文件在data目录下新建了一个,就解决了这个问题(希望对大家有帮助吧)

注:

表空间在初始建立的时候最好设置成自动扩展的,如果没有设置成zhi扩展的,则有四种方法可以增加表空间的大小,其中增加数据文件是经常用的一种。四种方法如下:

①:给表空间增加数据文件
ALTER TABLESPACE app_data ADD DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF' SIZE 50M;

②:新增数据文件,并且允许数据文件自动增长
ALTER TABLESPACE app_data ADD DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP04.DBF' SIZE 50M
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

③:允许已存在的数据文件自动增长
ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF'
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

④:手工改变已存在数据文件的大小
ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP02.DBF'
RESIZE 100M;

注:查询临时表空间:select name,status from v$tempfile;

你可能感兴趣的:(oracle解决表空间不足问题)