ORACLE ORA-01652 错误解决

原创 2013年12月05日 09:45:25

现象:ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段

 

       一般情况下,在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段a的。但有些有侯我们则会遇到临时段没有被释放,TEMP表空间几乎满的状况,甚至是我们重启了数据库仍没有解决问题。下面我总结一下,给出几种处理方法。

 

  方法一、重启库

  库重启时,Smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的应用机会,不过这种方法还是很好用的。

 

  方法二、Metalink给出的一个方法

  修改一下TEMP表空间的storage参数,让Smon进程观注一下临时段,从而达到清理和TEMP表空间的目的。

  SQL>alter tablespace temp increase 1;

  SQL>alter tablespace temp increase 0;

 

  方法三、我常用的一个方法,具体内容如下:

  1、 使用如下语句a查看一下认谁在用临时段

  SELECT username,

  sid,

  serial#,

  sql_address,

  machine,

  program,

  tablespace,

  segtype,

  contents

  FROM v$session se,

  v$sort_usage su

  WHERE se.saddr=su.session_addr

  2、那些正在使用临时段的进程

  SQL>Alter system kill session 'sid,serial#';

  3、把TEMP表空间回缩一下

  SQL>Alter tablespace TEMP coalesce;

 

  方法四、使用诊断事件的一种方法,也是被我认为是“杀手锏”的一种方法

  1、 确定TEMP表空间的ts#

  SQL>select ts#, name from sys.ts$ ;

  TS# NAME

  -----------------------

  0 SYSYEM

  1 RBS

  2 USERS

  3* TEMP

  4 TOOLS

  5 INDX

  6 DRSYS

  2、 执行清理操作

  SQL>alter session set events 'immediate trace

  name DROP_SEGMENTS level 4' ;

  说明:

  temp表空间的TS# 为 3*, So TS#+ 1= 4

  其它:

  1、 出现如上问题的原因我认为可能是由于大的排序超出了TEMP表空间的空间允许范围引起的。也可能包含着其它的异常的因素。

  2、 观注TEMP等这些空间的状态是Dba日常职责之一,我们可以通过Toad、Object Browser等这些工具办到,也可以用如下的语句:

  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;

 

ORA-01652 无法通过128 (在表空间 TEMP中)扩展temp段 剖析解决

1,同事说执行sql报错同事在plsql里面执行sql报错,报错信息:ora-01652 无法通过128 (在表空间 TEMP中)扩展temp段,如下图所示:  2,查看报错sql语句Sql比较长,而...
  • mchdba
  • mchdba
  • 2016年06月15日 20:45
  • 21565

解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程

以下文章地址:http://www.cnblogs.com/rootq/archive/2009/02/05/1384539.html 解决ora-01652无法通过128(在temp表空间中)扩展t...
  • yongbuyanqi88888
  • yongbuyanqi88888
  • 2015年01月20日 10:02
  • 10796

ORA-01652的解决

ZZ:http://blog.csdn.net/firefox198647/article/details/5644644 建索引发生ora-01652无法通过128(在escalade表空间中)扩...
  • digu
  • digu
  • 2011年11月28日 15:05
  • 8954

解决ORA-01652(无法扩展表空间)问题

最近几天旧系统发现ORA-01652(unable to extend temp segment by num in tablespace name)的问题,在临时增加数据文件大小后没几天又出现,无赖...
  • wujunxiong
  • wujunxiong
  • 2015年02月01日 10:35
  • 1159

ora-01555处理

from:https://community.oracle.com/community/support/support-blogs/database-support-blog/blog/2015/12...
  • aoerqileng
  • aoerqileng
  • 2017年11月30日 15:42
  • 72

oracle临时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段

今天在查数据的时候报错  ORA-01652:无法通过16(在表空间temp1中)扩展 temp 字段 查看表空间使用明细 SELECT b.tablespac...
  • caixingyun
  • caixingyun
  • 2014年11月12日 11:23
  • 3209

ora-01652

建索引发生ora-01652无法通过128(在escalade表空间中)扩展temp段... 的错误,错误解决很简单,如下 1.查看 表空间使用率(包括临时表空间) select * from...
  • firefox198647
  • firefox198647
  • 2010年06月03日 14:04
  • 443

Oracle rebuild index 报 ORA-01652 解决办法

早上刚开QQ,群里的一朋友就说rebuild index 报ORA-01652错误。并且temporary tablespace 是足够大的。 rebuild 索引是6G,indextablespac...
  • tianlesoftware
  • tianlesoftware
  • 2011年08月03日 12:31
  • 6416

ora-01652无法通过128(在escalade表空间中)扩展temp段

ora-01652无法通过128(在escalade表空间中)扩展temp段, tablespace 的定义,以及如何扩展临时表空间...
  • Babyfatliang
  • Babyfatliang
  • 2017年05月03日 15:19
  • 331

ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段

昨天系统中提交审批流一直报“系统忙”,查看后台,发现是“ORA-01652:无法通过 128 (在表空间 TEMP中)扩展 temp段”,这个说明临时表空间不足。 既然是temp表空间有问题,那...
  • machinecat0898
  • machinecat0898
  • 2012年12月19日 14:34
  • 7318
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORACLE ORA-01652 错误解决
举报原因:
原因补充:

(最多只允许输入30个字)