【问题标题】:How to resolve temp table space issue in Oracle如何解决 Oracle 中的临时表空间问题
【发布时间】:2021-01-14 21:06:24
【问题描述】:

我在这里需要 DBA 的帮助。 我有一个从数据库中获取大约 1800 条记录的查询。 但是,观察到oracle的临时表空间被填满,导致oracle响应太慢。

我已经确定了导致问​​题的查询,并且查询是这样的。

SELECT * FROM A a, B b WHERE a.id = b.fieldId AND b.col1 = :1 AND b.col2 = :2 ORDER BY TO_NUMBER(b.col3) ASC

此查询返回大约 1800 条记录,DBA 段显示 50 GB 数据中的 44 GB 已被占用。 我不确定有什么办法可以解决这个问题。

我使用的是 Oracle 12.1

请对此进行调查并建议我是否必须重写查询。 提前致谢。

【问题讨论】:

    标签: oracle oracle12c database-administration


    【解决方案1】:

    至少在不检查查询计划的情况下,很难知道资源密集型查询是如何。

    这可能根本不是您的查询,谁“吃掉”了所有 TEMP 空间。以下是如何获得 TEMP 使用率最高的前 20 个会话。

    select round(u.blocks*8192/1024/1024,2) "TEMP usage, Mb",
           s.sid, s.osuser, s.machine, s.module, s.action, s.status, s.event, s.LAST_CALL_ET, s.WAIT_TIME, s.sql_id, s.sql_child_number
      from v$session s,
           v$sort_usage u
     where s.saddr = u.session_addr
     order by u.blocks desc
     fetch first 20 rows with ties
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多