Oracle——01表空间和区

 

1、表空间:表空间是数据库的逻辑划分,一个表空间只属于一个数据库。每个表空间由一个或多个数据文件组成。

表空间中其他逻辑结构的数据存储在这些数据文件中。在Oracle安装完成后,会自动建立多个表空间,

主要有:

(1)System表空间:该表空间用于存放Oracle系统内部表和数据字典的数据,如表名、列名、用户名等。

(2)undo表空间:该表空间是存储撤销信息的表空间。当用户对数据库表进行修改(insert,update,delete)时,

Oracle会自动使用undo表空间来临时存放修改前的数据。当所进行的修改完成并提交后,系统根据需要保留修改前数据的时间长短来释放undo表空间的部分空间。

(3)users表空间:该空间是给用户使用的表空间。

(4)temporary表空间:该表空间是供用户临时使用的,如进行排序、汇总等操作时。

 

可以使用OEM(Oracle Enterprise Manager)管理表空间,也可以使用命令管理表空间。利用OEM管理表空间是非常简单的,只需要根据系统提示进行操作就可以了。利用create tablespace 命令会创建一个读/写表空间,以后可以利用alter tablespace 语句来使表空间脱机或联机、给它添加数据文件或使它成为只读表空间。也可以利用drop tablespace 语句从数据库中撤销表空间。

(1)利用create tablespace命令创建表空间。使用该命令的用户必须具有创建表空间的权限。

语法格式:

 

create tablespace tablespace_name datafile 'path/fileName' [size integer [K | M]] [reuse]
		[autoextend [off | on [next integer [K | M]]] [maxsize [unlimited | integer [K | M]]]]
		[minmum extent integer [K | M]]
		[default storage storage_clause]
		[online | offline]
		[logging | nologging]
		[extent management [dictionary | local [autoallocate | uniform [size integer [K | M]]]]]

 

其中,tablespace_name是将要创建的表空间的名称,该名称在数据库中是唯一的,并且命名必须符合命名规则。

path/fileName: 数据文件的存放路径和名称。当使用关键字reuse时表示若该文件存在,则清除该文件再重新建立该文件;如该文件不存在,则建立新文件。

off/on: 禁止或允许自动扩展数据文件。若选则off, 则禁止自动扩展;若选择on,则允许自动扩展数据文件

next:表示当需要更多的磁盘空间时,一次给数据文件分配的磁盘空间,以KB或MB为单位。

maxsize umlimited | integer[K | M]:指定允许分配给数据文件的最大磁盘空间,其中unlimited表示没有限制。

minmum extent:指定最小的长度,默认为操作系统和数据库块。

online:在创建表空间后使该表空间立即可以被授权用户访问,这是默认设置。

offline:则表示不可用

logging/nologging:表示将来的表、索引等是否需要进行日志处理,默认为需要

extent management:指定如何管理表空间的盘区。

dictionary:使用字典表来管理表空间,这是默认设置。

local:指定本地管理表空间

autoallocate:指定表空间由系统管理,用户不能指定盘区尺寸。

uniform:使用size字节的统一盘区来管理表空间。默认的size是1MB。

注意:如果指定了local,就不能指定default storage storage_clause 和temporary。

default storage storage_clause:为在该表空间创建的全部对象指定默认的存储参数。storage_clause的语法格式如下:

 

storage(
			initial integer[K|M]
			next integer[K|M]
			minextents integer | unlimited
			maxextents integer
			pctincrease integer
			freelists integer
			freelist groups integer
			optimal [integer[K|M] | null]
		)

如:

 

create tablespace ts_app datafile 'D:\Oracle\oradata\orcl\ts_app.dbf' size 1024M autoextend on next 50M maxsize 2048M;
--将创建一个名为“ts_app”的表空间,初始大小为1024M,允许自动扩充,每次扩充50M,最多扩充到2048M。

 

创建临时表空间时只需要在tablespace前加上temporary,并且将datafile改为tempfile,如:

create temporary tablespace ts_temp tempfile 'D:\Oracle\oradata\orcl\ts_temp.dbf' size 256M autoextend on next 100M maxsize 2048M;

 

 (2)利用alter tablespace命令管理表空间。

语法格式:

 

alter tablespace tablespace_name
		[add dataFile | tempFile 'path/fileName' [size integer [K | M]]
			[reuse]
			[autoextend [off | on [next integer [K | M]] maxsize [unlimited | integer [K | M]]]]
		[rename dataFile 'path/fileName',...n to 'path/fileName',...n]
		[default storage storage_clause]
		[online | offline [normal | temporary | immediate]]
		[logging | nologging]
		[read only | write]
		[permanent]
		[temporary]

 

 

 

 

2、分区:在非常大的数据库中,通常可以通过把一个大表的数据分成多个小表来简化数据库的管理,这些小表叫做分区,除了对表分区外,还可以对索引进行分区。分区不仅简化了数据库的管理,还改善了应用性能。在Oracle中,还可以细分分区,创建子分区。

并不是所有的表列都可以进行分区,只有日期型(date)或二进制大对象(blob)等数据类型的表列可以分区。

Oracle有以下几种分区方法:

(1)范围分区:根据列值的范围将行映射到分区。

(2)散列分区:散列分区提供了一种方法,可在指定数量的分区间平均分布数据。这种方法将根据分区关键字的散列值将行映射到分区。

(3)列表分区:列表分区可以显式地控制如何把行映射到分区。

(4)范围-散列分区:首先使用范围方法将数据进行分区,然后在每个分区内,使用散列方法将其分成子分区。

(5)范围-列表分区:首先使用范围方法将数据进行分区,然后在每个分区内,使用列表方法将其分成子分区

 

你可能感兴趣的:(oracle,分区,表空间,tablespace,区)