Oracle 11g表空间——创建和扩展(永久)表空间

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle 11g表空间——创建和扩展(永久)表空间

本文内容

创建(永久)表空间

查看表空间

扩展表空间

创建(永久)表空间

Oracle 按照区和段空间进行管理表空间。

区管理方式 - 针对区的分配方式的不同,有两种方式:字典管理方式

(dictionary-managed tablespace,DMT)和本地管理方式(local-managed tablespace,LMT)。Oracle 10g 开始强烈建议使用 LMT 方式。从 Oracle 9i 开始,创建表空间时默认使用 LMT。

其中,LMT 区的分配方式:

统一(UNIFORM)- 统一分配。指定表空间中所有区的大小都相同。默认值是 1MB。自动(AUTOALLOCATE 或 SYSTEM)- 自动分配。指定有 Oracle 系统来自动管理区的大小。这是默认设置。

段管理方式– LMT 方式,除了可以指定区的分配方式外,还可以指定段的管理方式。段空间管理方式主要是指 Oracle 用来管理段中已用数据块和空闲数据块的机制。分为两种:

手动(MANUAL)- Oracle 将使用空闲列表(free list)管理段的已用数据块和空闲数据块。这是传统的段空间管理方式,为了与以前的版本兼容。

自动(AUTO)- Oracle 将使用位图(bitmap)来管理段的已用数据块和空闲数据块。通过位图中单元的取值判断段中的数据块是否可用。

字典管理方式没有段管理。

下面示例演示用本地管理方式创建表空间。这是 Oracle 推荐的方式。

示例 1:使用 AUTOALLOCATE 区分配方式。创建表空间 mytbs01,数据文件是

D:\oracledata\mytbs01_1.dbf,大小为 2M,并指定区分配方式为 AUTOALLOCATE。create tablespace mytbs01

datafile 'D:\oracledata\mytbs01_1.dbf' size 2M

autoallocate;

示例 2:使用 UNIFORM 区分配方式。创建表空间 mytbs02,数据文件是

D:\oracledata\mytbs02_1.dbf 和 D:\oracledata\mytbs02_2.dbf,有两个文件,

大小分别为 1M 和 2M,并指定区分配方式为 UNIFORM。

create tablespace mytbs02

datafile 'D:\oracledata\mytbs02_1.dbf' size

1M,'D:\oracledata\mytbs02_2.dbf' size 2M uniform size 128k;

示例 3:使用数据文件扩展方式。创建表空间 mytbs03,并指定数据文件扩展方式

为自动增长,每次 1M,最大扩展到 11M。

create tablespace mytbs03

datafile 'D:\oracledata\mytbs03_1.dbf' size 1M

autoextend on next 2M maxsize 11M;

此时,就不能再指定 UNIFORM。

示例 4:使用 AUTO 段管理方式。创建表空间 mytbs04,区分配管理方式为 UNIFORM ,大小为默认值;用 segment space management 指定段管理方式。

create tablespace mytbs04

datafile 'D:\oracledata\mytbs04_1.dbf' size 3M reuse

uniform

segment space management auto;

查看表空间

可以通过下面 Oracle 系统表查看上面创建的表空间的相关信息。

dba_tablespaces - 数据库表空间管理信息。

dba_data_files - 数据库表空间文件管理信息。

dba_free_space - 数据库表空间文件使用信息。

示例 5:表空间使用情况,包括表空间名称、DBF 文件个数、总大小、剩余/占用大小等等。

select a.tablespace_name as "表空间名称",

c.pieces as "DBF文件个数",

a.totalspace || 'M' as "总大小",

b.freespace || 'M' as "剩余大小",

a.totalspace - nvl(

b.freespace, 0) || 'M' as "占用大小",

c.max_blocks as "最大块",

c.min_blocks as "最小块",

c.avg_blocks as "平均块",

c.sum_blocks as "块总数"

from (select t1.tablespace_name, sum(t1.bytes) / 1024 / 1024 as totalspace

from dba_data_files t1

group by t1.tablespace_name) a,

(select t2.tablespace_name, sum(t2.bytes) / 1024 / 1024 as freespace

from dba_free_space t2

group by t2.tablespace_name) b,

(select t.tablespace_name,

count(*) as pieces,

max(t.blocks) as max_blocks,

min(t.blocks) as min_blocks,

avg(t.blocks) as avg_blocks,

sum(t.blocks) as sum_blocks

from dba_free_space t

group by t.tablespace_name) c

where a.tablespace_name = b.tablespace_name

and b.tablespace_name = c.tablespace_name;

示例 6:表空间信息参看,包括表空间名称、路径、类型、管理方式、区管理方式、段管理方式和是否自动增长。

select t1.tablespace_name as "表空间名称",

t2.file_name as "文件名",

t1.contents as "类型",

t1.extent_management as "管理方式",

t1.allocation_type as "区管理方式",

t1.segment_space_management as "段管理方式",

t2.autoextensible as "是否自动扩展",

t1.status as "是否联机"

相关文档
最新文档