我想了解在什么样的情况下,什么问题会导致临时表空间耗尽空间。
我的Oracle数据库实例正在18c版上运行。
我是一名DBA,主要管理DB的运营方面。我不做太多的开发/代码编写。我想了解更多,这样我就可以为开发者提供一些建议。
发布于 2022-08-18 11:21:23
正如您已经注意到的,当排序数据集太大而无法存储时,将使用临时空间。它还用于实现中间数据集(例如来自子查询或CTE),无论是否排序,用于创建索引,或用于临时LOB存储。
您无法避免使用它:它是由Oracle自动化的。最常见的情况是,您的选择是“一次处理较少的数据”或“使温度更大”。您可以手动放大临时表空间中的一个或多个数据文件,将数据文件设置为最大限度的自动扩展,或者添加更多的数据文件。
您可以使用以下内容按会话监视使用情况:
SELECT S.sid || ',' || S.serial# sid_serial, S.username, S.osuser, P.spid, S.module,
P.program, SUM (T.blocks) * TBS.block_size / 1024 / 1024 mb_used, T.tablespace,
COUNT(*) statements
FROM v$sort_usage T, v$session S, dba_tablespaces TBS, v$process P
WHERE T.session_addr = S.saddr
AND S.paddr = P.addr
AND T.tablespace = TBS.tablespace_name
GROUP BY S.sid, S.serial#, S.username, S.osuser, P.spid, S.module,
P.program, TBS.block_size, T.tablespace
ORDER BY sid_serial;然后检查v$session或使用类似SQL的实例查看器之类的工具获取有关当前SQL的信息,以查看是哪个SQL命令导致了问题。请注意,它可能不仅仅是导致问题的一个操作:它也可能是多个操作同时运行的累积效应。
https://dba.stackexchange.com/questions/315767
复制相似问题