为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。 【DM版本】: 【操作系统】: 【CPU】: 【问题描述】*: oracle中,可以通过set autotrace on 来查看到tempSpc临时表空间占用的大小,达梦中呢
比如select * from table order by column,我想查看这条语句运行过程中占用的临时表空间大小
SELECT UPPER(F.TABLESPACE_NAME) "表空间", D.TOT_GROOTTE_MB "总量(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已用(M)",F.TOTAL_BYTES "剩余(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用率" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME;
可尝试从V$SQL_STAT根据临时空间读写及页数变化判断临时空间使用大小
SELECT UPPER(F.TABLESPACE_NAME) "表空间",
D.TOT_GROOTTE_MB "总量(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已用(M)",F.TOTAL_BYTES "剩余(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用率"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME;