ORACLE ORA-1652的解决方法
前言:在检查数据库的alert日志,发现数据库报了ORA-1652: unable to extend temp segment的错误,以下记录的是整个处理过程:
1、检查当前数据库的表空间的大小,脚本如下
select file_name,file_id,bytes/1024/1024,status,autoextensible TABLESPACE_NAME from DBA_TEMP_FILES;
2、当前数据库的temp表空间已经设置32GB了,一般情况下如果临时表空间在20GB左右就够了(需要根据数据库的表数量级作为判断标准)
根据对系统的了解,初步判断这个增长明显是异常行为;
(如果表空间太小的话,可以通过语句增加:ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp02.dbf' SIZE 10240M AUTOEXTEND OFF;)
3、因为每次报错都是在凌晨,所以不可能不睡觉一直跟踪临时表空间的使用情况,还好可以使用Oracle诊断事件跟踪ORA-1652事件,该诊断事件对系统的性能影响很小,因为只有在发生这个错误的时候,系统才会写入信息到alert日志中;
跟踪的级别分为三个等级:
- 在session级别启用数据库的跟踪:ALTER SESSION SET EVENTS '1652 trace name errorstack';
- 在系统级别启用数据库的跟踪:ALTER SYSTEM SET EVENTS '1652 trace name errorstack';
- 把该参数写入到spfile文件中: ALTER SYSTEM SET EVENT = '1652 trace name errorstack' SCOPE = SPFILE;
(关于参数的详细设置,也整理了一个文档,可以在博客中搜索)
对应的关闭脚本如下:
- ALTER SESSION SET EVENTS '1652 trace name context off';
- ALTER SYSTEM SET EVENTS '1652 trace name context off';
- ALTER SYSTEM RESET EVENT SCOPE = SPFILE SID = '*';
4、第二天的时候,果然又报错了,详细的报错信息如下:
ORA-1652: unable to extend temp segment by 128 in tablespace TEMP
Errors in file '/u01/app/oracle/diag/rdbms/orcl/ORCL/trace/orcl_m000_15204728.trc:
打开相应的报错信息如下:
*** 2015-02-04 00:12:07.836 |
经过以上跟踪,终于知道了导致临时表空间耗光的罪魁祸首的原因,接下来是对语句进行分析;
5、另外需要注意的是,以上的跟踪出来的情况并不一定是主要原因,可能是压垮骆驼的最后一根稻草,因为前面有一条语句用了95%的TEMP表空间,紧接着又有一条语句用了6%的TEMP表空间,这个时候系统会记录第二条语句。但是真正的原因是前面那条使用了95%TEMP的表空间的语句;
在正常的情况下,可以监控表空间里面的内容的占用情况,也能分析出问题的原因,脚本如下:
SELECT S.sid || ',' || S.serial# sid_serial, S.username, T.blocks * TBS.block_size / 1024 / 1024 mb_used, T.tablespace, T.sqladdr address, Q.hash_value, Q.sql_text FROM v$sort_usage T, v$session S, v$sqlarea Q, dba_tablespaces TBS WHERE T.session_addr = S.saddr AND T.sqladdr = Q.address(+) AND T.tablespace = TBS.tablespace_name ORDER BY S.sid; ![]() |
可以发现SID/SERIAL为5/1273的SESSION消耗了大量的temp表空间;
6、以上提供了整个问题的解决方法,建议大家动手试下,实验的步骤如下:
a、创建一个大表;
b、进行索引的创建;
c、诊断事件跟踪ORA-1652事件的开启;
d、再次创建索引;
e、检查报警日志;
总结:学习就是不断实验和总结的一个过程,每次动手解决记录问题的过程总是乐趣无穷;
......................................................................................................................................................................………………………………………
本文作者:JOHN,某上市公司DBA,业余时间专注于数据库的技术管理,从管理的角度去运用技术。
ORACLE技术博客:ORACLE 猎人笔记 数据库技术群:367875324 (请备注ORACLE管理 )
ORACLE ORA-1652的解决方法的更多相关文章
- Oracle OCI-22053:溢出错误解决方法
原文 Oracle OCI-22053:溢出错误解决方法 Oracle 数值数据类型最多可存储 38 个字节的精度.当将 Oracle 数值转换为公共语言运行库数据类型时,小数点后边的位数可能过多,这 ...
- 经历:asp.net oracle 部署问题以及解决方法
原文:[原创]经历:asp.net oracle 部署问题以及解决方法 精简的美丽...... 一.环境 开发环境 win7 64bit Vs2010 ...
- Asp.Net 应用程序在IIS发布后无法连接oracle数据库问题的解决方法
asp.net程序编写完成后,发布到IIS,经常出现的一个问题是连接不上Oracle数据库,具体表现为Oracle的本地NET服务配置成功:用 pl/sql 等工具也可以连接上数据库,但是通过浏览器中 ...
- Oracle数据库TNS错误解决方法
ORA-12154: TNS:could not resolve the connect identifier specified ,即无法解析指定的连接 标识符.这说明缺少了一个环境变量,TNS_A ...
- Oracle用户被锁定解决方法
解决方法: 1.用dba角色登陆:2.输入下面格式命令解锁: alter user 用户名 account unlock;3.如果密码忘记了,输入下面格式命令修改密码: alter user 用户名 ...
- oracle ORA-00119和ORA-00132解决方法
ORA-00119 ORA-00132解决方法. 思路:*.local_listener错误导致.要*.local_listener就要修改spfile文件,因为oracle默认是以spfile文件启 ...
- plsql developer字符集和oracle字符集不一致的解决方法(转)
如果oracle安装选择的字符集与PLSQL Developer的字符集不同,则打开 PLSQL Developer时会提示字符不一致可能造成问题: 定位到注册表的以下位置: HKEY_LOCAL_M ...
- PLSQL Developer不支持Oracle 64位客户端解决方法
问题描述: 在虚拟机同网段,搭建Oracle 11.2.04数据库64位的,本机操作系统Win10 x64和PLSQL 9.03,目前想利用PLSQL远程登录ORACLE数据库操作.当初用 insta ...
- [原创]经历:asp.net oracle 部署问题以及解决方法
精简的美丽...... 一.环境 开发环境 win7 64bit Vs2010 Oracle 11g r2 64bit <inst ...
- oracle 提示口令失效解决方法
Oracle错误代码:ORA-28002. 受影响版本:Oracle11g以上版本. 导致密码消失的原因:Oracle 11g中默认的DEFAULT概要文件中口令有效期PASSWORD_LIFE_TI ...
随机推荐
- ES6变量的解构赋值(一)数组的解构赋值
let[a,...arr]=[1,2,3,4];//a==>1 arr==>[2,3,4] let [x, y, ...z] = ['a'];//a==>'a' y==>und ...
- iOS中数组的倒序、升序、降序
NSMutableArray *array = [NSMutableArray arrayWithObjects:",nil]; // 倒序 NSMutableArray *resultAr ...
- java的异常抛出throws和throw的简单使用
前提: 当在程序测试时,如果你需要定义一个自己的异常,而非现在已经存在的异常,这个时候你需要用到throws和throw,try-catch只是一个简单的捕获异常的过程. 代码如下: package ...
- innodb存储引擎监控
innodb存储引擎监控分为四种,表监控,表空间监控,锁监控,状态监控.可以在mysql客户端开启监控选项,然后信息将会输出在mysql的错误日志内.innodb_monitor和innodb_loc ...
- RAC_多路径配置
多路径配置 http://blog.itpub.net/31397003/viewspace-2143390/ 挂盘/配置好yum源 2.程序包的安装 device-mapper-1.02.95-2. ...
- Octave绘图数据
t = [0:0.01:0.98] :设置一个步长为0.01的矩阵 y1 = sin(2*pi*4*t) :设置一个sin函数 plot(t,y1) :绘制出以 t 为横轴 以 y1为纵轴的图 ...
- Vue你不知到的$this.emit()的用法
需求 需求:除了拿到false,还要拿到v-for中的index 如何解决:再使用一次父传子,:a="index" 将下标值传递给子组件 注意要加引号 <expert ...
- 移动端px自动转化为rem
注:不转换的px用大写PX代替 lib-flexible 作用:让网页根据设备dpr和宽度,利用viewport和html根元素的font-size配合rem来适配不同尺寸的移动端设备 安装:cnpm ...
- 给那些迷茫的人学习JAVA的一些建议?
前语:我用了3年的时间,一步一步走到了现在,半途也有了解过其他的技能,也想过要转其他的言语,可是最终仍是坚持下来走Java这条路,希望我的经历能够帮忙到后来的人,要是觉得对你有帮忙的话,能够注重一下和 ...
- 这样修改有哪些优缺点 wcf service via attribute setting vs config
客户要恢复数据,结果就是block在某个阶段,在server端log一圈下来,发现原来是client端出了问题,就是这个log: ERROR - Identity check failed for o ...