一、介绍
1、表空间:数据库的逻辑组成部分。从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库则是存放在表空间中。表空间由一个或多个数据文件组成。
2、数据库的逻辑结构
- oracle中逻辑结构包括表空间、段、区和块。
- 数据库由表空间构成,表空间由段构成,段由区构成,区由oracle块构成。
二、表空间
1、表空间用于从逻辑上组织数据库的数据。数据库逻辑上是由一个或多个表空间组成的。通过表空间可以达到以下作用:
1)控制数据库占用的磁盘空间。
2)dba可以将不同数据类型部署到不同的位置,这样有利于提高I/O性能,同时有利于备份和恢复等管理操作。
2、建立表空间
- create table space
- 一般情况下,简历表空间是特权用户或是dba来执行的。如果用其他用户创建表空间,则用户必须具有create tablespace的系统权限。
3、建立数据表空间:在建立数据库后,为便于管理表,最好建立自己的表空间。
- create tablespace data01 datafile 'd:\test\data01.dbf' size 20m uniform size 128k
- 执行完上述命令后,会建立名称为data01的表空间,并为该表空间建立名称为data01.dbf的数据文件,区的大小为128k。
4、使用数据表空间
- create table mypart(deptno number(4),dname varchar2(14),loc varchar2(13)) tablespace data01;
5、改变表空间的状态
- 当建立表空间时,表空间处于联机状态(online)。此时,该表空间是可以访问的,并且该表空间是可以读写的,即可以查询该表空间的数据,而且还可以在表空间执行各种语句。但是在进行系统维护或是数据维护时,可能需要改变表空间的状态。一般情况下,有特权用户或是dba操作。
1)使表空间脱机
- alter tablespace 表空间名 offline;
2)使表空间联机
- alter tablespace 表空间名 online;
3)只读表空间
- 当建立表空间时,表空间可以读写。如果不希望在该表空间上执行update,delete,insert操作,那么可以将表空间修改ewing只读。
- alter tablespace 表空间名 read only;
4)可读写表空间
- alter tablespace 表空间名 read write;
5)示例:
- 已知表空间名,显示该表空间包括的所有表
-
- select * from all_tables where tablespace_name='表空间名'
- 已知表名,查看该表属于哪个表空间
-
- select tablespace_name ,table_name from user_tables where table_name='emp';
6)删除表空间:由特权用户或是dba来操作。如果是其它用户操作,那么要求用户具有drop tablespace系统权限。
- drop tablespace '表空间' including contents and datafiles;
- including contents表示删除表空间时,删除该空间的所有数据库对象。datafiles表示将数据库文件也删除。
7)扩展表空间
- 表空间由数据文件组成,表空间的大小实际上就是数据文件相加后的大小。
- 增加数据文件
-
- alter tablespace data01 add datafile'd:\test\data02.dbf' size 20m;
- 增加数据文件的大小
-
- alter database datafile 'd:\test\data02.dbf' resize 20m;
- 设置文件的自动增长
-
- alter database datafile 'd:\test\data02.dbf' autoextend on next 10m maxsize 500m;
8)移动数据文件:如果数据文件所在的磁盘损坏,该数据文件将不能再使用。为了重新能够使用,需要将这些文件的副本移动到其它磁盘,然后恢复。
- 确定数据文件所在的表空间
-
- select tablespace_name from dba_data_files where file_name='d:\test\data01.dbf';
- 使表空间脱机
-
- alter tablespace data01 offline;
- 使用命令移动数据文件到指定的目标位置
-
- host move d:\test\data01.dbf e:\test\data01.dbf
- 执行alter tablespace命令
-
- 在物理上移动了数据后,还必须执行alter tablespace命令对数据库文件进行逻辑修改。
- alter tablespace data01 rename datafile 'd:\test\data01.dbf ' 'e:\test\data01.dbf ';
- 使表空间联机
-
- alter tablespace data01 online;
8)显示表空间信息:
- 查询数据字典视图dba_tablespaces,显示表空间的信息
-
- select tablespaces_name from dba_tablespaces;
9)显示表空间所包含的数据文件
- 查询数据字典视图dba_data_files,可显示表空间所包含的数据文件
-
- select file_name,bytes from dba_data_files where tablespace_name='表空间名';
10)其它表空间
除了最常用的数据表空间外,还有其他类型表空间:
- 索引表空间
- undo表空间
- 临时表空间
- 非标准块的表空间
11)表空间小结
- 了解表空间和数据文件的作用。
- 掌握常用表空间,undo表空间和临时表空间的建立方法。
- 了解表空间的各个状态(online,offline,read write,read only)的作用,及如何改变表空间的状态的方法。
- 来哦接移动数据文件的原因,及使用alter tablespace和alter datatable命令移动数据文件的方法。