文章目录
一、表空间的概念
Oracle数据库的数据存放在表空间中,表空间是一个逻辑的概念,它是由数据文件组成,表空间大小由数据文件的数量和大小决定。
表空间有三种:Permanent Tablespaces(永久表空间)、Temporary Tablespaces(临时表空间)、Undo Tablespaces(回滚表空间),Oracle在创建数据库实例的时候,默认会创建三个永久表空间(SYSTEM、SYSAUX、USERS),一个临时表空间(TEMP),一个回滚表空间(UNDOTBS1)。
1、SYSTEM表空间
SYSTEM表空间主要用于存放Oracle数据库内部的数据字典,它是Oracle数据库最重要的表空间,在创建数据库实例时被最先创建,包含了数据库的元数据,对于数据库来说生死攸关。
2、SYSAUX表空间
SYSAUX表空间是SYSTEM表空间的辅助表空间,主要用于存储数据字典以外的其他数据对象,它在一定程度上降低了SYSTEM表空间的负荷。
3、UNDOTBS1表空间
UNDO是回滚表空间,主要有四方面的用途,分别是:事物回滚、数据库恢复、读一致性、闪回查询。
1)事物回滚:当事物执行失败或用户执行回滚操作(rollback)时,Oracle会利用保存在回退段中的信息将数据恢复到原来的值。
2)数据库恢复:当数据库实例出现了意外,在重启恢复时,Oracle先利用重做日志文件的信息对数据库进行恢复,再利用回滚段中的信息回滚未提交的事务。
3)读一致性:当一个用户对数据进行修改时,会预先将其原始值保存到回退段中,这时,如果有其它用户访问该数据,则访问回退段中的信息,使当前用户未提交的修改其他用户无法看到,保证了数据的一致性。
4)闪回查询:通过保留在回退段中的信息,用户可以查询某个数据在过去某个时刻的状态。
4、TEMP表空间
临时表空间用来管理数据库排序以及用于存储临时表和索引、中间结果等临时对象。当Oracle的内存不够时,会把数据放在临时表空间中,当操作完成后,系统会自动清理临时表空间中的临时对象,自动释放空间。这里的释放只是标记为空闲、可以重用,占用的磁盘空间并没有真正释放。这也是临时表空间有时会不断增大却不见减少的原因。
5、USERS表空间
USERS表空间用于存放普通用户的表和索引,一般情况下,它是用户的缺省表空间。
6、查看表空间
用DBA登录数据库,执行以下SQL可以查看数据库全部的表空间。
select * from v$tablespace;
二、管理表空间
企业级的Oracle数据系统的存储一般是采用ASM(自动存储管理),ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,替代了操作系统所提供的LVM,它不仅支持单实例,同时对RAC的支持也是非常好。
管理表空间的任务一般是由DBA来执行,涉及的知识比较多,本文介绍用文件系统作为Oracle的存储空间,合适程序员学习。不管是ASM还是文件系统,逻辑上是一样的,作为一个程序员,并不一定要掌握Oralce存储系统的管理和配置,理解它的原理和使用就可以了。
1、创建表空间
创建表空间是使用create tablespace命令完成的,建立表空间是特权用户或是DBA来执行的,如果用其它用户来创建表空间,则用户必须要具有create tablespace的系统权限。create tablespace命令的选项比较多,本文只介绍常用的方法。
create tablespace 表空间名 datafile '数据文件名' size 大小;
在创建数据库实列后,为了方便管理,最好再创建一个专用于存放数据表空间和一个专用于存放索引表空间。
示例:
1)创建数据表空间DATA,同时创建数据文件/oracle/base/oradata/snorcl11g/data01.dbf,数据文件的大小是128M。
create tablespace DATA datafile '/oracle/base/oradata/snorcl11g/data01.dbf&#