在datapump输出过程中可能出现的“快照太老”S的错误在互联网上有很好的记录,例如:
是否有办法在作业运行时监视这些失败案例?
我正在寻找的解决方案将是一个查询,该查询将报告:
任何做这些事情一部分的查询都将受到欢迎。查找这样的信息需要oracle分析包吗?有可能质疑这样的事情吗?
发布于 2016-09-29 13:36:36
您需要充分了解撤销如何对此错误进行故障排除。我推荐这篇博文:
http://blog.oracle48.nl/wordpress/oracle-database-undo-space-explained/
您可以使用此查询查看撤消表空间(S)的当前配置文件:
SELECT DISTINCT STATUS,TABLESPACE_NAME, SUM(BYTES), COUNT(*)
FROM DBA_UNDO_EXTENTS
GROUP BY STATUS, TABLESPACE_NAME;ACTIVE区段包含未提交或当前回滚事务。UNEXPIRED区段包含需要保存在撤消表空间中以满足undo_retention参数的事务。EXPIRED区段是仍然在撤消表空间中的事务,这些事务比undo_retention参数更早。数据库将删除最古老的过期区段,以便为新的活动区段腾出空间。如果没有过期的区段,它将尝试分配一个新的区段。如果这意味着扩展数据文件,它就会这样做。
如果数据文件无法扩展,数据库将删除一些未过期的区段以腾出空间,这违反了undo_retention值。因此,undo_retention参数不是一个保证,而是数据库将尽力遵循的指导方针。
现在,这里有两种常见的故障模式:
ORA-01555 Snapshot Too Old中失败。ORA-30036 unable to extend segment in Undo tablespace将导致事务失败。快照撤消表空间使用的总百分比,直到需要自动扩展或关闭
如果DBA_UNDO_EXTENTS中的活动字节和未过期字节之和接近相关撤消表空间的大小,则有机会体验ORA-01555。
如果活动字节的总和接近相关撤消表空间的大小,则可能会遇到ORA-30036错误。
重做日志使用的总百分比,直到它覆盖自己为止
我不知道您可以在重做日志配置中更改任何会影响快照太老的错误。你从哪得到这些信息的?
直到快照达到撤消保留为止。
要准确地做到这一点是非常困难的,如果不是不可能的话,因为它取决于数据库中的每一个其他事务。如果从undo_retention参数中减去查询运行时间,您会有一个好主意,但这只是假设撤销表空间足够大,足以满足undo_retention值。一旦这条线被越过,所有的赌注都取消了。
https://dba.stackexchange.com/questions/150414
复制相似问题