Oracle对表空间的管理有两种管理方式:本地管理及数据字典管理。
1)9i 以前通过dictionary管理,性能不好,容易产生碎片,通过uet$ 和 fet$ 管理
2)9i以后采用local 管理,在表空间上建立bitmap ,用0,1来表示free extents,oracle 10g 默认本地管理
1、本地管理的表空间
建立本地管理表空间:
04:52:18 SQL> CREATE SMALLFILE TABLESPACE "TEST"
DATAFILE '/u01/app/oracle/oradata/test1/test01.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M LOGGING
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO ;
本地管理对extent  size 分配有两种管理方式:autoallocate (自动分配,默认),uniform size 统一大小
1)UNIFORM 使用相同的区尺寸管理表空间,区默认尺寸为1M
04:52:18 SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
6 rows selected.
04:52:38 SQL> create tablespace users01
04:53:01   2   datafile '/disk1/oradata/orcl/user01.dbf' size 10m uniform size 128k;
Tablespace created.
04:53:49 SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
USERS01
(2)使用AUTOALLOCATE 选项用于指定区尺寸有系统自动分配
04:56:08 SQL> create tablespace users02
04:56:16   2   datafile '/disk2/oradata/orcl/user01.dbf' size 10m autoallocate;
Tablespace created.
04:56:25 SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
USERS01
USERS02
8 rows selected.
04:52:42 SQL> create tablespace cuug
04:52:45   2    datafile '/u01/app/oracle/oradata/test/cuug01.dbf' size 10m
04:53:03   3   extent management local uniform size 128k;
Tablespace created.
04:53:39 SQL> select TABLESPACE_NAME,INITIAL_EXTENT/1024 "extent",next_extent/1024 ,EXTENT_MANAGEMENT, ALLOCATION_TYPE
 from dba_tablespaces;
TABLESPACE_NAME                    extent NEXT_EXTENT/1024 EXTENT_MAN            ALLOCATIO
------------------------------ ---------- ---------------- ----------            ---------
SYSTEM                                 16               16 DICTIONARY USER
RTBS                                   64                  LOCAL(默认大小)      SYSTEM
SYSAUX                                 64                  LOCAL                  SYSTEM
TEMP                                 1024             1024 LOCAL                  UNIFORM
USERS                                  64                  LOCAL                  SYSTEM
TEST                                   64                  LOCAL                  SYSTEM
CUUG                                  128              128 LOCAL(指定大小)      UNIFORM
7 rows selected.
2、字典管理表空间:
数据字典管理表空间通过FET$ (空闲extent管理),UET$(已经使用的extent 进行extent管理)
SQL> desc fet$
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
TS#                                       NOT NULL NUMBER
FILE#                                     NOT NULL NUMBER
BLOCK#                                    NOT NULL NUMBER
LENGTH                                    NOT NULL NUMBER
SQL> desc uet$
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
SEGFILE#                                  NOT NULL NUMBER
SEGBLOCK#                                 NOT NULL NUMBER
EXT#                                      NOT NULL NUMBER
TS#                                       NOT NULL NUMBER
FILE#                                     NOT NULL NUMBER
BLOCK#                                    NOT NULL NUMBER
LENGTH                                    NOT NULL NUMBER
SQL> select * from fet$;
no rows selected
SQL> select * from uet$;
no rows selected
建立数据字典管理表空间:
如果其他表空间采用字典管理模式,system表空间必须采用字典管理模式
04:56:48 SQL> create tablespace users03
05:01:03   2   datafile '/disk3/oradata/orcl/user03.dbf'
05:01:20   3  size 10m extent management dictionary
05:01:44   4  default storage(
05:01:58   5    initial 20k
next 20k
05:02:08   6    minextents 2 maxextents 50
05:02:27   7    pctincrease 50);
create tablespace users03
*
ERROR at line 1:
ORA-12913: Cannot create dictionary managed tablespace
——如果system表空间是数据字典管理,其他表空间可以是数据字典管理或local管理(默认)
——如果system是local 管理,其余的表空间只能是local 管理。
如上所示:
1)extent   management  dictionary 用于指定空间管理采用字典管理模式
2)default   storage 用于指定模式存储参数
3)initial  用于指定为段所分配的第一个区的尺寸
4) next 指定段所分配的第二个区的尺寸。
5)Minextents 用于指定为段所分配的最小区个数,maxextents用于指定段可占用的最大区个数。
Pctincrease  指定从第三个区开始每个区比前一个区尺寸所增长的百分比。

CUUG

更多oracle视频教程请点击:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6