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。
自动(AUTOALLOCATE或SYSTEM)-自动分配。指定有Oracle系统来自动管理区的大小。这是默认设置。
段管理方式–LMT方式,除了可以指定区的分配方式外,还可以指定段的管理方式。段空间管理方式主要是指Oracle用来管理段中已用数据块和空闲数据块的机制。分为两种:
手动(MANUAL)-Oracle将使用空闲列表(freelist)管理段的已用数据块和空闲数据块。这是传统的段空间管理方式,为了与以前的版本兼容。
自动(AUTO)-Oracle将使用位图(bitmap)来管理段的已用数据块和空闲数据块。通过位图中单元的取值判断段中的数据块是否可用。
示例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]
参考资料
CREATETABLESPACEALTERTABLESPACE
DROPTABLESPACE
相关文章推荐
- Oracle 11g Release 1 (11.1) 表空间——简单管理永久表空间
- Oracle 11g Release 1 (11.1) Oracle Text——演示创建 Oracle Text 索引
- Oracle 11g Release 1 (11.1) Oracle Text 如何创建 CTXCAT 索引
- Oracle 11g Release 1 (11.1) Oracle Text 如何创建 CONTEXT 索引
- Oracle EX 11g创建用户表和表空间授权
- Oracle 11g Release 1 (11.1) SQL_层级查询(概)
- Oracle 11g Release 1 (11.1) 游标——SQL 游标(隐式)
- Oracle 11g Release 1 (11.1) PL/SQL_了解 Collections 和 Records 类型
- Oracle 11g Release 1 (11.1) PL/SQL_多维 Collection 类型和其异常
- Oracle 11g Release 1 (11.1) PL/SQL_理解 Record 类型
- Oracle 11g Release 1 (11.1) SQL_层级查询(详)
- Oracle 数据库表空间(tablespace)的创建、删除、修改、扩展以及检查
- Oracle 11g Release 1 (11.1) Oracle Text 概述
- oracle express 11g 创建表空间
- Oracle 11g Release 1 (11.1)——简单管理聚簇
- 『ORACLE』 对永久表空间进行DML操作(11g)
- Oracle 11g Release 1 (11.1) Data Pump 技术
- Oracle 11g Release 1 (11.1) 单行函数——NLS 字符函数
- oracle 11g 数据库, 创建表空间, 修改表空间, 创建用户,并将用户分配给表空间,将dmp
- Oracle 11g Release 1 (11.1)——聚簇和非聚簇的简单查询比较