数据字典管理(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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/81227/viewspace-690191/