表空间是Oracle数据库最大的逻辑存储结构,有一系列段构成。Oracle数据库对象存储结构的管理主要是通过表空间的管理实现的。
1.表空间的分类
表空间根据存储类型不同分为系统表空间和非系统表空间
根据组成表空间的数据文件的大小不同分为大文件表空间和小文件表空间
根据数据库块戴奥不同分为标准块表空间和非标准块表空间
(1)系统表空间
system 表空间主要存储:
数据库的数据字典
PL/SQL程序的源代码和解释代码
数据库对象的定义,如表、视图、序列、同义词等。
一般在system表空间中只应该保存属于SYS模式的对象,而不应该把用户对象存放在SYSTEM表空间中,以免影响数据库的稳定性与执行效率。
sysaux是辅助系统表空间,主要存放实例的数据库方案对象信息等,以减少system表空间 的负荷。
(2)非系统表空间。
临时表空间:存放临时数据的表空间
撤销表空间:专门用于回退信息管理的表空间
用户表空间:为每个应用独立创建的表空间
(3)小文件表空间:是系统默认的表空间类型。每个小文件表空间最多可以包含1022个数据文件。
(4)大文件表空间:是指一个表空间只包含一个大的数据文件。
(5)标准块表空间:是基于标准数据块大小的表空间。
(6)非标准表空间:是基于非标准数据块创建的表空间。
oracle11g会创建6个默认的表空间。
2.表空间的管理方式
(1)数据字典管理方式
表空间使用数据字典来管理存储空间的分配。在进行区的分配和回收时,oracle会对数据字典中的相关基础表进行更新,同时会产生回退信息。正逐渐被淘汰。
(2)本地管理方式
在本地管理方式中,区的分配和回收信息都存储在表空间的数据文件中,与数据字典无关。表空间在每个数据文件的头部维护一个 bitmap。用于记录所有区的使用情况。
3.表空间中区的分配与段的管理。
(1)区的分配:
在表的本地管理方式中,区的分配方式有两种
定制:指定区的大小,表空间所有区的大小相同,默认为1M
自动:由oracle系统自动决定每个区的大小,用户不能通过其他参数来干预分配。这是本地表空间的默认分配方式。
(2)段的管理方式:
manual手动管理方式:使用空闲列表来管理端中的空闲数据块。
auto(自动管理方式):使用bitmap来管理福安中可用数据块与已用数据块。这是11g中的默认设置。
4.表空间的管理策略
(1)将数据字典与用户数据分离,避免由于数据字段对象和用户对象保存在同一个数据文件中而产生I/O冲突。
(2)将回退数据与业务数据分离,避免大量回退信息与业务数据竞争I/O
(3)将表空间的数据文件分散保存到不同的硬盘上,平均分布物理I/O操作。
(4)为不同的应用建立不同的表空间,以防止应用数据之间的干扰。
(5)将某个表空间设置为脱机状态,以方便对数据库的一部分进行备份或恢复。
(6)将某个表空间设置为只读状态,从而将数据库的一部分设置为只读状态。
创建表空间
1.create tablespace语句
略
2.创建本地管理表空间
为orcl数据库创建一个本地管理的永久表空间TBS1,区采用自动分配方式,段采用自动管理方式。
SQL> create tablespace tbs1 datafile 'D:\DISK1\TBS1_1.DBF'SIZE 50M; 表空间已创建。
为orcl数据库创建一个本地管理的永久表空间tbs2,区采用定制分配方式,区大小为512KB,段采用自动管理方式。
SQL> create tablespace tas2 datafile 'D:\disk1\tbs2_1.dbf'size 50M 2 extent management local uniform size 512K; 表空间已创建。
为orcl数据库创建一个本地管理的永久表空间TBS5,第一个区的大小为10M,第二个区大小为10M,后续增长10%
SQL> create tablespace tbs5 datafile 'D:\disk1\tbs5_1.dbf' size 50M 2 default storage(initial 10M next 10M pctincrease 10) 3 segment space management manual; 表空间已创建。
3.创建大文件表空间
可以通过alter database语句改变数据库默认创建的表空间的文件类型。
SQL> alter database set default bigfile tablespace; 数据库已更改。 SQL> alter database set default smallfile tablespace; 数据库已更改。
只有段采用自动管理方式的本地管理的表空间才可以定义为大文件表空间,而本地管理的撤销表空间、临时表空间以及SYSTEM表空间只能定义为小文件表空间。
SQL> create bigfile tablespace bigtbs1 datafile 'D:\disk1\bigfile1_1.dbf' size 100M 2 autoallocate segment space management auto; 表空间已创建。
4.创建非标准块表空间
在orcl数据库创建一个数据块大小为16KB的表空间TBS16,数据文件大小为50M,区采用定制分配,每个区大小为128KB.
SQL> alter system set db_16k_cache_size=16384; 系统已更改。 SQL> create tablespace tbs16 2 datafile 'D:\disk1\tbs16_1.dbf' size 50M 3 extent management local uniform size 128K blocksize 16K; 表空间已创建。
5.改变表空间的读写性
默认情况下,表空间都是在处于读写状态的,任何具有配额和权限的用户都可以读写表空间。
将表空间设置为只读状态的语法为:
alter tablespace tablespace_name read only;
6.重命名表空间
alter tablespace old_tbs_name rename to new_tbs_name;
7.设置默认表空间
alter database default tablespace tablespace_name;
8.备份表空间
对表空间进行联机备份的步骤:
(1)获取要进行连接备份的表空间锁拥有的所有数据文件的列表。
(2)使用alter tablespace........begin backup 语句将表空间设置为备份模式。
(3)在操作系统中备份表空间所拥有的所有数据文件
(4)使用alter tablespace.......end backup语句结束表空间的备份模式。
9.删除表空间
drop tablespace tbs_name [including contents] [and datafile] [cascade constraints];