1.监控程序 dba_free_space 视图查询慢,访问基表X$KTFBUE时间较长,且多为单块读db file sequential read。
SQL> set linesize 500 pagesize 50000 long 999999 longchunksize 999999
SQL> select dbms_sqltune.report_sql_monitor(sql_id => '4pxua9j5qfw8b',sql_exec_id=>'16777216') from dual;
2.执行计划看时间都消耗在35步FIXED TABLE FULL X$KTFBUE,访问9百万数据,且都是单块读
3.X$KTFBUE基表含义,已使用的extent位图信息
4.从执行计划看,不是基表统计信息不准,在执行一次对X$KTFBUE基表进行全表扫描特别慢,那说明表中存放记录太多。
回收站中记录150万,占用1TB空间,造成碎片较多,分区较多
5.清理回收站,数据量较大可能执行时间较长,可分用户执行。
purge dba_recyclebin;
如果是其他情况,可能由于基表统计信息不准。
exec dbms_stats.gather_fixed_objects_stats(no_invalidate => false);
或
exec dbms_stats.gather_table_stats('sys', 'x$ksuse', no_invalidate=>false);