规划数据库结构时需要考虑如何管理数据库中的相关文件,每个表空间存储什么数据,在表空间中创建多少个、多大的数据文件,以及数据文件存储的位置等。
表空间的管理操作需要 DM 数据库服务器处于 OPEN 状态下。
1、创建表空间
创建表空间时需要指定表空间的名称和拥有的数据文件列表。
----创建名为 bookshop 的表空间,拥有 2 个数据文件,每个数据文件的大小为 10M
create tablespace bookshop datafile
‘/dm8/data/DAMENG/bookshop1.dbf’ size 10,
‘/dm8/data/DAMENG/bookshop2.dbf’ size 10;
理论上最多允许有 65535 个表空间,但用户允许创建的表空间 ID 取值范围为 0 ~ 32767,超过 32767 的只允许系统使用。
表空间的 ID 由系统自动分配,ID 不能重复使用,即使删除掉已有表空间,其 ID 也无法使用。
创建表空间时,可以指定数据文件是否可以扩展,每次扩展的空间大小以及可扩展到的最大空间大小。
----创建名为 shop 的表空间,可自动扩展,每次扩展 10M,最大可扩展到 100M
create tablespace shop datafile ‘/dm8/data/DAMENG/shop1.dbf’ size 32 autoextend on next 10 maxsize 100;
2、扩展表空间
表空间通过数据文件来扩展,表空间的大小等于构成表空间的所有数据文件的大小之和。
扩展表空间可以通过添加新的数据文件或扩展已有数据文件来完成。
添加的数据文件大小最小为 4096页大小,如页大小为 8K,则可添加的文件最小为 40968K=32M。
一个表空间中,数据文件和镜像文件一起不能超过 256 个。
----在 bookshop 表空间中添加大小为 64M 的数据文件
alter tablespace bookshop add datafile ‘/dm8/data/DAMENG/bookshop3.dbf’ size 64;
----在 shop 表空间中添加不可扩展的数据文件
alter tablespace shop add datafile ‘/dm8/data/DAMENG/shop2.dbf’ size 32 autoextend off;
可以扩展用户表空间中已存在的数据文件大小
----扩展 bookshop 变空间中数据文件 bookshop1.dbf 大小至 20M
alter tablespace bookshop resize datafile ‘/dm8/data/DAMENG/bookshop1.dbf’ to 20;
----修改已有数据文件的扩展属性
alter tablespace shop datafile ‘/dm8/data/DAMENG/shop2.dbf’ autoextend on;
3、删除表空间
只可以删除用户创建的表空间并且只能删除未使用过的表空间。
删除表空间时会删除其拥有的所有数据文件。
----删除 bookshop 表空间
drop tablespace bookshop;
4、修改表空间名和数据文件路径
可修改已存在的由用户创建的表空间的名称。
----修改 bookshop 表空间名为 books
alter tablespace bookshop rename to books;
----可以修改用户表空间中已存在的数据文件的路径,待修改的数据文件所在表空间必须处于脱机状态。
alter tablespace bookshop rename datafile ‘/dm8/data/DAMENG/bookshop2.dbf’ to ‘/dm8/data/bookshop2.dbf’;
5、修改表空间状态
用户表空间有联机和脱机两种状态。
系统表空间、回滚表空间、临时文件表空间不允许脱机。
设置表空间状态为脱机状态时,如果该表空间有未提交的事务,则脱机失败报错。
脱机后可对表空间的数据进行备份。
----修改 bookshop 表空间状态为脱机
alter tablespace bookshop offline;
----修改 bookshop 表空间状态为联机
alter tablespace bookshop online;
6、修改表空间中数据缓冲区
用户表空间可以切换使用不同的数据缓冲区,有 NORMAL 和 KEEP。
表空间的数据缓冲区修改成功后,并不会立即生效,需要服务器重启。
缓冲区名 KEEP 是达梦的保留关键字,使用时必须加双引号。
----将 bookshop 表空间绑定到 KEEP 缓冲区
alter tablespace bookshop cache=‘KEEP’;
7、查询表空间与数据文件对应关系
通过查询动态视图 VTABLESPACE 可以得到系统中所有表空间的信息。
通过查询动态视图 VDATAFILE 可以得到系统中所有数据文件的信息。
两个视图以表空间 ID 为连接条件,可以得到表空间上对应的数据文件。
select ts.name, df.path
from vdatafile df
where ts.id=df.group_id;