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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [統計資訊系列7] Oracle 11g的自動統計資訊收集Oracle
- Oracle 11g系統自動收集統計資訊的一些知識Oracle
- Oracle 統計資訊介紹Oracle
- Oracle收集統計資訊Oracle
- 手動收集——收集統計資訊
- 【統計資訊】Oracle常用的收集統計資訊方式Oracle
- 啟用與禁用統計資訊自動收集
- oracle 統計資訊檢視與收集Oracle
- Oracle統計資訊的收集和維護Oracle
- Oracle運維指令碼-收集統計資訊Oracle運維指令碼
- MYTFA(MYSQL 診斷資訊收集工具)介紹MySql
- 最佳實踐:解讀GaussDB(DWS) 統計資訊自動收集方案
- 收集統計資訊方案
- ORACLE19c新特性-實時統計資訊收集Oracle
- 【統計資訊】Oracle統計資訊Oracle
- 收集全庫統計資訊
- 【TUNE_ORACLE】定製化收集統計資訊SQL參考OracleSQL
- 微課sql最佳化(3)、統計資訊收集(2)-如何收集統計資訊SQL
- Oracle 11g dg broker自動failoverOracleAI
- Oracle資料庫審計功能介紹Oracle資料庫
- 6 收集資料庫統計資訊資料庫
- oracle 11g自動記憶體管理Oracle記憶體
- ORACLE表統計資訊與列統計資訊、索引統計資訊Oracle索引
- oracle 11g 系統審計功能Oracle
- 【TABLE】Oracle表資訊收集指令碼Oracle指令碼
- Oracle 11g RAC自動打GI PSU補丁Oracle
- 修改oracle 的統計資訊Oracle
- 微課sql最佳化(8)、統計資訊收集(6)-統計資訊查詢SQL
- oracle 11g建立基線詳細資訊Oracle
- MySQL InnoDB儲存引擎更新Cardinality統計資訊的策略介紹MySql儲存引擎
- 【SCRIPT】Oracle資料庫基本資訊收集指令碼Oracle資料庫指令碼
- 【Oracle】Oracle logminer功能介紹Oracle
- ORACLE OWI介紹Oracle
- Oracle ADR介紹Oracle
- 【SQL】Oracle資料庫資料量及效能資訊收集SQLOracle資料庫
- 11G oracle資料庫重新啟動crsOracle資料庫
- Sqlserver關於統計資訊自動建立自動更新的知識點SQLServer
- Bootstrap Blazor 元件介紹 Table (一)自動生成列功能介紹bootBlazor元件
- Win10系統關閉“小娜自動收集個人資訊”功能的方法Win10