数据库在用job执行 存储过程时出现 ORA-01555: 快照过旧: 回退段号 3280 (名称为 "_SYSSMU3P?? 这个错误,貌似是执行的太慢导致的结果,这个应该怎么解决??谢谢
解决方案 »
- 主外键问题
- 包出现错误——PLS-00103: 出现符号 "CREATE" (急)
- distinct只针对列吗?
- 如何取某列中多行相同值中的一行数据?
- 在设计阶段,我们只有数据库的表结构,这时候,有没有办法预估数据库的物理大小?
- 请问怎样设置oracle的最大连接数?谢谢!
- 有关触发器enable在哪里查?
- 在oracle中有没有象access中"自动编号"类型的数据类型
- 请问如果访问远方数据库中的表
- plsql命令导出数据库为什么低版本的导出往高版本里面导入会报不是有效的导出文件,标头验证失败
- oracle 8.1.7 误删除一些表的数据后,如何恢复?求高手解答
- 用PlSqlDeveloper远程访问Oracle11g
应该是这个参数undo_retention.
show parameter undo_retention
看看它的值是多少?一般来说是900,单位是秒
这个900的意思是,执行的sql在undo块里保留的时间。
如果你的sql执行时间太长,就不够用了。
就快照过旧了。
1. 提问之前先google。
2.
Oracle ORA-01555 快照过旧 说明
http://blog.csdn.net/tianlesoftware/article/details/4745898
2.UNDO太小,但这个数据说设成物理内存大小左右就行了,之前官方人员非官方推荐是1/3,但显然不够。
但这个如果太大了,大事务未提交被kill后,将来是会滚死人的。
3.undo_retention太短,我的业务库是900,仓库是10800
SQL语句执行时间太长,或者UNDO表空间过小,或者事务量过大,或者过于频繁的提交,导致执行SQL过程中进行一致性读时,SQL执行后修改的前镜像(即UNDO数据)在UNDO表空间中已经被覆盖,不能构造一致性读块(CR blocks)。解决:
(1)增加UNDO表空间大小
(2)增加undo_retention 时间,默认只有15分钟
(3)优化出错的SQL,减少查询的时间,首选方法
(4)避免频繁的提交-- 引自tianlesoftware博文