字典管理和本地管理的表空间

Expert Oracle Database Architecture 学习笔记

字典管理和本地管理的表空间

 

在Oracle8.1.5之前,表空间中管理区段的分配只有一种方法:字典管理的表空间(dictionary-managed tablespace),这种情况下,需要执行递归SQL来得到更多空间,而且对字典的更新必须是串行的,他们不可能同时进行,开销会很大,所以要尽量避免。

在Oracle的早期版本中,这种空间管理问题(递归SQL开销)在“临时表空间”中最常见。空间会频繁地分配和撤销,这些操作必须串行执行,这就大大削弱了并发行,而增加了等待时间。

在7.3版本中,Oracle引入了一个真正的临时表空间(true temporary tablespace)概念,它的管理完全不同,当有人需要临时空间时,Oracle会在内存中的数据结构里查找空间,而不是执行代价昂贵的递归SQL。

在Oracle8.1.5之后,引入了本地管理表空间(locally-managed tablespace)的概念,与Oracle7.3中管理临时表空间的方法一样,本地管理表空间使用每个数据文件中存储的一个位图来管理区段,这样系统只需要在表空间级串行执行一个速度很快的置位操作,而不需要在数据库级串行完成耗时的递归SQl。本地管理的表空间还有另外一些很好的特性,如可以保证区段的大小统一。

确定某个表空间是字典管理或者本地管理:
SQL> select tablespace_name, extent_management from dba_tablespaces;

TABLESPACE_NAME                EXTENT_MAN
------------------------------ ----------
SYSTEM                         LOCAL
UNDOTBS1                       LOCAL
TEMP                           LOCAL
CWMLITE                        LOCAL
DRSYS                          LOCAL
EXAMPLE                        LOCAL
INDX                           LOCAL
ODM                            LOCAL
TOOLS                          LOCAL
USERS                          LOCAL
XDB                            LOCAL

已选择11行。

你可能感兴趣的:(表空间)