ORA-01652 unable to extend temp segment 扩容临时表空间

今天同事在oracle数据库执行sql语句时,出现表空间有关的报错。

 

 

从信息上来看,是表空间不足的提示。于是进行表空间有关的查询,并最后进行扩容临时表空间,解决报错。

以下是使用确认并执行过的sql语句。
 
--查看表空间
 select * from dba_tablespaces;
 select * from dba_temp_files;
 select * from v$tempfile
 
 --查看表空间组(可能没有)
select * from dba_tablespace_groups;
 
--查看所有表空间
SELECT A.tablespace_name tablespace,
          D.mb_total,
       SUM(A.used_blocks * D.block_size) / 1024 / 1024 mb_used,
       D.mb_total - SUM(A.used_blocks * D.block_size) / 1024 / 1024 mb_free
FROM v$sort_segment A,
            (SELECT B.name, C.block_size, SUM(C.bytes) / 1024 / 1024 mb_total
              FROM v$tablespace B, v$tempfile C
              WHERE B.ts# = C.ts#
              GROUP BY B.name, C.block_size) D
WHERE A.tablespace_name = D.name
GROUP by A.tablespace_name, D.mb_total;
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name
 
--查看临时表空间
SELECT A.tablespace_name tablespace,
          D.mb_total,
       SUM(A.used_blocks * D.block_size) / 1024 / 1024 mb_used,
       D.mb_total - SUM(A.used_blocks * D.block_size) / 1024 / 1024 mb_free
FROM v$sort_segment A,
            (SELECT B.name, C.block_size, SUM(C.bytes) / 1024 / 1024 mb_total
              FROM v$tablespace B, v$tempfile C
              WHERE B.ts# = C.ts#
              GROUP BY B.name, C.block_size) D
WHERE A.tablespace_name = D.name
GROUP by A.tablespace_name, D.mb_total;
 

 

 

--临时表空间对应文件查看
select FILE_NAME,TABLESPACE_NAME,BYTES,AUTOEXTENSIBLE,INCREMENT_BY from dba_temp_files;
 
这是扩容后的,扩容前没有109.dbf

扩容后的:

执行的操作如下:
 
--扩容表空间,新创建文件,并修改文件空间属性-自动扩展
 
alter tablespace FASTTEMP01 add tempfile '/data/oracle/oradata/fasttemp0109.dbf' size 32767M;
alter database tempfile '/data/oracle/oradata/fasttemp0109.dbf' autoextend on next 32767M;
 
扩展说明:
第一次执行sql语句时,需要扩容的表空间大小写的是32G,结果是报错,不能执行成功,后来改成32767M,就可以了。
基本原因如下:

 

 

 

 

posted @ 2020-08-18 22:08  MGMT_N5983  阅读(1141)  评论(0)    收藏  举报