WEB开发网
开发学院数据库Oracle ORA-01555错误浅析 阅读

ORA-01555错误浅析

 2009-05-26 13:13:59 来源:WEB开发网   
核心提示:ORA-01555(快照过旧)问题让很多人感到十分头痛,最近我们的生产系统上也报出了ORA-01555错误,ORA-01555错误浅析,就结合这次案例将ORA-1555问题作个案例分析,并浅析产生原因和各种解决办法,并不是回滚段中的数据超过这个时间以后就会被清除掉,而是等到后面事务产生的回滚数据覆盖掉“超期

ORA-01555(快照过旧)问题让很多人感到十分头痛。最近我们的生产系统上也报出了ORA-01555错误。就结合这次案例将ORA-1555问题作个案例分析,并浅析产生原因和各种解决办法。

如果要了解1555错误产生的原因,就需要知道ORACLE的两个特性:一致性读(Consistent Get)和延迟块清除(Delayed Block Cleanout)。此外,还要知道关于回滚段的一些配置参数。

相关参数

先看下Oracle中关于UNDO有哪些配置参数:

 SQL> show parameter undo

NAME TYPE VALUE

--------------------- -------------------- -----------------------

undo_management string MANUAL

undo_retention integer 900

undo_suppress_errors boolean FALSE

undo_tablespace string UNDOTBS1

undo_management

回滚段的管理方式。值可以为MANUAL/AUTO。9i中默认是MANUAL,10g中默认是AUTO。

从9i后,回滚段就以表空间的形式管理,并且支持系统自动管理回滚段。一个回滚表空间上可以创建多个回滚段,一个数据库可以创建多个回滚表空间。但是,一个实例(Instance)只能使用一个回滚表空间。

如果undo_management设置为MANUAL,就是手动创建回滚段:

 SQL> create rollback segment undo1 tablespace UNDOTBS1;

如果设置为AUTO,Oracle就自动管理回滚段的创建,而手工创建就会失败。

undo_retention

这个参数设置回滚段中的被提交或回滚的数据强制保留时间,单位是秒。请注意,这个参数和1555错误有非常大的关系。但是,需要提醒的是,并不是回滚段中的数据超过这个时间以后就会被清除掉,而是等到后面事务产生的回滚数据覆盖掉“超期”数据。所以这就是为什么我们往往看到系统的回滚表空间占有率始终是100%的原因了。

1 2 3  下一页

Tags:ORA 错误 浅析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接