【正文】
個(gè)參數(shù)應(yīng)該設(shè)置為大于等于2,默認(rèn)為2。TABLE39。,39。在表具有某個(gè)有代表性的值時(shí)收集統(tǒng)計(jì),然后鎖住統(tǒng)計(jì);由于夜間收集的統(tǒng)計(jì)未必適合于白天的負(fù)載,因此這些情況下使用手工收集比GATHER_STATS_JOB更有效。如果STATISTICS_LEVEL設(shè)置為BASIC禁用了監(jiān)控特征,自動(dòng)統(tǒng)計(jì)收集將不會(huì)檢測(cè)過(guò)期的統(tǒng)計(jì),此時(shí)需要手工收集。根據(jù)將優(yōu)化的SQL語(yǔ)句,優(yōu)化器可以選擇使用分區(qū)統(tǒng)計(jì)或全局統(tǒng)計(jì),對(duì)于大多數(shù)系統(tǒng)這兩種統(tǒng)計(jì)都是很重要的,Oracle推薦將GRANULARITY設(shè)置為AUTO同時(shí)收集全部信息。如果在使用DBMS_STATS的時(shí)候需要?jiǎng)h除表中的所有行,需要使用TRUNCATE代替drop/create,否則自動(dòng)統(tǒng)計(jì)收集特征使用的負(fù)載信息以及RESTORE_*_STATS使用的保存的統(tǒng)計(jì)歷史將丟失。在OPTIONS參數(shù)設(shè)置為GATHER STALE or GATHER AUTO時(shí),DBMS_STATS收集過(guò)期統(tǒng)計(jì)的對(duì)象的統(tǒng)計(jì)。系統(tǒng)統(tǒng)計(jì)==========================系統(tǒng)統(tǒng)計(jì)描述系統(tǒng)硬件的特征,包括I/O和CPU。收集系統(tǒng)統(tǒng)計(jì)需要DBA權(quán)限。Maxthr:最大I/O吞吐量;通過(guò)設(shè)置gathering_mode =NOWORKLOAD,INTERVAL, START|STOP或手工設(shè)置統(tǒng)計(jì);單位Bytes/sec.Slavethr:服務(wù)I/O吞吐量是平均并行服務(wù)I/O吞吐量;通過(guò)設(shè)置gathering_mode = INTERVAL,START|STOP或手工設(shè)置統(tǒng)計(jì);Bytes/sec.Sreadtim:隨機(jī)讀取單塊的平均時(shí)間;通過(guò)設(shè)置gathering_mode =INTERVAL,START|STOP或手工設(shè)置統(tǒng)計(jì);單位為ms。Oracle提供兩個(gè)選項(xiàng)收集統(tǒng)計(jì):負(fù)載統(tǒng)計(jì);非負(fù)載統(tǒng)計(jì)。非負(fù)載統(tǒng)計(jì)==========================()收集非負(fù)載統(tǒng)計(jì),運(yùn)行非負(fù)載統(tǒng)計(jì)時(shí)會(huì)有一定的I/O負(fù)載。默認(rèn)情況下,如果STATISTICS_LEVEL為T(mén)YPICAL/ALL,自動(dòng)刷新啟用;否則需要使用PURGE_STAT手工刷新。轉(zhuǎn)儲(chǔ)的限制:1 不能轉(zhuǎn)儲(chǔ)用戶(hù)定義統(tǒng)計(jì);2 如果使用了ANALYZE收集,舊的統(tǒng)計(jì)將無(wú)法轉(zhuǎn)儲(chǔ)。鎖住表和模式的統(tǒng)計(jì)==========================一旦統(tǒng)計(jì)被鎖住,將無(wú)法在更改這些統(tǒng)計(jì)直到被解鎖。164。動(dòng)態(tài)取樣的工作機(jī)制主要的性能特征是編譯時(shí),Oracle在編譯時(shí)決定一個(gè)查詢(xún)是否能通過(guò)取樣獲益,如果可以,將用遞歸SQL隨機(jī)掃描一小部分表塊,然后應(yīng)用相關(guān)的單表謂詞評(píng)價(jià)謂詞選擇性。SCOTT39。for all columns size repeat39。gather empty——只分析目前還沒(méi)有統(tǒng)計(jì)的表。注意,無(wú)論gather stale還是gather auto,都要求進(jìn)行監(jiān)視。SCOTT39。begin(ownname = 39。 estimate_percent = ,estimate_percent選項(xiàng)以下estimate_percent參數(shù)是一種比較新的設(shè)計(jì),它允許Oracle的dbms_stats在收集統(tǒng)計(jì)數(shù)據(jù)時(shí),自動(dòng)估計(jì)要采樣的一個(gè)segment的最佳百分比:estimate_percent = 要驗(yàn)證自動(dòng)統(tǒng)計(jì)采樣的準(zhǔn)確性,你可檢視dba_tables sample_size列。method_opt參數(shù)也適合用于判斷哪些列需要直方圖(histograms)。但在現(xiàn)實(shí)世界中,出現(xiàn)這種情況的機(jī)率相當(dāng)小。在method_opt子句中,還有一些重要的新選項(xiàng),包括skewonly,repeat和auto:method_opt=39。method_opt=39。例如,在一個(gè)索引中,假定有一個(gè)列在50%的行中,那么為了檢索這些行,全表掃描的速度會(huì)快于索引掃描。for all columns size skewonly39。end。************************************************************** REPEAT OPTION Only reanalyze histograms for indexes that have histograms Following the initial analysis, the weekly analysis job will use the “repeat” option. The repeat option tells dbms_stats that no indexes have changed, and it will only reanalyze histograms for indexes that have histograms.**************************************************************begin(ownname = 39。 estimate_percent = ,Oracle中關(guān)于表的統(tǒng)計(jì)信息是在數(shù)據(jù)字典中的,可以下SQL查詢(xún)到:SELECT Table_Name,Num_Rows,Blocks,Empty_Blocks,Avg_Space,Chain_Cnt,Avg_Row_Len,Sample_Size,Last_AnalyzedFROM Dba_Tables WHERE wner = 39。a) 可以并行進(jìn)行,對(duì)多個(gè)用戶(hù),多個(gè)Tableb) 可以得到整個(gè)分區(qū)表的數(shù)據(jù)和單個(gè)分區(qū)的數(shù)據(jù)。 to_estimate_percent_type(get_param(39。), degree number default to_degree_type(get_param(39。), cascade boolean default to_cascade_type(get_param(39。)), stattype varchar2 default 39。 R .stattabowner39。 , , Degree = ,。GATHER_STATS_JOB39。 LAST_START_DATE AUTO_SPACE_ADVISOR_JOB 30OCT08 PM +08:00GATHER_STATS_JOB所以建議最好關(guān)閉這個(gè)自動(dòng)統(tǒng)計(jì)信息收集功能:關(guān)閉及開(kāi)啟自動(dòng)搜集功能,有兩種方法,分別如下:方法一:exec (39。39。查看統(tǒng)計(jì)表/索引/列上的統(tǒng)計(jì)DBA_TABLESDBA_OBJECT_TABLESDBA_TAB_STATISTICSDBA_TAB_COL_STATISTICSDBA_TAB_HISTOGRAMSDBA_INDEXESDBA_IND_STATISTICSDBA_CLUSTERSDBA_TAB_PARTITIONSDBA_TAB_SUBPARTITIONSDBA_IND_PARTITIONSDBA_IND_SUBPARTITIONSDBA_PART_COL_STATISTICSDBA_PART_HISTOGRAMSDBA_SUBPART_COL_STATISTICSDBA_SUBPART_HISTOGRAMS直方圖統(tǒng)計(jì)直方圖的類(lèi)型存儲(chǔ)在*TAB_COL_STATISTICS視圖的HISTOGRAM列上。APPLSYS39。 is the module (schema) that requires new statistics.If only a few tables require to have their statistics gathered, use the corresponding concurrent program to gather stats by table, or execute equivalent FND_STATS procedure from SQL*Plus:SQL exec (39。)。MRP_FORECAST_DATES39。WF_ITEM_ACTIVITY_STATUSES39。, tabname = 39。end。下面通過(guò)一個(gè)復(fù)合分區(qū)表來(lái)說(shuō)明一些常見(jiàn)的和常見(jiàn)的統(tǒng)計(jì)信息。 = 39。,FOR ALL COLUMNS SIZE 1039。 granularityEND。 50705TEST39。 NUM_DISTINCT 25 .。 0TEST39。 cascadeALL39。 = FALSE, block_sample = 39。,表已創(chuàng)建。DEFAULT39。, (ownname = 39。APPLSYS39。MRP39。,39。 Where 39。SYS39。方法二:alter system set _optimizer_autostats_job=false scope=spfile。)。 30OCT08 PM +08:00然而這個(gè)自動(dòng)化功能已經(jīng)影響了很多系統(tǒng)的正常運(yùn)行,晚上10點(diǎn)對(duì)于大部分生產(chǎn)系統(tǒng)也并非空閑時(shí)段。JOB_NAME然后確定優(yōu)先級(jí),再開(kāi)始進(jìn)行統(tǒng)計(jì)信息。10g自動(dòng)收集統(tǒng)計(jì)信息從10g開(kāi)始,Oracle在建庫(kù)后就默認(rèn)創(chuàng)建了一個(gè)名為GATHER_STATS_JOB的定時(shí)任務(wù),用于自動(dòng)收集CBO的統(tǒng)計(jì)信息。 No_Invalidate = FALSE)。 Estimate_Percent = 10, IndName = 39。GATHER_INDEX_STATS==========================BEGIN (OwnName = 39。 method_opt = 39。 tabname = 39。 .granularity:Granularity of statistics to collect ,only pertinent if the table is partitioned.cascade: :for all columns:統(tǒng)計(jì)所有列的histograms.for all indexed columns:統(tǒng)計(jì)所有indexed列的histograms.for all hidden columns:統(tǒng)計(jì)你看不到列的histogramsfor columns list SIZE N | REPEAT | AUTO | SKEWONLY: force boolean default FALSE)。, no_invalidate boolean default to_no_invalidate_type(get_param(39。 statown varchar2 default null, stattab varchar2 default null, statid varchar2 default null,)), granularity varchar2 default get_param(39。)), method_opt varchar2 default get_param(39。 block_sample boolean default FALSE,)), estimate_percent number default partname varchar2 default null, tabname varchar2, (ownname varchar2,c) DBMS_STATS 默認(rèn)不對(duì)索引進(jìn)行Analyze,因?yàn)槟J(rèn)Cascade