表空间创建参数详解

  • 格式:doc
  • 大小:37.50 KB
  • 文档页数:5

表空间Tablespace是Oracle数据库逻辑结构中的一个层次。

创建管理表空间和对应的数据文件,是DBA的一项重要工作内容。

本篇从不同的表空间特性谈起,说明使用的参数特性。

下面是一个使用命令行创建表空间的实例。

SQL> create tablespace tradway datafile '/u01/oradata/WILSON/datafile/trad.dbf' size100mautoextend off extent management local uniform. size1msegment space management manual;
Tablespace created
对应数据字典的信息为:
SQL> select tablespace_name, extent_management,
allocation_type,SEGMENT_SPACE_MANAGEMENT from dba_tablespaces;
TABLESPACE_NAME EXTENT_MANAGEMENT ALLOCATION_TYPE
SEGMENT_SPACE_MANAGEMENT
------------------------------ ----------------- ---------------
------------------------
(篇幅原因,有省略……)
TRADWAY LOCAL UNIFORM MANUAL
9 rows selected
在使用命令行创建表空间Tablespace的过程中,包括几个方面的参数。

✓数据文件参数:包括表空间对应数据文件名称,初始大小和可变化规则;
✓Extent(分区)分配规则方案:表空间对segment对象进行增加空间分配的时候,使用的分配方法和策略;
✓Segment(段)对象管理方式:分为自动段对象管理或者手动段对象管理;
下面分别进行介绍:
1、数据文件Datafile参数
表空间是“表、段、区、块”Oracle四层逻辑结构中唯一与特定物理文件对应的层次。

一个表空间可以对应不同硬盘上的多个文件,而一个文件只能属于一个表空间。

在建立表空间的时候,都会生成至少一个数据文件作为表空间信息保存的地方。

如果在Create tablespace时没有进行指定datafile字句,那么Oracle会自动依据OMF的方式创建出一个数据文件。

指定数据文件的字句是使用datafile作为关键字,后面内容包括文件路径、初始大小、拓展方式和每次增加空间大小。

SQL> create tablespace test datafile 'd:\oradata\orcl\test.dbf' size10mautoextend on next1mmaxsize100m;
Tablespace created
✓size子句:指定生成数据文件的初始大小,默认值通常为100m。

对成熟的系统部署移植工作而言,通常是可以确定文件的固定大小。

避免经常性的文件膨胀,引起性能变化;
✓autoextend开关与next子句:文件大小变化开关是通过autoextend来实现的。

如果设置on,表示该文件允许进行动态拓展,文件写满之后就会以next 指定的大小进行拓展。

如果设置为off,则该文件不进行拓展;
✓next子句:当文件设置为可拓展时,next为每次进行拓展的步长。

如果数据文件是经常大批量的增加,设置一个较大的next值为好;
✓maxsize子句:文件大小上限;
2、extent分区分配方案
表空间Tablespace内部容纳的逻辑结构就是段segment对象。

段对象通常是和数据库各个Schema中的对象相关联。

表空间空间管理中一个重要方面就是将新的extent分配给segment对象。

一个segment会对应一个或者多个extent对象。

extent区就是连续的block块集合。

从Oracle发展历程看,extent分配方案有两个阶段。

首先出现的是Dictionary Mangage Tablespace,就是数据字典管理方式。

数据库中维护一个数据表,每次进行extent分配管理的时候,都要访问该数据表。

DMT代表了一个时代,同时也伴随着致命的缺陷。

数据库的一个重要指标就是并行度。

一旦出现并行瓶颈,就意味着系统架构存在缺陷。

DML就是这样的一个问题,当数据库表空间存在大量的分配请求时,该数据表容易形成瓶颈。

于是,DML就被一种新的分配方法Locally Mangage Tablespace(LMT)所取代。

目前的Oracle数据库,都是缺省使用LMT方法的。

LMT简单来说,就是利用位图表技术,将分配extent的方法和记录记录在数据文件的文件头上。

这样,不同文件的分配压力,就从一个数据表上分散到多个文件上。

目前的Oracle数据库,是可以同时支持LMT和DMT的。

但是,新系统一般都会使用LMT。

LMT策略下,有存在分配extent大小的问题。

每次进行extent分配的策略,有系统自动和统一大小uniform. size两种方法。

✓automatic allocation自动分配大小。

对每个分配extent的大小,由系统自动进行大小判定。

这种方式的优点是每次的extent大小比较灵活。

但是缺点也是很严重,就是引起大量的存储碎片。

✓uniform. size统一大小。

每次分配的extent的大小都是固定的,这样可以很大程度的避免碎片问题。

默认uniform. size大小是1M。

3、段segment管理策略
最后介绍表空间创建参数中的segment管理策略。

segment对应的通常是一个数据库留存对象信息,如数据段、索引段、回滚段。

Segment space management 对应的是对segment空间管理的策略,目前有auto和manual两种方式。

✓ASSM(auto)方式:ASSM是代表新趋势的技术,10g中对应的shrink space 功能,就是以ASSM技术作为基础,有效减低HWM,避免出现过多的空间浪费。

在过去需要设计的pctfree、pctlist等参数,也使用自动化方式进行管理;✓手工(Manual)方式:与自动ASSM相对应。

与ASSM不同在于每个segment 对象都能拥有独立的存储设置参数;
在segment管理策略上,目前一般都选择ASSM策略。

但并不意味着ASSM是万能的,还存在一些局限。

4、结论
表空间创建参数涉及多种方案子句,带有不同的含义和特点。