分析:
1. 查询表空间剩余字节大小
SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 AS FREE SPACE(M)
FROM DBA_FREE_SPACE
WHERE TABLESPACE_NAME = '&tablespace_name'
GROUP BY TABLESPACE_NAME
注:如果是临时表空间,请查询DBA_TEMP_FREE_SPACE
SELECT TABLESPACE_NAME, FREE_SPACE/1024/1024 AS FREE SPACE(M)
FROM DBA_TEMP_FREE_SPACE
WHERE TABLESPACE_NAME = '&tablespace_name'
2. 如果不知道表空间数据文件目录规划,可以先查询出表空间所有数据文件
SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS BYTES(M)
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = '&tablespace_name'
注:如果是临时表空间,请查询DBA_TEMP_FILES
SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS SPACE(M)
FROM DBA_TEMP_FILES
WHERE TABLESPACE_NAME = '&tablespace_name'
3. 为空间不足的表空间增加数据文件
ALTER TABLESPACE &tablespace_name ADD DATAFILE '&datafile_name' SIZE 2G
注:如果要为临时表空间扩容,使用下面的语句
方法一:修改表空间的大小:alter database datafile '数据文件的路径和名称' resize 300m方法二:如果你建立的表空间里面还没有放很多数据的话,建议你直接将这个表空间删掉,重新建立一个,给它分配足够大的空间,如10G;这样比方法一好。
我刚开始接触的时候也是遇到了你这个问题,用方法一也没有实现我要的效果,还总是提示我磁盘空间不足,后来干脆删掉,重新来过。这些东西很细,很烦人,要细心一点。希望对你有帮助。
一:首先查看temp是不是某些用户的默认表空间SELECT USERNAME,TEMPORARY_TABLESPACE FROM DBA_USERS
二:如果有用户的默认临时表空间是temp的话,建议进行更改
alter user xxx temporary tablespace tempdefault
三:设置tempdefault为默认临时表空间
alter database default temporary tablespace tempdefault
四:然后用你列出来的语句删除即可
drop tablespace temp including contents and datafile
备注:临时的表空间如果在用的话,那么就得先把相应的用户切换掉,之后在删除,要不下次这个用户登录会出问题的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)