表空間的資料字典管理

cow977發表於2011-03-22
資料字典管理(Dictionary Management Tablespace,DMT)採用資料字典表FET$和UET$來管理extent的擴張和收縮。
 
desc FET$
Name              Null?            Type
------------------------------------------------------------
TS#                  Not Null       Number     表空間號
FILE#               Not Null       Number     資料檔案號
BLOCK#         Not Null        Number    資料塊號
LENGTH         Not Null        Number    長度
 
desc UET$
Name              Null?            Type
------------------------------------------------------------
SEGFILE#      Not Null        Number   
SEGBLOCK#  Not Null        Number   
EXT#                Not Null        Number    EXTENT編號
TS#                  Not Null       Number     表空間號
FILE#               Not Null       Number     資料檔案號
BLOCK#         Not Null        Number    資料塊號
LENGTH         Not Null        Number    長度
 
 
 
DMT存在的問題:
當使用者程式對錶進行DML操作,從而需要空間時,Oracle會產生很多的遞迴SQL,透過這些遞迴SQL完成對FET$和UET$的更新。
因為要對FET$和UET$這兩個表之間插入和刪除記錄,因此需要產生很多的事務,事務都會引起鎖定。如果多個程式同時要求擴張extent時,大家都會去試圖更新FET$裡的相同記錄,於是引起鎖定等待。
因為產生事務,所以會產生undo和redo。
SMON程式要定期掃描FET$表,對其中相鄰的可用空間進行合併。這會消耗一定的資源,當FET$中記錄數很多的時候,資源消耗尤其嚴重。

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

相關文章