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永久/临时表空间无法扩展的错误

通常是由于表空间数据文件没有自动扩展或者达到最大限制大小导致的。 --永久表空间 --创建永久表空间 SQL> create tablespace ymh datafile 'd:/ymh.db...

表空间_临时表空间引起的错误:ora-01652 小例

原创作品,出自 “深蓝的blog” 博客,深蓝的blog: 报临时表空间不足错误:ora-01652 在进行insert操作的时候,遇到报错如下:提示临时表空间不足问题。 错误信息如下: 查看临时...

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

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

ORA-01652: 多个外部数据表(Oracle调MSSS)连接方式不当,造成临时空间不足

今天测试SO导GL一直不顺,直接原因是: ORA-01652: 无法通过 16 (在表空间 TEMP1 中) 扩展 temp 段   说是临时表空间不足,但是这里数据并不多,理不应该占用太多空间...

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

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

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

原因:临时表空间不够用了 解决办法: 1.找到提示错误的这张临时表空间select * from dba_temp_files;例如我的就是TS_TEMP出问题了2.把出问题的临时表地址复制下来,...

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

昨天开发人员跟我说,执行一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种...

ORA-01033ORACLE错误解决

  • 2013年03月28日 15:00
  • 1KB
  • 下载

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

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

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

解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程 来源:http://www.cnblogs.com/rootq/archive/2009/02/05/1384539....
  • ytfy12
  • ytfy12
  • 2013年06月20日 18:00
  • 2718
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORACLE ORA-01652 错误解决
举报原因:
原因补充:

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