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;