为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.0
【操作系统】:Linux
【CPU】:
【问题描述】*:
查询表数据量,报错回滚记录版本太旧,无法获取用户记录,其余见日志
SELECT DISTINCT
DF.TABLESPACE_NAME,
DFF.TOTAL_SIZE,
(DFF.TOTAL_SIZE - DU.USED_SIZE) AS AVAILABLE_SIZE,
DF.FILE_NAME,
DF.BYTES,
CASE WHEN DF.AUTOEXTENSIBLE = 'YES' THEN 0 ELSE 1 END AS AUTO_EXTEND,
DD.INCREMENT_BY_BYTES,
DF.MAXBYTES
FROM DBA_DATA_FILES DF,
(
SELECT
TABLESPACE_NAME,
SUM(BYTES) AS TOTAL_SIZE
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME
) DFF,
(
SELECT
TABLESPACE_NAME,
SUM(BYTES) AS USED_SIZE
FROM DBA_SEGMENTS
GROUP BY TABLESPACE_NAME
) DU,
(
SELECT
TABLESPACE_NAME,
FILE_NAME,
INCREMENT_BY,
INCREMENT_BY * 1024 * 1024 AS INCREMENT_BY_BYTES
FROM DBA_DATA_FILES
) DD
WHERE DF.TABLESPACE_NAME = DU.TABLESPACE_NAME(+)
AND DF.TABLESPACE_NAME = DFF.TABLESPACE_NAME(+)
AND DD.FILE_NAME = DF.FILE_NAME
AND DF.TABLESPACE_NAME = DD.TABLESPACE_NAME (+)
但是这个表数据量很小,按理说这个查询应该用不了90s。为什么会有回滚记录版本太旧这样的报错呢?还是说undo这个是随机出现的,按理应该是与查询时间强相关?
有没有人遇到过相似问题,没有慢查询情况下,也会出现吗
还是查询堆积到某一个时间,就会触发

查看dm.ini里面UNDO_RETENTION这个参数的值,可以适当扩大一些,比如900