联机重做日志(REDO Log)是DM8数据库必备的物理日志文件,属于数据库核心物理存储结构,默认存储在数据库data数据目录下,遵循WAL 预写日志机制。数据库所有的数据修改操作,包括DML(INSERT/UPDATE/DELETE)、DDL(建表、改字段、建索引等),均会优先生成REDO日志记录,再完成内存数据页修改,最终刷入磁盘数据文件。
其核心作用为实例崩溃恢复:当数据库突发断电、进程异常终止、服务器宕机等故障时,内存中未写入磁盘的脏数据会全部丢失。数据库重启后,会自动读取联机REDO日志,重做所有已提交但未落地的事务,回滚所有未提交的事务,最终保证数据库数据的一致性与完整性。
DM8数据库REDO日志采用循环写入、循环覆写机制。数据库默认配置2组联机REDO日志文件,默认单文件大小4096M,命名规则为DAMENG01.log、DAMENG02.log。DM8通过LSN(日志序列号)标记日志写入位置,每一条REDO日志都对应唯一LSN,是日志切换、归档同步、故障恢复的核心标识。
redo日志写入、循环覆盖运行流程:
-- 查询REDO日志整体状态、当前活跃日志、数据库LSN信息
select * from v$rlog;
-- 查询所有联机REDO日志文件路径、大小、文件编号
select * from v$rlogfile;
--查询自服务启动后,当前节点 redo 日志切换的历史信息
select * from v$log_history;
达梦数据库重做日志文件默认后缀为 log,日常运行过程中该类文件磁盘占用较高。当存储空间紧张时,部分运维人员因不熟悉数据库物理存储结构,误将命名格式为 DAMENGXX.log 的重做日志当作数据库日志直接删除清理,最终引发数据库异常宕机。
为规避此类人为误操作风险,可在数据库初始化阶段配置参数 RLOG_POSTFIX_NAME,自定义重做日志文件的后缀名称,依靠区分文件名的方式,防止日志文件被误删。
##初始化数据库,指定 RLOG_POSTFIX_NAME 修改redo日志后缀名
[dmdba@dm8 dmdata]$ dminit PATH=/data/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=256 RLOG_POSTFIX_NAME=redo SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
[dmdba@dm8 DAMENG]$ ls -lrth DAMENG0*
-rw-r--r-- 1 dmdba dinstall 256M 8月 11 15:55 DAMENG01.redo
-rw-r--r-- 1 dmdba dinstall 256M 8月 11 15:55 DAMENG02.redo
在实际运维场景中,当数据库业务并发量大、事务频繁提交,导致联机REDO日志切换过于频繁,引发数据库性能抖动、归档压力增大、日志切换等待、业务卡顿等问题时,需要新增REDO日志文件组,提升日志写入吞吐量,均衡日志切换频率,保障数据库稳定运行。
-- 新增256M重做日志文件
SQL> alter database add logfile '/dm/data/DAMENG/DAMENG04.redo' size 256;
在日志组数已满足部署规范、无需新增日志文件的前提下,可通过扩容单个REDO日志文件容量,延长单次日志写入周期,减少日志切换频次,降低系统IO开销与归档压力,稳定数据库运行性能。DM8仅支持REDO日志文件容量扩容,不支持缩容操作。
--1. 将 redo 日志扩容到 512 M
SQL> alter database resize logfile '/dm/data/DAMENG/DAMENG04.redo' to 512;
操作已执行
--2. 尝试 redo 日志缩容回 256M
SQL> alter database resize logfile '/dm/data/DAMENG/DAMENG04.redo' to 256;
alter database resize logfile '/dm/data/DAMENG/DAMENG04.redo' to 256;
[-2410]:数据文件[/dm/data/DAMENG/DAMENG04.redo]大小无效.
当数据库初始部署目录磁盘容量不足、磁盘IO性能较差、日志文件与数据文件混盘存放导致IO争抢严重,需要迁移REDO日志文件到独立磁盘或I/O性能更高的磁盘。通过独立存放联机日志,可分散数据库IO压力,避免磁盘故障牵连整库数据,同时提升数据库事务写入性能与运行稳定性。
--1. 将数据库转换成 MOUNT 状态
SQL> alter database mount;
操作已执行
--2. 修改日志文件存放路径,源文件会移动到新目录下
SQL> alter database rename logfile '/dm/data/DAMENG/DAMENG04.redo' to '/data/dmredo/DAMENG04.redo';
操作已执行
--3. 打开数据库
SQL> alter database open;
操作已执行
当前期为优化高并发业务、缓解日志频繁切换压力而手动新增了多组REDO日志,后期业务量回落、并发事务减少,多余日志组造成磁盘资源浪费、日志管理冗余;或进行数据库标准化整改、日志架构规整、磁盘空间瘦身、恢复数据库默认标准日志架构时,需要删除多余的REDO日志文件。删除冗余日志可精简数据库物理存储结构,减少后台日志扫描与监控开销,保障日志组数量合理、架构规范,适配当前业务负载。
注意:禁止删除当前活跃日志、系统默认DAMENG01/02基础日志文件,仅可删除手动新增的最大编号空闲日志文件。
--1. 删除多余的redo日志文件
SQL> alter database drop logfile '/data/dmredo/DAMENG04.redo';
操作已执行
--2. 不能删除当前活跃日志
SQL> alter database drop logfile '/dm/data/DAMENG/DAMENG03.log';
alter database drop logfile '/dm/data/DAMENG/DAMENG03.log';
[-566]:目标联机日志文件上存在有效日志,不允许删除.
--3. 无法删除ID较小的 redo 日志文件
SQL> alter database drop logfile '/dm/data/DAMENG/DAMENG02.log';
alter database drop logfile '/dm/data/DAMENG/DAMENG02.log';
[-3463]:只允许删除ID最大的文件.
在实际运维场景中,数据库高并发业务波动、大批量数据写入、定时任务批量操作等场景,极易造成REDO日志短时间内频繁切换。若日志切换次数过高,会持续加重FLUSH刷盘线程与归档线程压力,引发磁盘IO飙升、事务等待、业务响应变慢、集群同步延迟等性能问题。为提前预判业务压力、优化日志文件大小与组数、规避性能瓶颈、保障数据库平稳运行,需要根据切换频次动态调整日志大小和个数。
--统计每小时REDO日志切换次数
SELECT
TO_CHAR(RECTIME, 'yyyy-mm-dd hh24') AS log_hour,
COUNT(*) AS switch_cnt
FROM V$LOG_HISTORY
GROUP BY TO_CHAR(RECTIME, 'yyyy-mm-dd hh24')
ORDER BY log_hour;
在运维过程中,若操作人员误通过rm命令物理删除正在使用的联机REDO日志文件,会直接威胁数据库正常运行与数据安全。该故障分为两种核心场景,处理方式完全不同:一种是数据库dmserver进程未停止、日志文件句柄未释放,可通过系统句柄无损恢复日志;另一种是数据库已重启、文件句柄彻底释放,无法直接恢复文件,可通过初始化新的实例,将新初始化的REDO日志,修改日志文件 db_magic。
请注意:重做日志替换后拉起的数据库,无论经由哪种方案完成恢复,都存在潜在风险。为避免后续业务运行产生新问题、致使数据库服务再度故障,应当尽快将业务数据迁移部署至全新生产环境。
本次故障修复基于如下环境进行操作:
| 环境参数 | 参数详情 |
|---|---|
| CPU架构 | x86_64 |
| 操作系统 | Kylin Linux Advanced Server V10 (Sword) |
| 数据库版本 | 03134284552-20260414-322369-20221 |
原理:数据库进程未关闭时,内核会保留已删除文件的句柄,可通过/proc目录还原文件,数据库恢复正常。
--1. 创建表
CREATE TABLE APP_USER.EMPINFO
(
EMPNO INT,
ENAME VARCHAR(20) NOT NULL,
JOB VARCHAR(20),
MGR INT,
HIREDATE DATE,
SAL NUMBER(10,2),
COMM NUMBER(10,2),
DEPTNO INT) STORAGE(ON DMDATA, CLUSTERBTR) ;
--2. 插入数据
insert into "APP_USER"."EMPINFO"("EMPNO", "ENAME", "JOB", "MGR", "HIREDATE", "SAL", "COMM", "DEPTNO") values(18264, 'Tonya Pokora', '教育', 62030, '2020-04-11', 4513.63, 851.37, 43);
insert into "APP_USER"."EMPINFO"("EMPNO", "ENAME", "JOB", "MGR", "HIREDATE", "SAL", "COMM", "DEPTNO") values(8545, 'Shenita Nortz', '国际组织', 98016, '1984-11-27', 21936.57, 170.57, 59);
insert into "APP_USER"."EMPINFO"("EMPNO", "ENAME", "JOB", "MGR", "HIREDATE", "SAL", "COMM", "DEPTNO") values(47728, 'Chase Hascall', '采矿业', 23875, '2007-04-13', 9493.47, 144.67, 18);
insert into "APP_USER"."EMPINFO"("EMPNO", "ENAME", "JOB", "MGR", "HIREDATE", "SAL", "COMM", "DEPTNO") values(36269, 'Maurice Brussell', '房地产业', 8394, '2017-07-04', 14950.74, 72.59, 15);
[dmdba@dm8 DAMENG]$ rm -f DAMENG0*.log
[dmdba@dm8 DAMENG]$ ll DAMENG0*
ls: 无法访问 'DAMENG0*': 没有那个文件或目录
SQL> delete from APP_USER.EMPINFO where empno=36269;
影响行数 1
已用时间: 2.161(毫秒). 执行号:11313.
SQL> commit;
操作已执行
已用时间: 5.322(毫秒). 执行号:11314.
SQL> select count(*) from APP_USER.EMPINFO;
行号 COUNT(*)
---------- --------------------
1 3
[root@dm8 DAMENG]# ps -ef|grep dmserver
dmdba 1320 1 0 14:30 ? 00:00:19 /dm/dmdbms/bin/dmserver path=/dm/data/DAMENG/dm.ini -noconsole
[root@dm8 DAMENG]# ll /proc/1320/fd|grep delete
lrwx------ 1 dmdba dinstall 64 8月 11 14:30 7 -> /dm/data/DAMENG/DAMENG01.log (deleted)
lrwx------ 1 dmdba dinstall 64 8月 11 14:30 8 -> /dm/data/DAMENG/DAMENG02.log (deleted)
lrwx------ 1 dmdba dinstall 64 8月 11 14:30 9 -> /dm/data/DAMENG/DAMENG03.log (deleted)
[dmdba@dm8 fd]$ cp /proc/1320/fd/7 /dm/data/DAMENG/DAMENG01.log [dmdba@dm8 fd]$ cp /proc/1320/fd/8 /dm/data/DAMENG/DAMENG02.log [dmdba@dm8 fd]$ cp /proc/1320/fd/9 /dm/data/DAMENG/DAMENG03.log
SQL> backup database to shutdownbefore backupset '/backup/shutdownbefore';
操作已执行
[root@dm8 DAMENG]# systemctl stop DmServiceDMSERVER
[root@dm8 DAMENG]# systemctl start DmServiceDMSERVER
[dmdba@dm8 fd]$ disql SYSDBA/Dameng123 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 4.232(ms) disql V8 SQL> select count(*) from APP_USER.EMPINFO; 行号 COUNT(*) ---------- -------------------- 1 3
原理:在其他服务初始化一套初始化参数完全一致的空白临时实例,将新实例生成的完整REDO日志文件,传输替换到故障数据库的日志目录中,再通过 dmmdf 工具修改替换后日志文件的 db_magic、clsn 元数据,从而拉起故障数据库。
--1. 创建表
CREATE TABLE "APP_USER"."DEPTINFO"
(
"DEPTNO" INT,
"DNAME" VARCHAR(30) NOT NULL,
"LOC" VARCHAR(30)) STORAGE(ON "DMDATA", CLUSTERBTR) ;
--2. 插入数据
insert into "APP_USER"."DEPTINFO"("DEPTNO", "DNAME", "LOC") values(1388, 'Nichol Truan', '贵州省贵阳市乌当区');
insert into "APP_USER"."DEPTINFO"("DEPTNO", "DNAME", "LOC") values(971, 'Lise Plyer', '山西省太原市晋源区');
insert into "APP_USER"."DEPTINFO"("DEPTNO", "DNAME", "LOC") values(570, 'Valene Ohaver', '湖南省岳阳市湘阴县');
insert into "APP_USER"."DEPTINFO"("DEPTNO", "DNAME", "LOC") values(1456, 'Quyen Sondrup', '广东省江门市台山市');
insert into "APP_USER"."DEPTINFO"("DEPTNO", "DNAME", "LOC") values(260, 'Nohemi Hammersley', '浙江省衢州市龙游县');
insert into "APP_USER"."DEPTINFO"("DEPTNO", "DNAME", "LOC") values(79, 'Krissy Escobar', '湖南省株洲市茶陵县');
insert into "APP_USER"."DEPTINFO"("DEPTNO", "DNAME", "LOC") values(1043, 'Taisha Tintinger', '河北省唐山市迁西县');
insert into "APP_USER"."DEPTINFO"("DEPTNO", "DNAME", "LOC") values(594, 'Cordie Meche', '重庆市北碚区');
[dmdba@dm8 DAMENG]$ ll DAMENG0*
-rw-r--r-- 1 dmdba dinstall 268435456 8月 12 13:54 DAMENG01.log
-rw-r--r-- 1 dmdba dinstall 268435456 8月 12 13:51 DAMENG02.log
-rw-r--r-- 1 dmdba dinstall 536870912 8月 12 13:56 DAMENG03.log
[dmdba@dm8 DAMENG]$ rm -f DAMENG0*
SQL> select LOC from APP_USER.DEPTINFO WHERE DEPTNO=594;
行号 LOC
---------- ------------------
1 重庆市北碚区
SQL> update APP_USER.DEPTINFO set LOC='贵州省贵阳市乌当区' WHERE DEPTNO=594;
影响行数 1
SQL> select LOC from APP_USER.DEPTINFO WHERE DEPTNO=594;
行号 LOC
---------- ---------------------------
1 贵州省贵阳市乌当区
[root@dm8 ~]# systemctl stop DmServiceDMSERVER
[root@dm8 ~]# systemctl start DmServiceDMSERVER
##数据库日志:
2026-08-12 14:06:19.481 [ERROR] database P0000001328 T0000000000000001436 file [/dm/data/DAMENG/DAMENG01.log] is not exist
2026-08-12 14:06:19.481 [ERROR] database P0000001328 T0000000000000001436 file [/dm/data/DAMENG/DAMENG02.log] is not exist
2026-08-12 14:06:19.481 [ERROR] database P0000001328 T0000000000000001436 file [/dm/data/DAMENG/DAMENG03.log] is not exist
2026-08-12 14:07:07.482 [FATAL] database P0000002511 T0000000000000002511 [EID:285]nsvr_check_ts_datafile_if_necessary, /dm/data/DAMENG/DAMENG01.log not exist,can not startup
##1. 可参考源数据库的 dminit_DAMENG_XXX.log,了解源库的初始化参数
[dmdba@dm8 newdmdata]$ dminit PATH=/data/newdmdata PAGE_SIZE=8 EXTENT_SIZE=16 LOG_SIZE=512 CHARSET=1 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123 LOG_PATH=/data/newdmdata/DAMENG/DAMENG01.log LOG_PATH=/data/newdmdata/DAMENG/DAMENG02.log LOG_PATH=/data/newdmdata/DAMENG/DAMENG03.log
[dmdba@dm8 bin]$ ./dmserver path=/data/newdmdata/DAMENG/dm.ini
exit
[dmdba@dm8 DAMENG]$ cp DAMENG0* /dm/data/DAMENG/
[dmdba@dm8 DAMENG]$ cd /dm/data/DAMENG/
[dmdba@dm8 DAMENG]$ ll DAMENG0*
-rw-r--r-- 1 dmdba dinstall 536870912 8月 12 14:52 DAMENG01.log
-rw-r--r-- 1 dmdba dinstall 536870912 8月 12 14:52 DAMENG02.log
-rw-r--r-- 1 dmdba dinstall 536870912 8月 12 14:52 DAMENG03.log
[dmdba@dm8 DAMENG]$ dmmdf type=1 file=/dm/data/DAMENG/SYSTEM.DBF
dmmdf V8
**********************************************************
1 db_magic=140527125
2 next_trxid=328704
3 pemnt_magic=731447538
4 enable_page_check=3
5 rlog_gen_for_huge=1
**********************************************************
Please input which parameter you want to change(1-5), q to quit: q
##1. 按照以下步骤依次修改 DAMENG01.log、DAMENG02.log、DAMENG03.log 文件
[dmdba@dm8 DAMENG]$ dmmdf type=2 file=/dm/data/DAMENG/DAMENG01.log
dmmdf V8
**********************************************************
1 sig = DMRLOG
2 ver = 7007
3 chksum = 1921230114
4 sta = 1
5 n_magic = 7
6 db_magic = 223729181
7 len = 536870912
8 free = 12296192
9 clsn = 49497
10 clsn_fil = 0
11 clsn_off = 12296192
12 pemnt_magic = 570526317
13 fil_id = 0
15 next_seq = 3160
16 g_next_seq = 3160
17 arch_lsn = 0
18 arch_seq = 0
19 dbversion = 0x7000d
20 min_exec_version = V8.1.1.1
21 min_dct_version = 4
22 p_db_magic = 0
23 n_apply_ep = 0
24 apply_info_lsn = 0
pkg_seq_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
apply_lsn_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
25 recv_p_db_magic = 0
26 recv_n_apply_ep = 0
recv_pkg_seq_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
recv_apply_lsn_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
27 l_term_id = 0
28 term_id = 0
29 c_seqno = 3159
30 c_lsn = 49497
31 rpkg_crc_stand = 1
**********************************************************
You can only reset sta(4) or db_magic (6) or clsn (9) or clsn_fil(10) or clsn_off(11) or pemnt_magic(12) or fil_id(13) or next_seq(15) or g_next_seq(16) or p_db_magic(22) or n_apply_ep(23).
Please input the num which one you want to change, q to quit: 6 <----修改数据库的 db_magic
Input the new value: 140527125 <----输入获取到的 db_magic 值
**********************************************************
1 sig = DMRLOG
2 ver = 7007
3 chksum = 2008429866
4 sta = 1
5 n_magic = 7
6 db_magic = 140527125
7 len = 536870912
8 free = 12296192
9 clsn = 49497
10 clsn_fil = 0
11 clsn_off = 12296192
12 pemnt_magic = 570526317
13 fil_id = 0
15 next_seq = 3160
16 g_next_seq = 3160
17 arch_lsn = 0
18 arch_seq = 0
19 dbversion = 0x7000d
20 min_exec_version = V8.1.1.1
21 min_dct_version = 4
22 p_db_magic = 0
23 n_apply_ep = 0
24 apply_info_lsn = 0
pkg_seq_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
apply_lsn_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
25 recv_p_db_magic = 0
26 recv_n_apply_ep = 0
recv_pkg_seq_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
recv_apply_lsn_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
27 l_term_id = 0
28 term_id = 0
29 c_seqno = 3159
30 c_lsn = 49497
31 rpkg_crc_stand = 1
**********************************************************
Do you want to quit and save the change to file (y/n): y <-----输入y进行确认
Save to file success!
##获取要恢复数据库的 cur_lsn
[dmdba@dm8 log]$ cat dm_DMSERVER_202608.log
2026-08-12 14:06:19.021 [INFO] database P0000001328 T0000000000000001536 checkpoint begin, used_space[0], free_space[1073729536]...
2026-08-12 14:06:19.024 [INFO] database P0000001328 T0000000000000001536 ckpt2_log_adjust: full_status: 160, ptx_reserved: 0
2026-08-12 14:06:19.024 [INFO] database P0000001328 T0000000000000001536 ckpt2_log_adjust: ckpt_lsn(1475547), ckpt_fil(2), ckpt_off(56340480), cur_lsn(1475547), l_next_seq(13880), g_next_seq(13880), cur_free(56340480), total_space(1073729536), used_space(0), free_space(1073729536), n_ep(1), db_open_id(56)
2026-08-12 14:06:19.024 [INFO] database P0000001328 T0000000000000001436 shutdown archive subsystem...
2026-08-12 14:06:19.036 [INFO] database P0000001328 T0000000000000001436 OK
2026-08-12 14:06:19.036 [INFO] database P0000001328 T0000000000000001436 shutdown redo log subsystem...
## 修改值比获取的值稍大即可
[dmdba@dm8 DAMENG]$ dmmdf type=2 file=/dm/data/DAMENG/DAMENG01.log
dmmdf V8
**********************************************************
1 sig = DMRLOG
2 ver = 7007
3 chksum = 2008429866
4 sta = 1
5 n_magic = 7
6 db_magic = 140527125
7 len = 536870912
8 free = 12296192
9 clsn = 49497
10 clsn_fil = 0
11 clsn_off = 12296192
12 pemnt_magic = 570526317
13 fil_id = 0
15 next_seq = 3160
16 g_next_seq = 3160
17 arch_lsn = 0
18 arch_seq = 0
19 dbversion = 0x7000d
20 min_exec_version = V8.1.1.1
21 min_dct_version = 4
22 p_db_magic = 0
23 n_apply_ep = 0
24 apply_info_lsn = 0
pkg_seq_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
apply_lsn_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
25 recv_p_db_magic = 0
26 recv_n_apply_ep = 0
recv_pkg_seq_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
recv_apply_lsn_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
27 l_term_id = 0
28 term_id = 0
29 c_seqno = 3159
30 c_lsn = 49497
31 rpkg_crc_stand = 1
**********************************************************
You can only reset sta(4) or db_magic (6) or clsn (9) or clsn_fil(10) or clsn_off(11) or pemnt_magic(12) or fil_id(13) or next_seq(15) or g_next_seq(16) or p_db_magic(22) or n_apply_ep(23).
Please input the num which one you want to change, q to quit: 9 <-----选择修改clsn
Input the new value: 1575547 <-----输入比获取的值大一些
**********************************************************
1 sig = DMRLOG
2 ver = 7007
3 chksum = 2007957000
4 sta = 1
5 n_magic = 7
6 db_magic = 140527125
7 len = 536870912
8 free = 12296192
9 clsn = 1575547
10 clsn_fil = 0
11 clsn_off = 12296192
12 pemnt_magic = 570526317
13 fil_id = 0
15 next_seq = 3160
16 g_next_seq = 3160
17 arch_lsn = 0
18 arch_seq = 0
19 dbversion = 0x7000d
20 min_exec_version = V8.1.1.1
21 min_dct_version = 4
22 p_db_magic = 0
23 n_apply_ep = 0
24 apply_info_lsn = 0
pkg_seq_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
apply_lsn_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
25 recv_p_db_magic = 0
26 recv_n_apply_ep = 0
recv_pkg_seq_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
recv_apply_lsn_arr: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
27 l_term_id = 0
28 term_id = 0
29 c_seqno = 3159
30 c_lsn = 49497
31 rpkg_crc_stand = 1
**********************************************************
Do you want to quit and save the change to file (y/n): y <-----选择y进行确认
Save to file success!
修改其他日志文件,存在的报错:
##1. 该报错不影响修复
Please input the num which one you want to change, q to quit: 9
Input the new value: 1575547
ERROR, rlog is active, dmserver should shutdown normal.
RLOG_CHECK_SPACE 参数[dmdba@dm8 DAMENG]$ vi dm.ini RLOG_CHECK_SPACE = 2
[root@dm8 ~]# systemctl start DmServiceDMSERVER
[dmdba@dm8 ~]$ disql SYSDBA/Dameng123
SQL> select LOC from APP_USER.DEPTINFO WHERE DEPTNO=594;
行号 LOC
---------- ---------------------------
1 贵州省贵阳市乌当区
通过初始化参数RLOG_POSTFIX_NAME自定义联机 REDO 日志文件后缀,添加redo时不使用 log 结尾的后缀名。数据库初始化完成后,联机 REDO 日志默认文件后缀为log,极易被运维人员误识别为普通日志文件,在执行批量日志清理操作时存在误删除联机 REDO 核心日志文件的高危风险。初始化使用该参数可更改联机 REDO 日志文件后缀,与普通日志文件做区分,有效规避运维批量清理文件过程中误删 REDO 日志的重大安全风险,保障数据库事务恢复与实例正常运行。
将联机 REDO 日志部署至独立高速磁盘,不与数据文件、归档日志共用存储介质。通过存储资源物理隔离,规避多类文件之间的 IO 资源争用冲突,减少 IO 竞争带来的性能损耗,保障日志缓存向联机 REDO 日志的刷写效率,提升事务日志落盘速度,同时降低因 IO 瓶颈引发的实例性能抖动、事务等待等问题,保障数据库事务提交与故障恢复能力。
结合实际业务访问特征与事务负载情况,合理配置联机 REDO 日志文件大小。建立常态化巡检机制,持续监控 REDO 日志切换频率,针对日志切换过于频繁的场景,及时调整 REDO 日志单文件大小或日志组数量进行扩容优化,减少短时间内频繁发生日志切换,降低由此带来的数据库性能抖动与业务响应延迟,保障业务高峰期数据库运行平稳。
进行联机 REDO 日志扩容操作时,需保证所有 REDO 日志组成员文件大小保持完全一致。若各日志文件规格不一致,会造成日志组之间处理能力不均衡,引发日志切换异常、检查点波动等潜在问题。统一 REDO 文件大小,可保障日志切换流程稳定可控,避免因文件大小差异带来的性能隐患,维护数据库事务处理的稳定性。
文章
阅读量
获赞
