一、问题
[-7120]:Undo record version too old, user record unavailable.

二、问题分析
为构建一致性读,DM中会保留UNDO_RETENTION时间段内的快照。当SQL执行时间超过了UNDO_RETENTION,而这时有其他连接修改了正在查询的数据,就会出现这种报错提示,出现报错时建议优先考虑SQL优化。
注意:DM中的undo过旧与undo表空间大小无关,仅与UNDO_RETENTION参数配置有关,这是与Oracle不同的,通常UNDO_RETENTION不应超过900,过大的参数值会导致记录更多的undo记录,如果数据库出现异常需要重启时将需要更长的回滚时间。
三、问题处理
如果需要记录下是哪个语句修改了查询的数据,(8.1.3.26版本开始支持)可以配置参数ENABLE_IGNORE_PURGE_REC为2,可以在实例日志中和sqllog中进行报错体现,并可以查看到导致报错的相关SQL。配置命令:
SP_SET_PARA_DOUBLE_VALUE(1,'ENABLE_IGNORE_PURGE_REC',2);