
这个问题发生在INSTANCESTAUS/TABLESPACESTATUS上,因为对字典表DBA_FREE_SPACE的查询需要很长时间才能执行。
(1)Oracle支持团队对“DBA_FREE_SPACE的查询很慢(文档ID 271169.1)”说明了以下原因:
在版本10g中,DBA _FREE_SPACE视图被修改为也包括回收站中的对象。
回收站中的大量对象可以减慢DBA _FREE_SPACE上的查询速度。这是正常的行为。
对于版本11g,视图DBA _FREE_SPACE不包含提示,如果回收站中只有几个对象,您可能需要收集表/字典的底层统计信息以获得更好的性能。
运行以下查询并在回收站中检查计数:
SQL> SELECT count(*) FROM dba_recyclebin;
如果计数较高,则使用以下命令清除回收站:
SQL> PURGE dba_recyclebin;
(2)Oracle支持团队的下一个建议“如何收集'SYS'用户和'固定'对象拥有的对象的统计数据(Doc ID 457926.1),以收集字典和固定表的统计数据(在得到DBA允许的条件下)。
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
对于启用多租户的Oracle,容器数据库和可插拔数据库需要独立清除。