讲师中心 微信公众号
AI工具推荐 视频效率加速

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

陌强君_2462

陌强君_2462

发布时间:2026-06-23 12:11:36

|

430人浏览过

|

来源于php中文网

原创

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 进程生命周期极短,瞬时快照比平均值重要得多。

热门AI工具

更多
AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

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

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

4143

2023.10.12

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

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

871

2023.10.27

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

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

1069

2024.02.23

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

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

6021

2024.03.06

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

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

2903

2024.03.06

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

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

6000

2024.04.07

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

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

8041

2024.04.29

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

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

1090

2024.04.29

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

0

2026.10.10

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn