Alert.log今天产生大量的
ORA-01555 caused by SQL statement below (SQL ID: atfsm4urynvf2, Query Duration=0 sec, SCN: 0x0087.1d1eafdc):
select * from askey_id_mapping as of timestamp sysdate - 2/24 where ID_VALUE = ‘JCYVD30001655CN’
Sat Dec 08 10:43:43 2018
ORA-01555 caused by SQL statement below (SQL ID: cx70v53dbq51x, Query Duration=0 sec, SCN: 0x0087.1c7e4165):
select * from askey_id_mapping as of timestamp sysdate - 4/24 where ID_VALUE = ‘JCYVD30001655CN’
Sat Dec 08 10:44:14 2018
Thread 1 advanced to log sequence 377657 (LGWR switch)
Current log# 1 seq# 377657 mem# 0: +NSFC3DB_ARCH/nsfc3db/onlinelog/group_1.267.860580217
Sat Dec 08 10:44:15 2018
就是一个查询要访问某个数据块,而这个数据块在这个查询执行过程中修改过,那么该查询需要查询undo中数据块,而undo中该数据块已经不存在,从而出现ORA-1555。
解决办法:
Case 1 – Rollback Overwritten
1.缩短sql运行时间
2.增加undo_retention,这个同时需要考虑undo空间大小
3.减少commit(rollback)次数