管理Oracle統計資訊

來源:互聯網
上載者:User

 在CBO(基於代價的最佳化器模式)條件下,SQL語句的執行計畫由統計資訊來決定,若沒有統計資訊則會採取動態採樣的方式決定執行計畫!可以說統計資訊關乎sql的執行計畫是否正確,屬於sql執行的指導思想,oracle的初始化參數statistics_level控制收集統計資訊的層級,有三個參數值:

BASIC :收集基本的統計資訊TYPICAL:收集大部分統計資訊(資料庫的預設設定)ALL:收集全部統計資訊 統計資訊包含:行統計資訊(user_tables):行數(NUM_ROWS),塊數(BLOCKS),行平均長度(AVG_ROW_LEN);列統計資訊(user_tab_columns):列中唯一值的數量NUM_DISTINCT),NULL值的數量(NUM_NULLS),資料分布(HISTOGRAM);         索引統計(user_index):--葉塊數量(LEAF_BLOCKS),等級(BLEVEL),聚簇因子(CLUSTERING_FACTOR); 統計資訊的收集時間由時間視窗來調度!

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/1T240F50-0.jpg" border="0" alt="" />

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/1T2406254-1.jpg" border="0" alt="" />

 一:10g關閉自動收集統計資訊任務

 
  1. begin 
  2.  DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB'); 
  3. end; 

二:11g關閉自動收集統計資訊任務

 
  1. BEGIN 
  2. DBMS_AUTO_TASK_ADMIN.DISABLE( 
  3. client_name => 'auto optimizer stats collection', 
  4. operation => NULL, 
  5. window_name => NULL); 
  6. END; 

查詢

 
  1. SQL> select client_name ,status from dba_autotask_client; 
  2.  
  3. CLIENT_NAME                                                      STATUS 
  4.  
  5. ---------------------------------------------------------------- -------- 
  6.  
  7. auto optimizer stats collection                                  DISABLED 
  8.  
  9. auto space advisor                                               ENABLED 
  10.  
  11. sql tuning advisor                                               ENABLED 

三:手動收集統計資訊,採樣10%,並行度為8,METHOD_OPT選項代表收集index列分布情況,並產生長條圖

 
  1. BEGIN 
  2. dbms_stats.gather_schema_stats( 
  3. ownname=>'HR', 
  4. METHOD_OPT=>'FOR ALL INDEXED COLUMNS SIZE SKEWONLY', 
  5. CASCADE=>TRUE, 
  6. ESTIMATE_PERCENT=>10, 
  7. DEGREE=>8); 
  8. END; 

四:查看錶或索引的統計資訊

 
  1. select table_name,  
  2.        last_analyzed,  
  3.        num_rows,  
  4.        avg_row_len,  
  5.        row_movement, 
  6.        monitoring 
  7. from dba_tables 
  8. where owner = 'HR'; 
  9.  
  10. select index_name, 
  11.        table_name, 
  12.        blevel, 
  13.        status, 
  14.        clustering_factor, 
  15.        last_analyzed, 
  16.        num_rows, 
  17.        leaf_blocks, 
  18.        distinct_keys, 
  19.        avg_leaf_blocks_per_key 
  20. from dba_indexes 
  21. where owner = 'HR'; 

五:匯出統計資訊

 
  1. begin 
  2.   dbms_stats.create_stat_table(ownname => 'HR', 
  3.   stattab => 'HR_STAT_BAK'); 
  4. end; 
  5.  
  6. begin  
  7.   dbms_stats.export_schema_stats(ownname => 'HR', 
  8.   stattab => 'HR_STAT_BAK', 
  9.   statid => 'N1', 
  10.   statown => 'HR'); 
  11. end; 
  12.  
  13. select * from HR_STAT_BAK; 

六:刪除統計資訊

 
  1. begin 
  2.   dbms_stats.delete_schema_stats(ownname => 'HR'); 
  3. end; 

七:匯入統計資訊

 
  1. begin 
  2.   dbms_stats.import_schema_stats(ownname => 'HR', 
  3.   stattab => 'HR_STAT_BAK', 
  4.   statid => 'N1', 
  5.   statown => 'HR'); 
  6. end; 

八:異機匯入,首先需要將HR_STAT_BAK表通過expdp/impdp方式匯入到其他oracle伺服器上

 
  1. SQL> exec dbms_stats.upgrade_stat_table('HR','HR_STAT_BAK'); 
  2. PL/SQL 過程已成功完成。 
  3.  
  4. SQL> EXEC dbms_stats.import_schema_stats(ownname => 'HR',stattab => 'HR_STAT_BAK',statid => 'N1',statown=>'HR'); 
  5. PL/SQL 過程已成功完成。 

九:鎖定與解鎖統計資訊

 
  1. 1:鎖定統計資訊 
  2. begin 
  3.  dbms_stats.lock_schema_stats(ownname=>'HR'); 
  4. end; 
  5.  
  6. 2:查詢哪些表或索引的統計資訊被鎖定 
  7. select * from user_tab_statistics where stattype_locked='ALL'; 
  8. select * from user_ind_statistics where stattype_locked='ALL'; 
  9.  
  10. 3:如果在鎖定條件下收集統計資訊,則會出現如下報錯 
  11. ERROR at line 1: 
  12. ORA-20005: object statistics are locked (stattype = ALL) 
  13. ORA-06512: at "SYS.DBMS_STATS", line 20337 
  14. ORA-06512: at "SYS.DBMS_STATS", line 20360 
  15. ORA-06512: at line 1 
  16.  
  17. 4:解鎖統計資訊 
  18. begin 
  19.  dbms_stats.lock_schema_stats(ownname=>'HR'); 
  20. end; 

 

 

本文出自 “斬月” 部落格,謝絕轉載!

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.