Oracle 12c中如何监控并行查询对临时表空间的消耗情况?

陌强君_2462

陌强君_2462

2026-06-23

430人浏览

原创

v$tempseg_usage无法准确反映并行查询临时空间消耗,因其仅关联用户会话(saddr),不区分并行度,未记录px进程(p00x)独立占用,且无degree/server_name字段,无法拆解累计blocks至各px进程;须结合v$px_session与v$tempseg_usage关联追踪qc-px-segment三层链路。

不能只查 v$tempseg_usage 就认为抓到了并行查询的临时空间消耗——它不区分并行度,也不记录并行服务器进程(p00x)的独立占用,容易把多个px进程的叠加用量当成单个会话行为。

为什么 V$TEMPSEG_USAGE 无法准确反映并行查询的临时空间消耗

这个视图只关联到用户会话(saddr),但并行查询中真正分配和使用临时段的是后台 PX 进程(如 P000, P001),它们不显示在 V$SESSION 的常规会话列表里;V$TEMPSEG_USAGE 中的 blocks 是所有 PX 进程对该会话的累计值,无法拆解到每个并行服务器;更关键的是,它没有 degree 或 server_name 字段,你看到 5000 MB 占用,根本不知道是 2 个 PX 进程各占 2500 MB,还是 10 个各占 500 MB——这对资源隔离和限流毫无指导意义。

必须结合 V$PX_PROCESS 和 V$TEMPSEG_USAGE 关联查询

要定位真实消耗来源,得先找出哪些 PX 进程属于哪个并行查询,再匹配其临时段使用。核心逻辑是:通过 V$PX_PROCESS 找出正在服务某 SQL 的 PX 进程(server_name),再用其 addr 去 V$TEMPSEG_USAGE 查对应占用。

  • V$PX_PROCESS.server_name(如 P000)可与 V$TEMPSEG_USAGE.session_addr 关联——注意:不是直接等值,而是需用 V$PX_PROCESS.qcinst_id + V$PX_PROCESS.qcsid 定位 QC(Query Coordinator)会话,再查该 QC 下所有 PX 进程的临时段
  • 推荐写法:先查 V$PX_SESSION(它直接关联 QC 和 PX 的映射),再左连 V$TEMPSEG_USAGE,避免漏掉未活跃但已分配段的 PX 进程
  • 示例关键字段组合:SELECT px.qcsid, px.qcserial#, px.server_name, t.blocks * tbs.block_size / 1024 / 1024 AS mb_used, t.segtype FROM V$PX_SESSION px JOIN V$TEMPSEG_USAGE t ON px.sid = t.session_num JOIN dba_tablespaces tbs ON t.tablespace = tbs.tablespace_name WHERE t.tablespace = 'TEMP'

如何识别高消耗并行 SQL 并追溯执行计划

仅看 MB 数不够,得知道是哪个操作(Sort/Hash/Temp Table)在吃空间,以及是否因并行度设置过高导致浪费。

QuantOracle
QuantOracle

63个确定性量化金融计算器 + 10个通过MCP的复合工作流。期权定价、Greeks、奇异衍生品、风险指标、投资组合优化……

下载
  • 用 V$SQL_PLAN 查 operation 含 SORT、HASH JOIN、GROUP BY 的语句,并过滤 other_xml 中的 px_inmemory 或 px_server 属性确认是否启用并行
  • 重点检查 V$SQL_WORKAREA 中 policy = 'AUTO' 且 actual_mem_used > max_mem_used 的记录——说明 Oracle 被迫 spill 到磁盘,这是临时空间暴涨的直接原因
  • 若发现 V$SQL_WORKAREA.active_time 很长但 work_area_size 很小,大概率是并行度(DEGREE)设得太高,而 PGA_AGGREGATE_TARGET 不足,导致每个 PX 进程分到内存太少,集体落地

监控脚本必须避开的三个坑

很多 DBA 写的“实时监控”脚本一跑就卡,或者结果跳变剧烈,问题往往出在这三处:

  • 别在循环里反复查 V$TEMPSEG_USAGE —— 它底层锁开销大,频繁扫描会阻塞其他 DML;改用每 30 秒采样一次 + 缓存上次结果做 delta 计算
  • 不要用 dba_temp_files.bytes - v$temp_space_header.bytes_free 算“已用”,因为 v$temp_space_header 只反映文件头缓存状态,可能滞后数秒;应以 V$TEMPSEG_USAGE.blocks × block_size 为准
  • 忽略 V$PX_PROCESS 的 status = 'IN USE' 过滤——有些 PX 进程已结束但段未释放,status 变成 IDLE,但 V$TEMPSEG_USAGE 里仍有记录,漏掉这部分会导致低估 20%+ 实际用量

真正有效的并行临时空间监控,本质是“QC–PX–Segment”三层链路的闭环追踪。任何跳过 V$PX_SESSION 或 V$PX_PROCESS 的方案,都只能看到水面以上的冰山一角——尤其在 12c 的自适应并行调度下,PX 进程生命周期极短,瞬时快照比平均值重要得多。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

oracle

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

2023.10.12

4143

8

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.27

871

4

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

2024.02.23

1069

5

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

6021

10

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

2903

4

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

2024.04.07

6000

11

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

2024.04.29

8041

6

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1090

5

sql中删除一列的命令是什么
sql中删除一列的命令是什么

在sql中,使用alter table语句可以删除一列,语法为:alter table table_name drop column column_name。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

952

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程