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

本文介绍了在磁盘空间不足时,如何在达梦数据库中通过修改表空间文件、重做日志路径来释放空间。详细步骤包括:普通表空间的脱机修改、数据库停止时通过控制文件修改表空间路径、重做日志的修改等,并强调了操作前的数据备份和权限设置的重要性。此外,还对比了DM7和DM8在修改TEMP表空间文件路径后的不同行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

说明: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

 

 

 

 

<think>嗯,用户现在想了解达梦数据库重做日志相关参数。之前他们遇到了查询条件`where status !=1`无法得到正确结果的问题,可能是在处理数据时遇到了日志或数据一致性的问题,所以现在需要查看重做日志的参数。 首先,我需要回忆一下达梦数据库重做日志是什么。重做日志(Redo Log)在数据库中通常用于记录数据的变化,确保在系统崩溃时能够恢复数据。达梦作为国产数据库,应该也有类似的机制。用户可能需要调整或查看这些日志的参数,比如日志文件的大小、数量、存储路径等,以优化性能或解决存储问题。 接下来,用户提到的“相关参数”,可能需要具体的参数名称和查看方法。达梦数据库可能有系统视图或系统函数来查询这些参数,比如通过SQL语句查询`V$PARAMETER`视图或者使用特定的系统过程。例如,`SP_GET_PARAMETER`这样的存储过程。 然后,我需要考虑用户的使用场景。用户可能是数据库管理员,负责维护数据库的性能和稳定性。他们可能需要调整重做日志的大小,防止日志文件过小导致频繁切换,或者检查日志文件的存放路径是否合理,是否存在磁盘空间不足的风险。此外,用户可能遇到日志写入延迟的问题,需要查看相关的参数配置。 用户可能没有说出来的深层需求,可能包括如何优化重做日志的配置以提高数据库性能,或者在发生故障时如何利用重做日志进行恢复。因此,除了查看参数外,可能还需要解释每个参数的作用和调整建议,以及如何监控日志的状态。 我还需要确保回答的结构清晰,分步骤说明如何查看这些参数,比如使用哪些SQL语句,访问哪些系统视图。同时,要给出参数的含义和典型配置值,帮助用户理解当前配置是否合理。例如,`RLOG_FILE_SIZE`可能控制每个重做日志文件的大小,默认可能是256MB,用户可以根据需要调整。 另外,可能需要提醒用户注意事项,比如修改某些参数需要重启数据库,或者在生产环境中谨慎调整日志参数,避免影响数据库的稳定性和恢复能力。可能还需要提到如何监控重做日志的使用情况,比如是否有频繁的日志切换,是否出现日志文件无法及时归档的情况。 最后,总结一下,用户需要的是如何查看达梦数据库重做日志相关参数,以及这些参数的意义和配置建议。确保回答涵盖具体的SQL命令、参数解释、使用场景和优化建议,帮助用户全面了解并有效管理重做日志配置。</think>--- ### **达梦数据库重做日志(Redo Log)参数详解** 重做日志(Redo Log)是达梦数据库实现事务持久性和崩溃恢复的核心组件,记录所有数据变更操作。以下是关键参数及其查看方法: --- ### **一、查看重做日志参数的方法** #### 1. **通过系统视图 `V$PARAMETER`** ```sql -- 查看所有参数(过滤关键字) SELECT NAME, VALUE, DESCRIPTION FROM V$PARAMETER WHERE NAME LIKE '%RLOG%' OR NAME LIKE '%REDO%'; ``` #### 2. **使用系统过程 `SP_GET_PARAMETER`** ```sql -- 查看单个参数 SP_GET_PARAMETER('RLOG_FILE_SIZE'); -- 示例:重做日志文件大小 ``` #### 3. **通过动态性能视图 `V$RLOG`** ```sql -- 查看当前重做日志状态 SELECT * FROM V$RLOG; ``` --- ### **二、核心重做日志参数说明** | **参数名称** | **默认值** | **作用** | |------------------------|------------|--------------------------------------------------------------------------| | `RLOG_FILE_SIZE` | `256` (MB) | 单个重做日志文件大小。 | | `RLOG_FILE_NUM` | `3` | 重做日志文件组数量(循环覆盖使用)。 | | `RLOG_PARALLEL_ENABLE` | `1` | 是否启用并行重做日志写入(`1`启用,`0`禁用)。 | | `RLOG_APPEND_MODE` | `SYNC` | 日志写入模式:<br>- `SYNC`:同步写入(数据强一致)<br>- `ASYNC`:异步写入(高性能) | | `RLOG_PATH` | `./log` | 重做日志文件存储路径。 | | `RLOG_RESERVE_DAYS` | `7` | 归档日志保留天数(需开启归档模式)。 | --- ### **三、参数详细解析** #### 1. **`RLOG_FILE_SIZE`** - **作用**:控制单个重做日志文件的大小。 - **场景建议**: - 若事务频繁,文件过小会导致日志切换频繁,建议调整为 `512 MB` 或 `1 GB`。 - 修改需重启数据库生效。 #### 2. **`RLOG_FILE_NUM`** - **作用**:定义日志文件组的数量。 - **示例**: - 默认 `3` 组,日志写满后循环覆盖旧文件。 - 若日志生成极快,可适当增加组数(如 `5`),避免日志覆盖过快导致归档压力。 #### 3. **`RLOG_APPEND_MODE`** - **同步模式(`SYNC`)**: - 事务提交前必须等待日志写入磁盘,确保数据零丢失,但性能较低。 - **异步模式(`ASYNC`)**: - 日志写入缓存后即可提交事务,性能高,但宕机可能丢失部分未落盘日志。 #### 4. **`RLOG_PARALLEL_ENABLE`** - **启用并行写入**: - 多线程并发写入日志,提升高并发场景性能。 - 需确保存储设备支持高 IOPS(如 SSD)。 --- ### **四、操作示例** #### 1. **调整日志文件大小** ```sql -- 修改参数(需重启生效) SP_SET_PARAMETER('RLOG_FILE_SIZE', '512'); ``` #### 2. **查看当前日志状态** ```sql -- 显示日志组、文件路径、状态(ACTIVE/INACTIVE) SELECT GROUP_ID, PATH, STATUS FROM V$RLOGFILE; ``` #### 3. **监控日志切换频率** ```sql -- 统计最近 1 小时日志切换次数 SELECT COUNT(*) FROM V$LOG_HISTORY WHERE FIRST_TIME >= SYSDATE - 1/24; ``` --- ### **五、注意事项** 1. **日志文件路径**: - 确保 `RLOG_PATH` 所在磁盘有足够空间,避免日志写满导致数据库挂起。 - 建议日志文件与数据文件分盘存储,减少 IO 竞争。 2. **归档模式**: - 若开启归档(`ARCHIVELOG`模式),需定期清理过期归档日志,防止磁盘占满。 3. **参数修改风险**: - `RLOG_APPEND_MODE` 从 `SYNC` 改为 `ASYNC` 可能降低数据安全性,需评估业务容忍度。 --- ### **总结** 达梦重做日志参数直接影响事务持久性、性能和数据恢复能力。通过 `V$PARAMETER` 和 `V$RLOG` 视图可快速查看配置,关键参数需根据业务负载和硬件条件优化。同步模式保障数据安全,异步模式提升吞吐量,归档设置需结合备份策略使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值