本文介绍达梦数据库如何调整表空间存储位置。
在数据库管理中,表空间是数据库中存储数据的逻辑单位,它由一个或多个数据文件组成。在达梦数据库中,有四种主要的表空间:ROLL表空间,SYSTEM表空间,MAIN表空间和TEMP表空间。
1.ROLL表空间:ROLL表空间用于存储事务回滚信息。当数据库事务进行修改操作后,如果需要回滚(撤销)这些操作,回滚信息就会从ROLL表空间中获取。ROLL表空间有助于保障数据库事务的原子性和持久性。它是数据库事务控制的重要组成部分,确保在系统崩溃或其他故障情况下能够恢复到一致的状态。
2.SYSTEM表空间:SYSTEM表空间是达梦数据库中最重要的表空间,它用于存储数据库的系统信息,包括数据字典、系统表和视图等。数据字典中存储了数据库的结构信息,如表的定义、索引、用户权限等。SYSTEM表空间是在数据库创建时自动建立的,是数据库正常运行不可缺少的核心部分。用户通常不应该直接操作SYSTEM表空间中的对象。
3.TEMP表空间:TEMP表空间是用于存储临时数据的表空间,例如排序操作或哈希操作产生的中间结果。当数据库执行一些需要临时存储的操作时,这些数据会被存放在TEMP表空间中。这个表空间通常不需要持久保存数据,而是在查询执行完毕后清空。使用TEMP表空间可以减少对主要表空间的影响,并且提高查询性能。
4.MAIN表空间:MAIN表空间主要是由用户创建,用于存放业务数据。在该表空间内,用户有权限创建各种数据库对象,如表、索引和存储过程等。为了维持数据管理的清晰性和优化性能,在存在多个业务线或系统时,建议为每个业务或系统分别创建独立的表空间。这样的做法能够实现数据隔离,便于管理,并且有助于提升系统的维护效率和数据安全性。
随着数据库中数据的不断膨胀以及并发操作的日益频繁,表空间中的数据文件,如SYSTEM, ROLL, TEMP, 和MAIN等可能会显著增长,进而占据庞大的磁盘资源,有时甚至可能触及磁盘容量的极限。在这种情况下,尤其当原始数据分区不支持在线扩容,或存储设备无法满足性能与安全性需求时,我们便可以考虑对这些关键表空间的存放位置进行修改,从而提升数据库性能和保障数据完整性。
数据库安装路径 | 数据库实例路径 |
/home/dmdba/dmdbms | /dm/dmdata/DMDB |
表空间名称 | 调整前路径 | 调整后路径 |
SYSTEM | /dm/dmdata/DMDB | /dm/dmdata/new_data |
ROLL | /dm/dmdata/DMDB | /dm/dmdata/new_data |
TEMP | /dm/dmdata/DMDB | /dm/dmdata/new_data |
MAIN | /dm/dmdata/DMDB | /dm/dmdata/new_data |
2.1 查询当前数据文件路径
通过使用SYSDBA账户连接到数据库,对数据文件路径进行查找。
--查找数据文件路径
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA
SQL> select a.name,a.status$,b.path from v$tablespace a left join v$datafile b on a.id=b.group_id;
复制
2.2 数据库备份
在利用dmrman文件映射功能更改数据目录路径之前,必须确保数据库已经创建了一份完整的备份。
--关闭数据库
[dmdba@localhost bin]$ ./DmServiceDMDB stop
--数据库备份
[dmdba@localhost bin]$ ./dmrman
RMAN> backup database '/dm/dmdata/DMDB/dm.ini' backupset '/dm/dmbak/bak_full';
复制
2.3 生成映射文件
通过dmrman生成全量备份的映射文件。
[dmdba@localhost bin]$ ./dmrman
RMAN> dump backupset '/dm/dmbak/bak_full' database '/dm/dmdata/DMDB/dm.ini' mapped file '/dm/dmdata/DMDB/dump_file.txt';
cat dm/dmdata/DMDB/dump_file.txt
复制
2.4 编辑映射文件内数据文件路径
使用vi命令对映射文件内数据文件的路径进行按需调整(例如我需要修改ROLL、SYSTEM及MAIN数据文件路径则修改以下内容),TEMP数据文件修改则直接修改dm.ini内TEMP_PATH参数即可。
[dmdba@localhost bin]$ vi dm/dmdata/DMDB/dump_file.txt
data_path = /dm/dmdata/new_data/SYSTEM.DBF
data_path = /dm/dmdata/new_data/ROLL.DBF
data_path = /dm/dmdata/new_data/MAIN.DBF
[dmdba@localhost bin]$ vi dm/dmdata/DMDB/dm.ini
TEMP_PATH = /dm/dmdata/new_data
复制
2.5 通过映射文件将备份进行还原
使用DMRMAN将备份与映射文件进行还原和恢复。
[dmdba@localhost bin]$ ./dmrman
RMAN> restore database '/dm/dmdata/DMDB/dm.ini' from backupset '/dm/dmbak/bak_full' mapped file '/dm/dmdata/DMDB/dump_file.txt';
RMAN> recover database '/dm/dmdata/DMDB/dm.ini' from backupset '/dm/dmbak/bak_full';
RMAN> recover database '/dm/dmdata/DMDB/dm.ini' update db_magic;
复制
2.6 开启数据库并检查日志有无报错
修改完成后对数据库进行开启,并检查开启过程中有误报错。若无报错可登录数据库查看表空间数据文件路径是否修改成功。
--启动数据库
[dmdba@localhost bin]$ ./DmServiceDMDB start
--检查日志情况
[dmdba@localhost bin]$ cat home/dmdba/dmdbms/log/dm_DMDB_202401.log | grep -iE 'error|fatal'
--登录数据库查看是否修改成功
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA
SQL> select a.name,a.status$,b.path from v$tablespace a left join v$datafile b on a.id=b.group_id;
复制
用dmrman工具进行文件映射,操作过程标准化且安全性更高,但在数据量大时可能导致较长的备份和恢复时间,更适合对数据完整性有较高要求的场景。
以上为本期分享,希望能带给大家帮助。想要了解更多往期干货,可访问页面最下方#达梦技术干货攻略#合集或下方相关分享。在此邀请更多学员参与“达梦技术干货投稿活动”,稿件获选后将在达梦“干货分享”专栏进行发布,欢迎来稿!
相关分享:
【开班通知】第16期DM8-DCA线上培训班招生中(2024年06月12日开班)
【开班通知】DM8-DCP线上培训班招生中(2024年06月17日开班)
【公开课】火速关注!2024年达梦数据库运维系列公开课来啦!
