您的位置:首页 > 数据库 > Oracle

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

2012-07-15 16:48 639 查看

本文内容

创建永久表空间
查看表空间
扩展表空间
参考资料
 

创建永久表空间

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

区管理方式-针对区的分配方式的不同,有两种方式:字典管理方式(dictionary-managedtablespace,DMT)和本地管理方式(local-managedtablespace,LMT)。Oracle10g开始强烈建议使用LMT方式。从Oracle9i开始,创建表空间时默认使用LMT。

其中,LMT区的分配方式:

统一(UNIFORM)-统一分配。指定表空间中所有区的大小都相同。默认值是1MB。
自动(AUTOALLOCATESYSTEM)-自动分配。指定有Oracle系统来自动管理区的大小。这是默认设置。
段管理方式–LMT方式,除了可以指定区的分配方式外,还可以指定段的管理方式。段空间管理方式主要是指Oracle用来管理段中已用数据块和空闲数据块的机制。分为两种:

手动(MANUAL)-Oracle将使用空闲列表(freelist)管理段的已用数据块和空闲数据块。这是传统的段空间管理方式,为了与以前的版本兼容。
自动(AUTO)-Oracle将使用位图(bitmap)来管理段的已用数据块和空闲数据块。通过位图中单元的取值判断段中的数据块是否可用。
字典管理方式没有段管理。

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

示例1:使用AUTOALLOCATE区分配方式。创建表空间mytbs01,数据文件是D:\oracledata\mytbs01_1.dbf,大小为2M,并指定区分配方式为AUTOALLOCATE

[code][code]createtablespacemytbs01


datafile'D:\oracledata\mytbs01_1.dbf'size2M


autoallocate;

[/code]
[/code]

示例2:使用UNIFORM区分配方式。创建表空间mytbs02,数据文件是D:\oracledata\mytbs02_1.dbf和D:\oracledata\mytbs02_2.dbf,有两个文件,大小分别为1M和2M,并指定区分配方式为UNIFORM

[code]
[code]createtablespacemytbs02


datafile'D:\oracledata\mytbs02_1.dbf'size1M,


'D:\oracledata\mytbs02_2.dbf'size2M


uniformsize128k;

[/code]
[/code]

示例3:使用数据文件扩展方式。创建表空间mytbs03,并指定数据文件扩展方式为自动增长,每次1M,最大扩展到11M。

[code]
[code]createtablespacemytbs03


datafile'D:\oracledata\mytbs03_1.dbf'size1M


autoextendonnext2Mmaxsize11M;

[/code]
[/code]

此时,就不能再指定UNIFORM

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

[code]
[code]createtablespacemytbs04


datafile'D:\oracledata\mytbs04_1.dbf'size3Mreuse


uniform


segmentspacemanagementauto;

[/code]
[/code]

 

查看表空间

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

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

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

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

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

[code]
[code]selecta.tablespace_nameas"表空间名称",


c.piecesas"DBF文件个数",


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


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


a.totalspace-nvl(b.freespace,0)||'M'as"占用大小",


c.max_blocksas"最大块",


c.min_blocksas"最小块",


c.avg_blocksas"平均块",


c.sum_blocksas"块总数"


from(selectt1.tablespace_name,sum(t1.bytes)/1024/1024astotalspace


fromdba_data_filest1


groupbyt1.tablespace_name)a,


(selectt2.tablespace_name,sum(t2.bytes)/1024/1024asfreespace


fromdba_free_spacet2


groupbyt2.tablespace_name)b,


(selectt.tablespace_name,


count(*)aspieces,


max(t.blocks)asmax_blocks,


min(t.blocks)asmin_blocks,


avg(t.blocks)asavg_blocks,


sum(t.blocks)assum_blocks


fromdba_free_spacet


groupbyt.tablespace_name)c


wherea.tablespace_name=b.tablespace_name


andb.tablespace_name=c.tablespace_name;

[/code]
[/code]

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

[code]
[code]selectt1.tablespace_nameas"表空间名称",


t2.file_nameas"文件名",


t1.contentsas"类型",


t1.extent_managementas"管理方式",


t1.allocation_typeas"区管理方式",


t1.segment_space_managementas"段管理方式",


t2.autoextensibleas"是否自动扩展",


t1.statusas"是否联机"


fromdba_tablespacest1,dba_data_filest2


wheret1.tablespace_name=t2.tablespace_name;

[/code]
[/code]

 

扩展表空间

表空间在物理上是由保存在磁盘上的数据文件组成的,例如,示例1创建的表空间mybtb01,最大为2MB。假设里面有个表,当数据占满了2MB空间之后,如果继续向表插入数据,Oralce就会因为在mytbs01表空间上已经没有足够的空闲空间,而显示错误信息。

创建数据文件时会指定大小。为了提供更大的表空间,增加数据,必须扩展表空间。

通常扩展表空间有三种方式:

添加数据文件

改变数据文件大小

允许数据文件自动扩展

示例7:添加数据文件。为示例1的表空间mytbs01添加新的数据文件D:\ORACLEDATA\MYTBS01_2.DBF。

[code]
[code]SQL>columntablespace_nameformata15


SQL>columnfile_nameformata28


SQL>columntotalformata5


SQL>selectt.tablespace_name,


2t.file_name,


3t.bytes/1024/1024||'M'astotal


4fromdba_data_filest


5wheret.tablespace_name='MYTBS01';


 


TABLESPACE_NAMFILE_NAMETOTAL


-----------------------------------------------


MYTBS01D:\ORACLEDATA\MYTBS01_1.DBF2M




SQL>altertablespacemytbs01


2adddatafile'd:\oracledata\mytbs01_2.dbf'size3M;




数据库已更改。




SQL>selectt.tablespace_name,


2t.file_name,


3t.bytes/1024/1024||'M'astotal


4fromdba_data_filest


5wheret.tablespace_name='MYTBS01';


 


TABLESPACE_NAMFILE_NAMETOTAL


-----------------------------------------------


MYTBS01D:\ORACLEDATA\MYTBS01_1.DBF2M


MYTBS01D:\ORACLEDATA\MYTBS01_2.DBF3M

[/code]
[/code]


扩展前先查看表空间mytbs01数据文件情况。再为表空间mytbs01添加新的数据文件。



示例8:改变数据文件大小。在示例7基础上,扩展表空间mytbs01数据文件D:\ORACLEDATA\MYTBS01_2.DBF的大小。

[code]
[code]SQL>columntablespace_nameformata15


SQL>columnfile_nameformata28


SQL>columntotalformata5


SQL>selectt.tablespace_name,


2t.file_name,


3t.bytes/1024/1024||'M'asTOTAL


4fromdba_data_filest


5wheret.tablespace_name='MYTBS01';




TABLESPACE_NAMFILE_NAMETOTAL


-----------------------------------------------


MYTBS01D:\ORACLEDATA\MYTBS01_1.DBF2M


MYTBS01D:\ORACLEDATA\MYTBS01_2.DBF3M




SQL>alterdatabase


2datafile'd:\oracledata\mytbs01_2.dbf'


3resize4M;




数据库已更改。




SQL>selectt.tablespace_name,


2t.file_name,


3t.bytes/1024/1024||'M'asTOTAL


4fromdba_data_filest


5wheret.tablespace_name='MYTBS01';




TABLESPACE_NAMFILE_NAMETOTAL


-----------------------------------------------


MYTBS01D:\ORACLEDATA\MYTBS01_1.DBF2M


MYTBS01D:\ORACLEDATA\MYTBS01_2.DBF4M

[/code]
[/code]

示例9:允许数据文件自动扩展。在示例8基础上,修改表空间mytbs01数据文件D:\ORACLEDATA\MYTBS01_2.DBF为自动扩展。

[code]
[code]SQL>columntablespace_nameformata15


SQL>columnfile_nameformata28


SQL>columnautoextensibleformata15


SQL>columntotalformata5


SQL>columnmaxsizeformata7


SQL>selectt.tablespace_name,


2t.file_name,


3t.bytes/1024/1024||'M'asTOTAL,


4t.autoextensible,


5t.maxbytes/1024/1024||'M'asMAXSIZE


6fromdba_data_filest


7wheret.tablespace_name='MYTBS01';


 


TABLESPACE_NAMFILE_NAMETOTALAUTOEXTENSIBLEMAXSIZE


---------------------------------------------------------------------


MYTBS01D:\ORACLEDATA\MYTBS01_1.DBF2MNO0M


MYTBS01D:\ORACLEDATA\MYTBS01_2.DBF4MNO0M




SQL>alterdatabase


2datafile'd:\oracledata\mytbs01_2.dbf'


3autoextendonnext1Mmaxsize20M;




数据库已更改。




SQL>selectt.tablespace_name,


2t.file_name,


3t.bytes/1024/1024||'M'asTOTAL,


4t.autoextensible,


5t.maxbytes/1024/1024||'M'asMAXSIZE


6fromdba_data_filest


7wheret.tablespace_name='MYTBS01';


 


TABLESPACE_NAMFILE_NAMETOTALAUTOEXTENSIBLEMAXSIZE


---------------------------------------------------------------------


MYTBS01D:\ORACLEDATA\MYTBS01_1.DBF2MNO0M


MYTBS01D:\ORACLEDATA\MYTBS01_2.DBF4MYES20M

[/code]
[/code]

 

参考资料

CREATETABLESPACEhttp://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_7003.htm#SQLRF01403

ALTERTABLESPACEhttp://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_3002.htm#SQLRF01002

DROPTABLESPACEhttp://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9004.htm#SQLRF01807
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航