理解ASM的Extent

Jet_Zhang發表於2017-04-14
ASM中分配空間的單位是AU,Extent包含1個或多個AU。

在11g之前,1個Extent對應1個AU。而從11.1.0開始,Oracle引入了Variable Sized Extents,ASM會根據檔案的大小,自動決定Extent的大小,具體演算法如下:
1、AU小於4MB的:
  • 頭20000個Extent(0-19999,20GB),Extent大小=1*AU
  • 之後的20000個Extent(20000-39999,20GB-40GB),Extent大小=4*AU
  • 再往後的Extent(40000+,40GB以上),Extent大小=16*AU
2、AU大於等於4MB的,並且RDBMS compatible為11.2.0.4及以上的,ASM會根據Application Block Size來計算Extent的大小
透過引入Variable Sized Extents,可以減少SGA的記憶體,並且提升效能。

我們來看看現實環境中Extent分配情況:
1、小資料檔案
FILE_NAME                                                                     SIZE(MB)
--------------------------------------------------------------------------- ----------
+DATA01/HERA/DATAFILE/system.258.940635333                                         790

該資料檔案只有790MB,按上述的分配規則,該資料檔案的Extent=1*AU
09:31:28 nolog> select distinct size_kffxp from x$kffxp where number_kffxp = 258;


SIZE_KFFXP
----------
         1

上述資訊顯示,確實只有1AU這麼一種情況。

2、較大的資料檔案
FILE_NAME                                                                     SIZE(MB)
--------------------------------------------------------------------------- ----------
+DATA01/HERA/DATAFILE/test.363.941274405                                         24576

該資料檔案為24G,按上述的分配規則,該資料檔案的Extent有兩種情形:1AU和4AU
09:03:51 nolog> select distinct size_kffxp from x$kffxp where number_kffxp = 363;


SIZE_KFFXP
----------
         1
         4

上述資訊顯示,實際分配情況是符合分配規則的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13885898/viewspace-2137251/,如需轉載,請註明出處,否則將追究法律責任。

相關文章