达梦数据库之数据文件迁移
一 前言
在实际生产环境中,可能存在数据磁盘空间不足的情况,一般情况下,我们会通过增加新的磁盘来解决,当新磁盘增加完毕后,需要将原数据文件迁移一部分到新磁盘空间,以释放原数据磁盘的空间,本文主要阐述此种情况下数据文件的移动。
二 环境描述
操作系统版本:
[[email protected] ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.0 (Santiago)
数据库版本:
[[email protected] ~]$ disql sysdba/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 60.654(毫秒)
disql V7.6.0.171-Build(2019.07.02-109059)ENT
SQL> select * from v$version;
行号 BANNER
1 DM Database Server x64 V7.6.0.171-Build(2019.07.02-109059)ENT
2 DB Version: 0x7000a
已用时间: 55.167(毫秒). 执行号:5.
三 数据文件迁移步骤
1、关闭数据库服务并通过dmctlcvt转换控制文件为文本文件;
2、拷贝数据文件到新的路径;
3、修改控制文件中数据文件的路径到新的路径并重建控制文件;
4、启动数据库服务
注意:如果是用户表空间的所有数据文件都更换了位置,也需要同时修改dm.ini中的数据文件的路径!!!
四 数据文件迁移过程
4.1 创建测试环境
创建如下表空间及用户用于数据文件迁移测试。
表空间:
create tablespace "SEMITER" datafile '/usr/appsoft/dmdbms/data/TEST/semiter01.dbf' size 128 CACHE = NORMAL;
表空间扩展:
alter tablespace "SEMITER" add datafile '/usr/appsoft/dmdbms/data/TEST/semiter02.dbf' size 128;
用户:
create user "SEMITER" identified by "semiter123" default tablespace "SEMITER";
角色与权限:
grant "DBA","PUBLIC","RESOURCE" to "SEMITER";
alter user "SEMITER" limit failed_login_attemps unlimited, pa$$word_lock_time unlimited, pa$$word_grace_time unlimited;
表空间SEMITER中有两个数据文件,semiter01.dbf和semiter02.dbf,我们将迁移semiter02.dbf到新的目录/usr/appsoft/dmdbms/data下。
迁移前数据文件路径如下:
SQL> select t.name tablespace_name,t.id file_id,d.path file_name,d.total_size*SF_GET_PAGE_SIZE()/1024/1024||'M' total_space from v$tablespace t, v$datafile d where t.id=d.group_id and t.name='SEMITER';
行号 tablespace_name file_id file_name total_space
1 SEMITER 5 /usr/appsoft/dmdbms/data/TEST/semiter02.dbf 128M
2 SEMITER 5 /usr/appsoft/dmdbms/data/TEST/semiter01.dbf 128M
已用时间: 2.918(毫秒). 执行号:19.
SQL>
4.2 关闭实例并转换控制文件为文本文件
1.关闭数据库实例:
[[email protected] data]# /etc/init.d/DmServiceTEST stop
Stopping DmServiceTEST: [ OK ]
2.转换控制文件
[[email protected] usr]$
dmctlcvt type=1 src=/usr/appsoft/dmdbms/data/TEST/dm.ctl dest=/tmp/semiter.txt
DMCTLCVT V7.6.0.171-Build(2019.07.02-109059)ENT
convert ctl to txt succe$$!
4.3 拷贝数据文件到新的路径
[[email protected] TEST]$ pwd
/usr/appsoft/dmdbms/data/TEST
[[email protected] TEST]$ mv semiter02.dbf …/
4.4 修改文本文件中数据文件路径到新路径并重建控制文件
[[email protected] IESDB]$ cat /tmp/semiter.txt |grep semiter02.dbf
fil_path=/usr/appsoft/dmdbms/data/semiter02.dbf
[[email protected] IESDB]$ dmctlcvt type=2 src=/tmp/semiter.txt
dest=/usr/appsoft/dmdbms/data/IESDB/dm.ctl
DMCTLCVT V7.6.0.171-Build(2019.07.02-109059)ENT
convert txt to ctl succe$
4.5 启动数据库并进行验证
[[email protected] IESDB]$ /etc/init.d/DmServiceDM1 start
Starting DmServiceIESDB: [ OK ]
SQL> select t.name tablespace_name,t.id file_id,d.path
file_name,d.total_size*SF_GET_PAGE_SIZE()/1024/1024||‘M’ total_space from vdatafile d where t.id=d.group_id and t.name=‘SEMITER’;
行号 tablespace_name file_id file_name total_space
1 SEMITER 5 /usr/appsoft/dmdbms/data/semiter02.dbf 128M
2 SEMITER 5 /usr/appsoft/dmdbms/data/IESDB/semiter01.dbf 128M
已用时间: 9.828(毫秒). 执行号:4.
从上面的输出中可以明显看到,semiter02.dbf的路径已经更改,至此我们就完成了达梦数据库下数据文件路径的修改。
上一篇: Thinkphp 3.2.2 整合Swfupload上传插件
下一篇: shell的基本命令
推荐阅读
-
基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作
-
mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作详解
-
Centos7 安装达梦数据库的教程
-
DM8达梦数据库ODBC开发环境安装(五)
-
达梦数据库快速获取某张表的DDL
-
ASP.NET CORE系列【六】Entity Framework Core 之数据库迁移
-
Laravel 5框架学习之数据库迁移(Migrations)
-
MyBatis-plus+达梦数据库实现自动生成代码的示例
-
达梦数据库如何解决sql卡住的问题
-
达梦数据库DCA培训学习