为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.1.2.174
【操作系统】:麒麟
【CPU】:
【问题描述】*:由于某些业务逻辑不对,会导致temp表空间占用非常高,超50GB,为了精准定位问题原因,想查询到底是哪些sql占用的temp表空间,但从达梦的官方文档及社区没有找到可以查询出占用temp表空间的sql,达梦到底有没有相关的视图呢,各位大神有知道的吗?感谢!
v$sql_stat
字段 RECYCLE_PAGE_CHANGES_CNT *page()排序找出最消耗临时表空间的
1、sql执行完,其使用的临时表空间就会释放出来可复用,但是临时表空间已分配空间如果需要收缩,可手动执行以下语句进行收缩:
alter tablespace 表空间名 resize datafile '数据库文件路径' to 收缩到的大小;
2、 V$MTAB_USED_HISTORY动态视图,可查询系统启动以来,使用临时表空间最多的sql语句的操作符:
select * from V$MTAB_USED_HISTORY;
3、v$sql_stat 可以查询当前正在执行的sql使用资源,通过RECYCLE_PAGE_CHANGES_CNT可大概有个判断
4、v$sql_Stat_history 可以查询最近已执行完的sql使用资源,同v$sql_stat
各视图的具体定义可参见dba手册:
https://eco.dameng.com/document/dm/zh-cn/pm/dm8-admin-manual-appendix.html#7.%20%E4%BC%9A%E8%AF%9D
select * from V$MTAB_USED_HISTORY;
