达梦数据库修改各表空间文件、重做日志路径

前言:在日常运维过程中会发现,因为前期对数据量预估不准确、中期业务增长量超过预期及其他一些故障等原因,会导致文件占用磁盘空间过大甚至不够用,若在磁盘空间不能扩容的情况下,只能通过删除部分不重要的文件(如各应用的日志文件、创建的测试文件、应用安装包等)来释放部分可用空间出来。如果此服务器是专门提供给数据库使用的,比如达梦数据库,上面的基本就是数据相关的文件了,此时删除数据库运行日志文件一般不会释放出来太多可用空间,此时可以考虑通过更改里面的表空间文件、重做日志路径来达到近似扩容的目的

说明:1、更改路径是在确定磁盘空间无法扩容,但磁盘占用率还在上升且可用磁盘空间剩余不多的情况下使用,剩余磁盘空间很大、磁盘可在线扩容(如磁盘做了lvm)的情况下,一般不建议更改文件路径,避免误操作导致出现故障

           2、在操作前,一定要做好数据备份,这样可以在误操作后有问题的情况下进行数据恢复,比如达梦数据库可以通过dmrman工具来备份和恢复数据

           3、以下操作全部基于达梦数据库,若是其它数据库,可自行查找其官网文档看下是否有类似的操作

一.文件分类

在达梦数据库安装好且初始化了一个实例后,在它的实例路径下会包含许多文件,包括MAIN表空间文件、普通表空间文件、SYSTEM表空间文件、TEMP表空间文件、ROLL表空间文件、重做日志、初始化日志、控制文件、配置文件等

二.查看各文件状态和路径等信息

1.查看当前表空间信息

select file_id,file_name,tablespace_name from dba_data_files;

2.查看当前表空间类型和状态(status为0表示联机,1为脱机)

select tablespace_name,status,contents from dba_tablespaces;

 

三.当数据库为运行状态时修改路径

1.普通表空间文件路径修改

1.1让表空间脱机,同时确认表空间状态

alter tablespace "TEST_TBS" offline;

 

 

1.2修改表空间路径

alter tablespace "TEST_TBS" rename datafile '/data/dm_instance/DAMENG/test_tbs.dbf' to '/data1/dm_instance/DAMENG/test_tbs.dbf';

 可以发现报错了,经过检查,原因是修改后的路径不存在,创建后再试试

 发现仍然报错,原因是此目录为root权限,需要修改成dmdba权限

 修改权限后正常了

1.3表空间联机

alter tablespace "TEST_TBS" online;

 

2.SYSTEM表空间文件、ROLL表空间文件、MAIN表空间文件路径修改

2.1将表文件脱机

可以发现SYSTEM、ROLL、TEMP不允许脱机,MAIN可以脱机,即MAIN可以和普通表空间文件一样修改,其他不行。SYSTEM、ROLL、TEMP不能在数据库运行时修改,后面再测试在数据库为停止状态时路径的修改

3.重做日志文件路径修改

3.1查看重做日志信息

select * from v$rlogfile;

 

3.2修改重做日志文件路径

alter database rename logfile '/data/dm_instance/DAMENG/DAMENG01.log' to '/data1/dm_instance/DAMENG/DAMENG01.log';

可以发现报错了,报错信息为只允许在mount状态normal模式下执行

修改数据库状态为mount后再试试

可以发现DAMENG01.log文件的路径已修改成功

四.当数据库为停止状态时修改路径

数据文件路径大多存放在控制文件dm.ctl中,但dm.ctl文件是二进制文件,无法直接查看和编辑,需要借助dmctlcvt工具转换后查看和编辑

 

将dm.ctl转换为dm.txt

./dmctlcvt type=1 src=/data/dm_instance/DAMENG/dm.ctl dest=/data/dm_instance/DAMENG/dm.txt

 

查看dm.txt文件内容,会发现有我们需要的各表空间文件信息和路径信息

 

 

 

 

 

可以看到dm.txt文件中,不仅有之前在数据库运行时不能脱机操作的SYSTEM、ROLL文件信息和路径信息,也有之前在数据库运行时能脱机操作的TEST_TBS、MAIN和重做日志DAMENG01.log,说明在数据库停止状态下,也可以对普通表空间和重做日志路径进行修改,修改方法就是在dm.ctl控制文件中找到希望修改的文件路径然后进行修改。

以下选择两个之前无法脱机的表空间文件(ROLL、TEMP)来测试

1.ROLL表空间文件修改路径

1.1将不可编辑的二进制控制文件dm.ctl转换成可编辑的txt文件

./dmctlcvt type=1 src=/data/dm_instance/DAMENG/dm.ctl dest=/data/dm_instance/DAMENG/dm.txt

 

 1.2修改dm.txt文件中的ROLL的路径

 

1.3把可编辑的控制文件dm.txt转换成不可修改的二进制控制文件dm.ctl,操作前先将原来的dm.ctl文件删除或者重命名

./dmctlcvt type=2 src=/data/dm_instance/DAMENG/dm.txt dest=/data/dm_instance/DAMENG/dm.ctl

1.4启动数据库

为了便于观察,以前台方式启动数据库

./dmserver /data/dm_instance/DAMENG/dm.ini

可以发现启动失败了,从报错信息看,启动失败是因为修改后的新路径没有ROLL.DBF文件

将ROLL.DBF文件从原路径移动到新路径

再次启动数据库

 发现还是启动失败了,原因是控制文件dm.ctl拒绝访问

经过检查,发现之前操作的时候是用的root用户,转换后的dm.ctl文件也为root权限,修改为dmdba用户后再试试

可以发现启动没问题了

2.TEMP表空间文件修改路径

2.1经过之前对dm.ctl控制文件转换后查看内容,发现此文件中兵没有TEMP表空间信息,通过查看dm.ini文件,发现里面有TEMP路径信息

2.2修改dm.ini配置文件中TEMP_PATH路径 

2.3启动数据库,查看是否正常

 

发现启动正常

2.4查看TEMP.DBF文件所在路径

可以发现在原路径下的TEMP.DBF文件依然存在,同时在修改后的新路径下也生成了一个TEMP.DBF文件

后续经过测试,发现DM7和DM8在修改TEMP.DBF文件后略有不同

DM7修改TEMP.DBF文件路径后,原路径下的TEMP.DBF文件会直接移动到新路径下;

DM8修改TEMP.DBF文件路径后,原路径下的TEMP.DBF文件依然存在,会在新路径下新生成一个TEMP.DBF文件

总结:

数据库服务运行时

1.普通表空间、MAIN表空间都可通过脱机的方式修改表空间文件路径,并且新路径需要存在且权限为dmdba,否则会报错

2.重做日志可通过将数据库修改为MOUNT状态后再修改日志文件路径,并且新路径需要存在且权限为dmdba,否则会报错

3.SYSTEM、ROLL、TEMP不允许通过脱机方式修改表空间文件路径

数据库服务停止时

1.普通表空间、MAIN、SYSTEM、ROLL、重做日志都可以通过dm.ctl控制文件来修改文件路径,并且需要将文件从原路径移动到新路径下

2.TEMP可以通过dm.ini文件来修改路径;

DM7修改TEMP.DBF文件路径后,原路径下的TEMP.DBF文件会直接移动到新路径下

DM8修改TEMP.DBF文件路径后,原路径下的TEMP.DBF文件依然存在但不使用,会在新路径下生成一个TEMP.DBF文件来使用

 

更多资讯请上达梦技术社区了解:https://eco.dameng.com

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值