【发布时间】:2017-05-12 08:57:48
【问题描述】:
谁能告诉我为什么下面的查询被触发以及何时触发。我相信这个查询会对性能产生巨大影响。我无法追踪这是从哪里被解雇的。
查询:
SELECT SUM (used), SUM (total)
FROM (SELECT /*+ ORDERED */
SUM (d.BYTES) / (1024 * 1024) - MAX (s.BYTES) used,
SUM (d.BYTES) / (1024 * 1024) total
FROM ( SELECT tablespace_name, SUM (BYTES) / (1024 * 1024) BYTES
FROM ( SELECT/*+ ORDERED USE_NL(obj tab) */DISTINCT ts.NAME
FROM SYS.obj$ obj, SYS.tab$ tab, SYS.ts$ ts
WHERE obj.owner# = USERENV ('SCHEMAID')
AND obj.obj# = tab.obj#
AND tab.ts# = ts.ts#
AND BITAND (tab.property, 1) = 0
AND BITAND (tab.property, 4194400) = 0) tn,
dba_free_space sp
WHERE sp.tablespace_name = tn.NAME
GROUP BY sp.tablespace_name) s, dba_data_files d
WHERE d.tablespace_name = s.tablespace_name
GROUP BY d.tablespace_name)
它正在对 SYS.TS$ 和 SYS.FILE$ 进行全表扫描。我相信它正在利用数据库的最大资源。
请帮帮我。
提前致谢。
【问题讨论】:
-
You are not alone,但我认为这可能是 Oracle 支持的一个。
-
@AlexPoole 。感谢您的链接,但无法从中找到太多信息。请任何其他指针。
-
仅检查 Oracle 支持网站并在没有明显内容时提出服务请求。
-
正如@AlexPoole 的评论和这里提到的:slow-access-to-dba_free_space,尝试运行:purge dba_recyclebin;
-
这里再次为 PURGE DBA_RECYCLEBIN 投票。里面的几十个对象绝对会破坏 DBA_FREESPACE 视图的性能。