在不影響Oracle生產(chǎn)庫性能情況下評估整庫大小_第1頁
在不影響Oracle生產(chǎn)庫性能情況下評估整庫大小_第2頁
在不影響Oracle生產(chǎn)庫性能情況下評估整庫大小_第3頁
在不影響Oracle生產(chǎn)庫性能情況下評估整庫大小_第4頁
在不影響Oracle生產(chǎn)庫性能情況下評估整庫大小_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

在不影響Oracle生產(chǎn)庫性能情況下,評估整庫大小

最近碰到一個小問題:一TB級的Oracle生產(chǎn)庫,因為要走數(shù)據(jù)遷移,需要先行評估整個庫的遷移數(shù)據(jù)量大小,但又不得影響生產(chǎn)庫運行性能。如何搞?大家都知道,expdp數(shù)據(jù)泵有兩個很好用的參數(shù)ESTIMATE和ESTIMATE_ONLY,此兩個參數(shù)可以保證在不真正發(fā)起邏輯備份的情況下評估整個遷移生產(chǎn)庫的大小。今天念叨下這個小問題。這里使用$expdp-help先看expdp的ESTIMATE和ESTIMATE_ONLY兩個參數(shù)的介紹:ESTIMATECalculatejobestimates.Validkeywordvaluesare:[BLOCKS]andSTATISTICS.

ESTIMATE_ONLYCalculatejobestimateswithoutperformingtheexport.ESTIMATE默認:blocks指定計算每張表使用磁盤空間的方法ESTIMATE=[BLOCKS|STATISTICS]1.BLOCKS-通過塊數(shù)和塊大小計算

2.STATISTICS-每張表的統(tǒng)計信息計算Expdp可計算導出數(shù)據(jù)大小容量,一種是通過數(shù)據(jù)塊數(shù)量、一種是通過統(tǒng)計信息中記錄的內(nèi)容估算。通過expdp的參數(shù)ESTIMATE_ONLY和ESTIMATE來評估導出的性能,ESTIMATE_ONLY僅作評估不會導出數(shù)據(jù),通過ESTIMATE參數(shù)指定statistics和blocks參數(shù)來測試兩者的差異。以下是Oracle中的測試數(shù)據(jù)輸出,在此版本中,我們來看下ESTIMATE的statistics和blocks兩個參數(shù)各自評估大小和用時。兩條命令如下:$expdp

\'/

as

sysdba\'

ESTIMATE_ONLY=y

FULL=y

ESTIMATE=blocks$expdp\'/assysdba\'ESTIMATE_ONLY=yFULL=yESTIMATE=statistics具體執(zhí)行如下:如上可以看出,使用ESTIMATE=blocks評估出來的大小為2599.GB,耗時:00:02:50;接下來再看ESTIMATE=statistics方式。命令如下:如上,使用ESTIMATE=STATISTICS評估出來的大小為2132.GB,耗時:00:04:40;可以看出,兩種方式統(tǒng)計的大小不一樣,為啥?分析推斷:ESTIMATE的默認方式是blocks。個人理解為:Oracle的塊大小默認為8KB,直接對庫使用的塊數(shù)計算使用量,簡單明了,但考慮到塊有高水位線、碎片等因素,故統(tǒng)計不精確。而STATISTICS方式因計算的是對每張表的實際使用情況,故更為精確。但STATISTICS的方式也非很精確,原因為:1.該方式只是對表做統(tǒng)計,沒有對索引、列、系統(tǒng)做統(tǒng)計,2.一個表中被修改的行數(shù)超過stale_percent(缺省值10%)時才會認為這個表的統(tǒng)計數(shù)據(jù)過時,需要重新搜集。注意:如果壓縮了表,那么使用ESTIMATE=BLOCKS計算的值時不準確的,這個時候就應(yīng)該使用ESTIMATE=STATISTICS。推薦:使用ESTIMATE的默認方式blocks進行估算,原因很簡單,估值按最大值估算申請空間更靠譜。為了加深理解,這里介紹下Oracle統(tǒng)計信息收集大家都知道,Oracle較優(yōu)執(zhí)行計劃的挑選是基于CBO(costbasedoptimized)判斷,而CBO對哪個執(zhí)行計劃較優(yōu)的判斷是基于統(tǒng)計信息。優(yōu)化器統(tǒng)計范圍包含:1.表統(tǒng)計:行數(shù),塊數(shù),行平均長度;all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN;2.列統(tǒng)計:列中唯一值的數(shù)量(NDV),NULL值的數(shù)量,數(shù)據(jù)分布;DBA_TAB_COLUMNS:NUM_DISTINCT,NUM_NULLS,HISTOGRAM;3.索引統(tǒng)計:葉塊數(shù)量,等級,聚簇因子;DBA_INDEXES:LEAF_BLOCKS,CLUSTERING_FACTOR,BLEVEL;4.系統(tǒng)統(tǒng)計:I/O性能與使用率;CPU性能與使用率;存儲在aux_stats$中,需要使用dbms_stats收集,I/O統(tǒng)計在X$KCFIO中;查詢表上一次收集統(tǒng)計信息的時間:SQL>selectowner,table_name,last_analyzedfromdba_tableswhereowner='SCOTT';Oracle中如何搜集統(tǒng)計信息?主要有2種方法:方式1:analyze語句analyze可以用來收集表,索引,列以及系統(tǒng)的統(tǒng)計信息和直方圖,以下為一些典型用法:從語法可以看出,只有指定列統(tǒng)計信息收集時,才會收集相關(guān)列的直方圖,此外收集直方圖時for子句還可以加size子句,size的取值范圍是1-254,默認值是75,表示直方圖的buckets的最大數(shù)目。而dbms_stats包的size選擇則有:數(shù)字|auto|repeat|skewonly選項,但analyze的size只能是數(shù)字。關(guān)于直方圖介紹:Ahistogramisaspecialtypeofcolumnstatisticthatprovidesmoredetailedinformationaboutthedatadistributioninatablecolumn.Ahistogramsortsvaluesinto"buckets,"asyoumightsortcoinsintobuckets.直方圖就是一種特殊的列統(tǒng)計信息,只有列才有直方圖。用于查看analyze后統(tǒng)計信息的SQL;需要注意的一點是fortable選項并不只收集表統(tǒng)計信息,將列和索引的統(tǒng)計信息一塊收集了。oracle會監(jiān)控所有表的DML活動并在SGA中進行記錄。監(jiān)控的信息會定時的刷新到磁盤且可以通過*_tab_modifications視圖來查看??烧{(diào)用dbms_stats.flush_database_monitoring_info過程來手動刷新這些數(shù)據(jù)。如果想在查詢時得到最新信息(在所有統(tǒng)計數(shù)據(jù)收集之前內(nèi)部監(jiān)控數(shù)據(jù)會被刷新)。可通過查詢user_tab_statistics視圖中的stale_stats列來查看哪個表的統(tǒng)計數(shù)據(jù)過時。表的stale_stats被設(shè)置為NO,統(tǒng)計數(shù)據(jù)是最新的。表的stale_stats被設(shè)置為YES,統(tǒng)計數(shù)據(jù)是過時的,表的stale_stats沒有被設(shè)置說明丟失統(tǒng)計數(shù)據(jù)。方式2:調(diào)用dbms_stats包dbms_stats中負責收集統(tǒng)計信息的幾個存儲過程:GATHER_DATABASE_STATS--Thisproceduregathersstatisticsforallobjectsinthedatabase.GATHER_DICTIONARY_STATS--Thisproceduregathersstatisticsfordictionaryschemas'SYS','SYSTEM'andschemasofRDBMScomponents.GATHER_FIXED_OBJECTS_STATS--Thisproceduregathersstatisticsforallfixedobjects(dynamicperformancetables).GATHER_INDEX_STATS--Thisproceduregathersindexstatistics.Itattemptstoparallelizeasmuchoftheworkaspossible.Restrictionsaredescribedintheindividualparameters.Thisoperationwillnotparallelizewithcertaintypesofindexes,includingclusterindexes,domainindexes,andbitmapjoinindexes.Thegranularityandno_invalidateargumentsarenotrelevanttothesetypesofindexes.GATHER_SCHEMA_STATS--Thisproceduregathersstatisticsforallobjectsinaschema.GATHER_SYSTEM_STATS--Thisproceduregatherssystemstatistics.GATHER_TABLE_STATS--Thisproceduregatherstableandcolumn(andindex)statistics.Itattemptstoparallelizeasmuchoftheworkaspossible,buttherearesomerestrictionsasdescribedintheindividualparameters.具體使用案例:1.EXEC

DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT',estimate_percent=>80,method_opt=>'FORALLCOLUMNSSIZEAUTO',degree=>4,cascade=>TRUE);2.EXEC

DBMS_STATS.GATHER_TABLE_STATS('SCOTT','EMP',estimate_percent=>80,method_opt=>'FORALLCOLUMNSSIZEAUTO',degree=>4,cascade=>TRUE);3.EXEC

DBMS_STATS.GATHER_INDEX_STATS('SCOTT','PK_EMP',estimate_percent=>80,degree=>4);dbms_stats與analyze的區(qū)別:1.analyze收集系統(tǒng)內(nèi)部對象會報錯,而dbms_stats不會;2.analyze不能正確的收集分區(qū)表的統(tǒng)計信息,而dbms_stats可以通過指定粒度來實現(xiàn)(granularity)。3.analyze不能并行的收集統(tǒng)計信息,而dbms_stats可以(可以加上degree=>4來實現(xiàn)并行度為4的收集)。4.Oracle推薦使用dbms_stats來收集統(tǒng)計信息,analyze將會被逐漸拋棄?!究偨Y(jié)】1.本文介紹了在不影響生產(chǎn)庫運行性能的前提下。使用expdp數(shù)據(jù)泵參數(shù)ESTIMATE和ESTIMATE_ONLY,在不真正發(fā)起邏輯備份的情況下,可以評估整個遷移生產(chǎn)庫大小的用法和差別及分析;2.同時介紹了Oracle的CBO,統(tǒng)計信息、直方圖,如何收集統(tǒng)計的兩種方法調(diào)用dbms_stats包和analyze兩種方式,推薦使用調(diào)用dbms_stats包;3.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論