簡要分析估算oracle表的大小

 查詢oracle表的大小有幾種方法,筆者簡要分析下他們的異同

環境,newsadmin.newlog,原本有244,459,078條記錄,delete後,現在只有51,109,919記錄。

一、segments

 

select bytes/1024/1024/1024 from dba_segments where segment_name='NEWLOG';

結果是27.26GB這個結果和

select sum(blokcs)*8/1024/1024 from dba_segments where segment_name='NEWLOG';
是完全一致的。
 
這個結果就是我們說的,該表在tablespace中實際佔的大小。
 

二、show_space

並非oracle自帶的一個procedure,而是thomas寫的一個腳本,非常好用,可以前往

http://www.itpub.net/thread-239697-1-1.html

下載安裝

 

begin
sys.show_space(p_segname => 'NEWLOG',p_owner => 'NEWSADMIN');
end;

這樣可以看到一個分析結果

 

Segments................................NEWLOG
Segments Type...........................TABLE
Partition Name..........................
Unformatted Blocks .....................0
FS1 Blocks (0-25)  .....................5
FS2 Blocks (25-50) .....................4336
FS3 Blocks (50-75) .....................12537
FS4 Blocks (75-100).....................2834583
Full Blocks        .....................718526
Total Blocks............................3574016
Total Bytes.............................29278339072
Unused Blocks...........................0
Unused Bytes............................0
Last Used Ext FileId....................16
Last Used Ext BlockId...................924672
Last Used Block.........................128
 
解釋下,FS1 Blocks (0-25)是指,空閒度爲0-25%的塊,所以從這裏可以看見75-100和full blocks佔得比例十分驚人,這就說明HWM非常高。我們可以粗略計算一下:
(2834583*2+12537*4+4336*6+5*8)/1024/1024=5.48GB,這是估算的實際表的大小。而上面顯示的Total Bytes.............................29278339072就是之前我們查詢到的,BLOCKS*db_block_size的大小。
筆者用exp不帶索引不帶觸發器的導出,大小爲5.75GB和預估基本一致。
C:\Documents and Settings\yantaiwanhua15>exp user/password@remote file=d:\1.dmp tables=newsadmin.newlog triggers=n indexes=n

三、expdp

大家都知道expdp有個功能就是導出前預估大小,筆者博客之前有介紹過

http://gundam.blog.51cto.com/1845787/947953

5. ESTIMATE
指定估算被導出表所佔用磁盤空間分方法.默認值是BLOCKS
ESTIMATE={BLOCKS | STATISTICS}
設置爲BLOCKS時,oracle會按照目標對象所佔用的數據塊個數乘以數據塊尺寸估算對象佔用的空間,設置爲STATISTICS時,根據最近統計值估算對象佔用空間
Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dump DUMPFILE=a.dump

第一種是根據blocks計算,就和前文描述的一致,是一種在HWM較低的情況下相對準確的方法。STATISTICS是根據表的統計信息進行估計,相對來說準確多。

但是使用expdp備份時,儘量不要使用estimate參數,因爲這個額外操作是非常消耗資源的。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章