表空间是数据库的逻辑组成部分,从物理上讲数据库数据存放在数据文件中;从逻辑上讲,数据库则是存放在表空间中,表空间是由一个或者多个数据文件组成。
Oracle数据库逻辑结构组成部分:数据库是由表空间组成,而表空间又是由段构成,段是由区构成,而区是又oracle数据库的块组成这样的一种结构,这样可以提高数据库的管理效率,如下图。个人理解,很想国家划分省、市、县、区等。
表空间的作用:
1、控制数据库占用磁盘空间;
2、DBA可以将不同的数据类型部署到不同的表空间,这样有利于提高I/O性能,同时利于备份和恢复等管理操作;例如:可以用一个表空间来存放索引、、
创建表空间:
创建表空间我们可以用create tablespace命令完成,但是创建表空间一般都是由DBA来完成,如果某个用户一定要创建表空间则需要有create tablespace的系统权限;
例子:create tablespace tpName datafile 'E:\tpName.dbf' size 20m uniform size 128k;
上面的例子是创建一个表空间,表空间名是tpName;
datafile:是指定你表空间的数据文件名和路劲;
size:指定数据文件的大小;
uniform size:是指区的大小,按照每个区128k分配;
使用表空间:
使用表空间很简单,只需要在创建表、索引、存储过程...后面加上tablespace tpName;
改变表空间的状态:
使表空间脱机:alter tablespace tpName offline;
使表空间联机:alter tablespace tpName online;
只读表空间:alter tablespace tpName read only;只能进行查询,其它三样操作不能执行
可读可写表空间:alter tablespace tpName read write;
扩充表空间:
1、新增加数据文件:
alter tablespace tpName add datafile 'E:\tpName1.dbf' size 20m;
2、增加原有的数据文件:
alter database datafile 'E:\tpName.dbf' resize 100m;
3、设置数据文件自动增长:
alter database datafile 'E:\tpName.dbf' autoextend on next 10m maxsize 500m;
autoextend on next:是指每次增长大小为10M;
移动数据文件:
如果您的数据文件所在磁盘损坏,该数据文件不能在使用,所以我们要将这些文件移植到其它磁盘上面去:
1、确定数据文件所在表空间:
select tablespace_name from dba_data_files where file_name='E:\TPNAME.DBF';
是查询dba_data_files视图中的tablespace_name字段,file_name是您的数据文件路劲,要大写;
2、让表空间处于脱机状态,为了保证数据文件的一致性,将表空间状态改为offline状态:
alter tablespace TPNAME offline;
3、使用命令移动数据文件到指定位置:
host move 'E:\TPNAME.DBF' 'F:\TPNAME.DBF';
如果这样不行可以手动复制数据文件到指定位置;
4、在执行了物理上的文件移动,还要执行alter tablespace命令对数据文件进行逻辑上修改,就是表空间位置指向;
alter tablespace TPNAME rename datafile 'E:\TPNAME.DBF' to 'F:\TPNAME.DBF';
5、使表空间联机;
alter tablespace TPNAME online;
删除表空间:
drop tablespace TPNAME including contents and datafiles;
说明:including contents表示删除表空间时,删除表空间的所有数据对象;
而datafiles是表示连数据文件也一起删除;
基本的表空间操作就写了这么多、、