ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle10g中部分视图查询非常‘慢“问题解决

oracle10g中部分视图查询非常‘慢“问题解决

原创 Linux操作系统 作者:yezhibin 时间:2009-06-14 01:38:09 0 删除 编辑
      在查看部分视图中,有时要等很长时间才能出来结果,例如:

              案例1:
                       SQL>select distinct owner from v$access;
                        
                                   Elapsed: 00:02:43.51
            
                案例2:
                         SQL>select *  from dba_extents
                                  where file_id = 6 and 3348 between block_id and
                                  block_id + blocks - 1
                
                            Elapsed: 00:00:24.45

          造成该原因的是fixed table没有进行统计分析,具体步骤如下:

             1、通过以下脚本进行确认:

                      SQL> select VIEW_DEFINITION from
                                  v$fixed_view_definition
                                  where view_name='GV$ACCESS';
                   
                             使用x$ksuse ,x$kglob , x$kgldp ,x$kgllk
       
                        SQL>select dbms_metadata.get_ddl('VIEW', 'DBA_EXTENTS')
                                   from dual;
 
                              其中使用了 x$ktfbue       

             2、查看是否fixed table是否进行统计分析
                   
                          SQL>select count(*) from sys.tab_stats$;
                                      COUNT(*)
                                      ----------
                                           0
                        说明:未进行统计分析

             3、执行统计分析
                           SQL>connect /as sysdba
                           SQL> exec dbms_stats.gather_fixed_objects_stats(null);
                            SQL>select count(*) from sys.tab_stats$;
                                        COUNT(*)
                                         ----------
                                              579
              4、查看以上的fixed table是否都已经被统计分析
                         
                           SQL>select num_rows, last_analyzed from user_tab_statistics
                                      where table_name = 'X$KTFBUE';

                                     NUM_ROWS LAST_ANAL
                                          ---------- ---------
                
                             SQL>select num_rows, last_analyzed from user_tab_statistics
                                          where table_name = 'X$KGLDP';

                                         NUM_ROWS LAST_ANAL
-                                        --------- ---------
                                                868 14-JUN-09
                        
                             说明: 发觉X$KTFBUE并未进行统计分析,造成该问题的主要
                                          原因是oracle10g BUG 5259025

             5
、需要单独对这张fixed_table进行统计分析
                             
                             SQL>exec DBMS_STATS.GATHER_TABLE_STATS
                                         ('SYS', 'X$KTFBUE');
                                  
                             
SQL>select num_rows, last_analyzed
                                         from user_tab_statistics
                                         where table_name = 'X$KTFBUE';

                                          NUM_ROWS LAST_ANAL
                                          ---------- ---------
                                            4186        14-JUN-09 

          重新测试:
       
           SQL>select /*+ gather_plan_statistics */ distinct owner from v$access;

                        Elapsed: 00:00:00.05
                        从2分多提高到不到1秒
 
          
SQL>select *  from dba_extents
                        where file_id = 6 and 3348 between block_id and
                        block_id + blocks - 1

                        Elapsed: 00:00:02.59
                        从24秒提高到3秒

备注:
       1、 查看具体执行计划:
              SQL>select sid, sql_id from v$session where xxxxxxx
              SQL>set serveroutput on size 1000000
              SQL>select * from
                        dbms_xplan.display_cursor('SQL_ID', '0', 'ALL ALLSTATS'))
         2、Bug  
5259025请参看metalink.oracle.com

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/354732/viewspace-606217/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-12-18

  • 博文量
    159
  • 访问量
    559689