ITPub博客

首页 > 数据库 > Oracle > ORA-01555: 快照过旧: 回退段号 39 (名称为 "_SYSSMU39_3029844184$") 过小

ORA-01555: 快照过旧: 回退段号 39 (名称为 "_SYSSMU39_3029844184$") 过小

原创 Oracle 作者:ywxj_001 时间:2017-11-15 01:02:23 0 删除 编辑
环境:
oracle RAC 2节点
DG 单节点

问题:
在DG上执行sqlserver到oracle的linkserver的ETL查询报错:

Package Name: WMSINFO_ETL_StockPackage_5th Start Time: 2017/11/14 16:53:55

Error: WMS_STOCK源 无法处理这些数据。ORA-01555: 快照过旧: 回退段号 39 (名称为 "_SYSSMU39_3029844184$") 过小

DG上DB的alert日志:
ORA-01555 caused by SQL statement below (SQL ID: gyjxsr15qwqqy, Query Duration=1834 sec, SCN: 0x0001.68c59971):
select a.WHSEID, 'HBRDC' as WMS_RDCCode,a.StorerKey, b.Lottable03, c.Description , b.Lottable08, a.Loc, d.SKUGroup2 MaterialCode, d.SKUGroup SizeName, a.SKU, d.BUSR2, d.BUSR3, d.busr9, d.busr10, SUSR4, sum(nvl(a.Qty, 0)) Qty from WMWHSE1.Lotxlocxid a inner join WMWHSE1.Lotattribute b on a.Lot = b.Lot inner join WMWHSE1.Codelkup c on b.Lottable03 = c.Code and c.ListName = 'STOCK' inner join WMWHSE1.SKU d on a.StorerKey = d.Storerkey and a.SKU = d.SKU where a.Qty > 0 group by a.WHSEID, a.StorerKey, b.Lottable03,c.Description, b.Lottable08, a.Loc, d.SKUGroup2, d.SKUGroup, a.SKU, d.BUSR2, d.BUSR3, d.busr9, d.busr10, SUSR4


这句SQL执行1834s

判断原因:
SQL语句执行时间太长,或者UNDO表空间过小,或者事务量过大,或者过于频繁的提交,导致执行SQL过程中进行一致性读时,SQL执行后修改的 前镜像(即UNDO数据)在UNDO表空间中已经被覆盖,不能构造一致性读块(CR blocks)。  这种情况最多。
解决办法:
第1种情况解决的办法:
(1)增加UNDO表空间大小
(2)增加undo_retention 时间,默认只有15分钟
alter  system set undo_retention=14400 ;
undo_retention这个值可以根据情况调大一些。
(3)优化出错的SQL,减少查询的时间,首选方法
(4)避免频繁的提交

SQL> show parameter undo_retention;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     900

把undo_retention修改为3600s
SQL> alter  system set undo_retention = 3600;


System altered.

SQL> show parameter undo_retention;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     3600

再执行查询成功。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22996654/viewspace-2147263/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
在零售、金融、互联网行业从事数据库相关工作10余年,有丰富的数据库管理和架构的相关经验。 涉及SQLServer、Oracle、MySQL、PostgreSQL等多种数据库。 目前在一家互联网公司担任DBA经理。 负责整个集团数据库的架构设计和管理工作。

注册时间:2010-01-19

  • 博文量
    247
  • 访问量
    436206