1. 程式人生 > >oracle統計分析表資訊

oracle統計分析表資訊

作用:

為了使基於CBO的執行計劃更加準確

Oracle資料庫中的優化器又叫查詢優化器(Query Optimizer)。它是SQL分析和執行的優化工具,它負責生成、制定SQL的執行計劃。Oracle的優化器有兩種,基於規則的優化器(RBO)與基於代價的優化器(CBO)

                    RBO: Rule-Based Optimization 基於規則的優化器

                    CBO: Cost-Based Optimization 基於代價的優化器

   RBO自ORACLE 6以來被採用,一直沿用至ORACLE 9i. ORACLE 10g開始,ORACLE已經徹底丟棄了RBO

統計分析表資訊之前必須保證表統計分析沒有被鎖住

1、查詢使用者下統計分析鎖住的表

select OWNER, TABLE_NAME, LAST_ANALYZED, STATTYPE_LOCKED, STALE_STATS

        from DBA_TAB_STATISTICS

where STATTYPE_LOCKED is not null  and owner = upper('GZ_GYRX_0726')  and table_name not like '%$%';

2、解除鎖狀態

命令視窗: 

               exec dbms_stats.unlock_table_stats('GZ_GYRX_0726','T_S_DC_CURY');

PL/SQL:

             begin

                      dbms_stats.unlock_table_stats('GZ_GYRX_0726','T_S_DC_CURY');

             end;

3、重新統計分析表資訊

                       begin

                               dbms_stats.gather_table_stats('GZ_GYRX_0726','A000087_ACTVAL');

                       end;

     2和3可以同時執行:

begin

        dbms_stats.unlock_table_stats('GZ_GYRX_0726','T_S_DC_CURY');

       dbms_stats.gather_table_stats('GZ_GYRX_0726','A000087_ACTVAL');

end;

可以解鎖、重新統計分析某一使用者所有的物件(包括表、索引、簇)資訊:

begin

        dbms_stats.unlock_schema_stats('GZ_GYRX_0726');

        dbms_stats.gather_schema_stats('GZ_GYRX_0726');

end;