一、DM表空间基础概念:理解达梦数据库存储核心
1.1 表空间核心概念:逻辑与物理的映射
DM表空间是达梦数据库中最大的逻辑存储单元,其存储结构分为逻辑与物理两层。逻辑层由表空间、段、区和页构成;物理层则对应磁盘上的数据文件。在DM数据库中,所有数据均存储于表空间内,表空间在逻辑上由段组成,段由区组成,区由连续的页组成。页是DM数据库中最小的数据单元,其大小在初始化时指定,默认为8KB。
1.2 默认表空间解析:系统自带表空间的作用
达梦数据库初始化后自动创建数个核心DM表空间,职责各异:
- SYSTEM表空间:存放数据字典信息(如表、视图定义),禁止存放用户业务数据。
- ROLL表空间:存放事务回滚记录,保障DML操作的原子性与一致性。
- MAIN表空间:默认用户表空间,未显式指定表空间时,用户数据存放于此。
- TEMP表空间:存放排序、分组等操作的中间结果,内存不足时落盘使用。
- HMAIN表空间:存放大字段数据(如TEXT、IMAGE等)。
1.3 存储层次架构:从表空间到数据文件
DM表空间的存储采用层级映射设计。一个DM表空间可对应多个物理数据文件,但单个数据文件仅归属唯一表空间。当空间耗尽时,可通过增加数据文件或扩展现有文件实现扩容。数据文件扩展名通常为.DBF,大小以MB或GB为单位。掌握这种逻辑到物理的映射,是进行DM表空间高效管理的前提。
二、DM表空间核心管理:创建与扩展实战操作
2.1 创建自定义表空间:按业务规划存储
生产环境中为隔离业务数据,DBA需创建独立DM表空间。步骤如下:
- 确定表空间名称与数据文件路径:规划表空间名为BUSINESS_TS,路径为/dmdata/data/DAMENG/BUSINESS01.DBF。
- 执行基础建表语句:使用CREATE TABLESPACE创建初始大小128MB的表空间。
CREATE TABLESPACE BUSINESS_TS DATAFILE '/dmdata/data/DAMENG/BUSINESS01.DBF' SIZE 128;
- 启用自动扩展属性:为防止空间写满,开启自动扩展并设上限为10240MB。
CREATE TABLESPACE BUSINESS_TS DATAFILE '/dmdata/data/DAMENG/BUSINESS01.DBF' SIZE 128 AUTOEXTEND ON NEXT 10 MAXSIZE 10240;
2.2 表空间扩展操作:应对数据增长
业务数据激增导致DM表空间容量触顶时,需执行扩展操作:
- 扩展现有数据文件大小:通过ALTER TABLESPACE修改SIZE参数至256MB。
ALTER TABLESPACE BUSINESS_TS RESIZE DATAFILE '/dmdata/data/DAMENG/BUSINESS01.DBF' TO 256;
- 增加新的数据文件:单文件过大时推荐添加新文件。
ALTER TABLESPACE BUSINESS_TS ADD DATAFILE '/dmdata/data/DAMENG/BUSINESS02.DBF' SIZE 128;
- 验证扩展结果:查询DBA_DATA_FILES视图确认文件大小更新。
SELECT TABLESPACE_NAME, FILE_NAME, BYTES/1024/1024 AS SIZE_MB FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'BUSINESS_TS';
2.3 修改表空间状态:维护与可用性控制
DM表空间具备ONLINE与OFFLINE状态,部分维护操作需在脱机状态下进行:
- 表空间脱机操作:执行ALTER语句将状态切换为OFFLINE。
ALTER TABLESPACE BUSINESS_TS OFFLINE;
- 表空间联机操作:维护完成后恢复ONLINE状态供业务读写。
ALTER TABLESPACE BUSINESS_TS ONLINE;
三、DM表空间高级维护:优化与安全策略
3.1 表空间数据文件迁移:存储路径优化
底层存储架构变更时,需迁移DM表空间数据文件路径:
- 将目标表空间置为OFFLINE状态。
ALTER TABLESPACE BUSINESS_TS OFFLINE;
- 修改数据文件物理路径:使用ALTER语句重定向至新路径。
ALTER TABLESPACE BUSINESS_TS RENAME DATAFILE '/dmdata/data/DAMENG/BUSINESS01.DBF' TO '/dmnewdata/data/DAMENG/BUSINESS01.DBF';
- 将表空间重新置为ONLINE状态以恢复业务。
ALTER TABLESPACE BUSINESS_TS ONLINE;
3.2 表空间监控与告警:容量与性能把控
定期监控DM表空间使用率是预防业务中断的关键手段:
- 查询表空间总容量与使用率:联合DBA_DATA_FILES与DBA_FREE_SPACE视图获取精确数据。
SELECT F.TABLESPACE_NAME, T.TOTAL_SPACE/1024/1024 AS TOTAL_MB, (T.TOTAL_SPACE-F.FREE_SPACE)/1024/1024 AS USED_MB, ROUND((1-F.FREE_SPACE/T.TOTAL_SPACE)*100,2) AS USED_PERCENT FROM (SELECT TABLESPACE_NAME, SUM(BYTES) AS FREE_SPACE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT TABLESPACE_NAME, SUM(BYTES) AS TOTAL_SPACE FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) T WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME;
- 配置定时巡检任务:当USED_PERCENT超过80%时触发短信或邮件告警。
3.3 表空间删除与清理:资源回收规范
业务下线后需清理对应DM表空间释放磁盘资源:
- 确认无活动对象:核查无业务表或索引依赖该表空间。
- 删除表空间及物理文件:执行DROP语句连同.DBF文件一并清除。
DROP TABLESPACE BUSINESS_TS INCLUDING CONTENTS AND DATAFILES;
- 验证磁盘释放结果:在操作系统层确认可用空间已增加。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_41840843/article/details/163722308




