DMDBA达梦数据库实践-表空间管理
一、表空间的概念
DM数据库为数据库中所有的对象分配逻辑空间,并存在于数据文件中。在DM数据库内部,所有的数据文件组合在一起,被划分至一个或多个表空间中。表空间又被进一步划分为段、簇、页。表空间是一个逻辑概念,是DM的最大逻辑结构。表空间和数据文件的关系如下图所示:
二、表空间的属性
- 一个表空间由一个或多个数据文件组成;
- 一个数据库可以有多个表空间,可以在数据库中对这些表空间进行增删改查;
- 一个表空间只能属于一个数据库;
- 一个表空间的大小等于所有数据文件的大小之和;
- 表空间的状态有联机(online)和脱机(offline);
- 数据库对象、表、索引的数据都被存储在表空间的数据文件中;
- 一个用户默认使用一个表空间
三、表空间常用查询
常用的两个视图
在实践中用到了v$tablespace
和dba_tablespace两个视图,其中v$tablespace
(v$视图
)是动态性能,可在系统模式SYS下的表查看;dba_tablespace (dba_数据字典)是静态视图,可在系统模式SYS的视图中查看。
v$tablespace
的主要结构如图
dba_tablespace的主要结构如图,存储了tablespace的更详尽的信息。
常用查询
1)包含数据库中所有表空间的描述信息
select * from dba_tablespaces;
2)包含当前用户的表空间的描述信息
select * from user_tablespaces;
3)从控制文件中获取表空间名称及编号信息
select * from v$tablespaces;
4)查看包含数据文件及其所属表空间的描述信息
select * from dba_data_files;
5)查看临时数据文件以及所属表空间的描述信息
select * from dba_temp_files;
6)查看从控制文件中获取的数据文件的基本信息,包括它所属的表空间名称、编号等
select * from v$datafiles;
四、基本表空间
查看当前表空间
基本表空间
其中,基本表空间为如下5个:
- System :数据字典和全局的系统数据。
- ROLL:存放了数据库运行过程中产生的回滚记录。
- Temp:临时表空间
- Main:数据库默认的表空间,创建数据对象时,如果不指定存储位置,默认存放在该表空间。
- HMAIN:huge表空间
- 其他为新建的表空间。
五、表空间分类
- 永久表空间:存放永久性数据,如索引、表等;
- 临时表空间temp:不能存放永久性对象,用于保存数据库排序,分组时产生的临时数据
- UNDO表空间:保存数据修改前的镜象
六、基本操作
- 创建表空间
- 表空间管理
1)增加表空间数据文件,初始大小为50M最大为60M
create tablespace test4 datafile '/dm7/data/DAMENG/test4_01.dbf' size 50 autoextend on maxsize 60;
2)创建一个表空间,初始50M,每次增加1M直至60M
create tablespace test5 datafile '/dm7/data/DAMENG/test5_01.dbf' size 50 autoextend on next 1 maxsize 60;
3)创建一个表空间,初始50M,表空间由2个数据文件组成,分别存储到不同的磁盘上,每次扩展1M,每个数据文件最大70M
create tablespace test6 datafile '/dm7/data/DAMENG/test6_01.dbf' size 50 autoextend on next 1 maxsize 70,'/dm7/data/DAMENG/test6_02.dbf' size 50 autoextend on next 1 maxsize 70;
4)修改表空间数据文件(注:需将表空间offline后才可修改)
alter tablespace test3 rename datafile '/dm7/data/DAMENG/test3_01.dbf'to '/dm7/data/DAMENG/test3_03.dbf';
5)修改表空间文件大小
alter tablespace test5 resize datafile '/dm7/data/DAMENG/test5_01.dbf' to 56;
6)修改表空间名称
alter tablespace test4 rename to tsp4;
7)删除表空间
drop tablespace test3;
查看数据文件和表空间的对应状态
七、表空间状态转换
表空间状态有offline和online两种