oracle 11g自動收集統計資訊介紹
對於oracle而言,準確的統計資訊對於CBO來說是非常重要的,因為這直接關係到CBO能否對目標SQL生成合適的、正確的執行計劃。所以我們應該使自己維護的資料庫中的統計資訊儘量準確。
在oracle 10g之前並沒有自動收集統計資訊的機制,對統計資訊的收集一般都是由DBA手工編寫SHELL指令碼來實現。這樣就會出現根據表或者其他物件的變更,需要頻繁的變更SHELL指令碼來適應資料庫物件的變更。另外,可能很多DBA沒有意識到統計資訊對最佳化器的重要性,導致很多的SQL無法得到正確的執行計劃。
基於統計資訊對CBO的重要性,所以oracle從10g版本開始引入了自動收集統計資訊的功能。自動統計資訊收集作業能夠每天收集統計資訊。預設情況下,該收集作業會自動判斷如下方面的內容。
1、需要對哪些物件收集統計資訊。
2、需要對哪些統計資訊已經過期的物件重複收集統計資訊。
3、以估算模式收集統計資訊的取樣比例(預設是以估算模式進行收集)
4、需要對哪些列收集直方圖統計資訊以及相應的Bucket 的數量。
5、是否啟用並行收集以及相應的並行度。
當然使用oracle自動收集統計資訊,必須要確保oracle的引數statistics_level的值為:TYPICAL或者 ALL 。
現在我們詳細介紹一下oracle11g中的自動統計資訊收集作業的詳情:
oracle 11g 引入了一個名為gather_stats_prog的自動執行任務專門用於收集統計資訊。
SELECT t.CLIENT_NAME, t.TASK_NAME, t.OPERATION_NAME, t.STATUS
FROM dba_autotask_task t;
gather_stats_prog實際上也是呼叫了dbms_stats包裡面的儲存過程dbms_stats.gather_database_stats_job_proc:
SELECT t.PROGRAM_NAME
FROM dba_scheduler_programs t
where t.PROGRAM_NAME = 'GATHER_STATS_PROG';
oracle 11g的自動統計資訊收集作業可配置的維護視窗從10g 的2個增加到了7個,具體的維護視窗可以根據下面SQL語句檢視:
SELECT t.WINDOW_NAME,t.AUTOTASK_STATUS FROM dba_autotask_window_clients t ;
可以根據下面的SQL看到每個收集統計資訊的維護視窗的執行開始時間和每次執行的持續時間,透過該檢視中的RESOURCE_PLAN欄位可以看出oracle在收集統計資訊的過程中新增了資源的限制:
SELECT t.WINDOW_NAME, t.REPEAT_INTERVAL, t.duration, t.enabled,t.RESOURCE_PLAN
FROM dba_scheduler_windows t
where enabled = 'TRUE';
自動執行任務GATHER_STATS_PROG每次執行的時候都會先 生成名為ORA$AT_OS_OPT_XXX 的作業,然後再執行這個作業,從檢視dba_scheduler_job_run_details 中可以看到具體的執行資訊,
相關的查詢SQL和執行結果 如下:
SELECT a.job_name, a.actual_start_date, a.status
FROM (SELECT *
FROM dba_scheduler_job_run_details t
where t.JOB_NAME like 'ORA$AT_OS_OPT_%'
order by t.LOG_DATE desc) a
where rownum <= 4;
從上圖 我們可以看出最近今天的自動收集統計資訊作業實際執行時間和是否執行成功。另外 我們也可以根據oracle 提供的指令碼$ORACLE_HOME/rdbms/admin 下的catmwin.sql指令碼中看到 統計資訊收集作業的整體搭建流程。有興趣的同學可以研究下此指令碼的內容。
我們來總結一下oracle 11g中的自動統計資訊收集的特點。
(1)oracle 11g 中的自動統計資訊收集作業每天自動執行任務gather_stats_prog來實現,每次執行的時候會先 生成名為 ORA$AT_OS_OPT_XXX的作業,然後再執行這個作業來自動收集統計資訊,其本質也是執行DBMS_STATS 包裡的儲存過程 gather_database_stats_job_proc。
(2)oracle 11g 中的自動統計資訊收集作業的可維護視窗有7個,視窗的名字分別是從週一到週日的英文名字。
(3)在11g 的版本中新增了對7個維護視窗的資源控制,其對應的Resource Plan 的名稱為DEFAULT_MAINTENANCE_PLAN。
---fdh
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2141345/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Oracle】11g Oracle自動收集統計資訊Oracle
- ORACLE 11g 自動收集統計資訊Oracle
- Oracle 11g 之自動收集統計資訊Oracle
- Oracle 11g無法自動收集統計資訊Oracle
- Oracle統計資訊自動收集Oracle
- [統計資訊系列7] Oracle 11g的自動統計資訊收集Oracle
- 關於oracle自動收集統計資訊Oracle
- oracle 11g統計資訊收集Oracle
- Oracle 11g 修改表級別的自動收集統計資訊比率Oracle
- Oracle 11g系統自動收集統計資訊的一些知識Oracle
- Oracle11g 統計資訊-----統計資訊自動收集任務Oracle
- Oracle11g 統計資訊——統計資訊自動收集任務Oracle
- Oracle10g 統計資訊的自動收集Oracle
- ORACLE10g自動收集CBO統計資訊Oracle
- Oracle 統計資訊介紹Oracle
- Oracle 11g手工收集表統計資訊Oracle
- Oracle 11g 統計資訊收集指令碼Oracle指令碼
- Oracle的自動統計資訊不收集直方圖的資訊Oracle直方圖
- oracle 統計資訊過期判斷和自動收集Oracle
- [zt] Oracle10g 自動收集收集CBO統計資訊設定Oracle
- ORACLE 11G 自動收集Oracle
- 開啟oracle10g統計資訊自動收集功能Oracle
- Oracle收集統計資訊Oracle
- Oracle 統計資訊收集Oracle
- 收集oracle統計資訊Oracle
- ORACLE 收集統計資訊Oracle
- 雞肋 -- ORACLE10g自動收集CBO統計資訊(ZT)Oracle
- oracle10g如何啟用禁用自動統計資訊收集Oracle
- Oracle 11g新特性之收集多列統計資訊Oracle
- 關閉特定物件統計資訊自動收集物件
- 【統計資訊】Oracle常用的收集統計資訊方式Oracle
- 關閉及開啟oracle10g統計資訊自動收集功能Oracle
- 禁用11g的統計資料自動收集功能
- oracle統計資訊包--dbms_stats介紹Oracle
- Oracle中自動工作負載資訊庫(AWR)介紹Oracle負載
- oracle收集統計資訊job停止Oracle
- 關閉及開啟oracle10g統計資訊自動收集功能(轉)Oracle
- 關於ORACLE自動統計CBO統計資訊Oracle