如何为ORACLE表空间或临时表空间增加数据文件

如何为ORACLE表空间或临时表空间增加数据文件,第1张

当通过ORACLE中的create table ... as select 语句创建一张新表时,新表的数据量为比较大,如10亿,这时SQL*Plus很可能就会提示“ORA-01653: ...”错误信息。这个错误信息暗示表空间大小不够,需要为表空间增加数据文件

分析:

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

备注:临时的表空间如果在用的话,那么就得先把相应的用户切换掉,之后在删除,要不下次这个用户登录会出问题的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11796800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存