首页 > 应用开发 > IT综合 > 如果有一天你收到了 snap too old 的错误
今天在itpub上看到有人发帖关于 收到snap too old 的话 你应该怎么办的讨论,有的人认为是一个老问题只要加大undo_tablespace的大小或是 增加undo_retention就ok了,但是有些时候往往我们在解决问题的时候这样做是远远不够的,今天我总结了一写碰到此类错误的方法
1,首先确定那两个参数的值被正确的设定。
2,你要确定你的问题是程序带来的还是你自己执行sql时带来的
如果是程序带来的问题,你可能就要和程序员好好谈谈了,可能是他们的sql语句抒写不当,要建议他们多commit几次,
如果是你写sql的问题,那你就自己看着办吧,这里不做讨论
因为原因太多了
3,了解一下这种问题开始出现的时间,其实也就是要你估计一下是要继续操作下去所用的时间比较长,还是果断的杀死进程所用的时间比较长
select * from DBA_HIST_TBSPC_SPACE_USAGE where tablespace_id IN (select TS# from v$TABLESPACE where NAME='your undotablespace name') order by rtime desc
4,具体问题具体分析,查看一下正在执行的sql语句是什么
select sid,username,st.sql_text from v$transaction t ,v$session s,v$sqltext st
where t.addr=s.taddr and decode(s.sql_hash_value,0,s.prev_hash_value,s.sql_hash_value)=st.hash_value
这个语句可能有些问题,懒得改了,以后再说吧!
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7668955/viewspace-1008207/ ,如需转载,请注明出处,否则将追究法律责任。