dm8 redo日志管理
基础环境
操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo)
数据库版本:DM Database Server 64 V8
架构:单实例
1 查看
1.1v$rlogfile
可以查出文件路径、文件大小、创建时间等
SQL> select GROUP_ID,FILE_ID,PATH,CREATE_TIME,RLOG_SIZE/1024/1024 as size_mb from v$rlogfile;行号 GROUP_ID FILE_ID PATH CREATE_TIME SIZE_MB
---------- ----------- ----------- ------------------------- -------------------------- --------------------
1 2 0 /dm8/data/PROD/PROD01.log 2023-08-05 19:51:26.000000 500
2 2 1 /dm8/data/PROD/PROD02.log 2023-08-05 19:51:26.000000 500
3 2 2 /dm8/data/PROD/PROD03.log 2023-08-05 19:51:26.000000 500
2 添加redo日志
达梦数据库的REDO日志文件是有最小大小限制的,最小大小为4096 * 页大小 ,当前数据库的页大小可以通过如下语句查看:
SQL> select para_name,para_value from v$dm_ini where para_name = 'GLOBAL_PAGE_SIZE';行号 PARA_NAME PARA_VALUE
---------- ---------------- ----------
1 GLOBAL_PAGE_SIZE 16384已用时间: 3.314(毫秒). 执行号:505.
SQL>
所以当前数据库能够添加的REDO日志文件最小大小为(4096*16384)/1024/1024=64MB,我们可以通过alert database add logfile的方式添加REDO日志文件
测试一:添加小于64M的REDO日志文件
SQL> alter database add logfile '/dm8/data/PROD/PROD01_t1.log' size 60;
alter database add logfile '/dm8/data/PROD/PROD01_t1.log' size 60;
第1 行附近出现错误[-2410]:数据文件[/dm8/data/PROD/PROD01_t1.log]大小无效.
已用时间: 0.415(毫秒). 执行号:0.
测试二:添加大于等于64M的REDO日志文件
SQL> alter database add logfile '/dm8/data/PROD/PROD01_t1.log' size 64;
操作已执行
已用时间: 14.686(毫秒). 执行号:506.SQL>
SQL> select GROUP_ID,FILE_ID,PATH,CREATE_TIME,RLOG_SIZE/1024/1024 as size_mb from v$rlogfile;行号 GROUP_ID FILE_ID PATH CREATE_TIME SIZE_MB
---------- ----------- ----------- ---------------------------- -------------------------- --------------------
1 2 0 /dm8/data/PROD/PROD01.log 2023-08-05 19:51:26.000000 500
2 2 1 /dm8/data/PROD/PROD02.log 2023-08-05 19:51:26.000000 500
3 2 2 /dm8/data/PROD/PROD03.log 2023-08-05 19:51:26.000000 500
4 2 3 /dm8/data/PROD/PROD01_t1.log 2023-08-10 22:43:00.000000 64已用时间: 0.305(毫秒). 执行号:507.
SQL>
注意:以上过程我们可以看到,当日志文件大小小于64MB时,会提示“第1 行附近出现错误[-2410]:数据文件[/dm8/data/PROD/PROD01_t1.log]大小无效.”。
2 删除redo日志
通过以下两个测试删除redo日志均报错,说明达梦数据库当前不支持删除重做REDO日志。
测试一:alter database drop logfile XX
SQL> alter database drop logfile '/dm8/data/PROD/PROD01_t1.log';
alter database drop logfile '/dm8/data/PROD/PROD01_t1.log';alter database drop logfile '/dm8/data/PROD/PROD01_t1.log';*
第 1 行, 第 32 列[drop]附近出现错误[-2007]:
语法分析出错.
已用时间: 0.259(毫秒). 执行号:0.SQL> alter database drop logfile 'PROD01_t1.log';
alter database drop logfile 'PROD01_t1.log';alter database drop logfile 'PROD01_t1.log';*
第 1 行, 第 32 列[drop]附近出现错误[-2007]:
语法分析出错.
已用时间: 0.285(毫秒). 执行号:0.
测试二:alter database delete logfile XX
SQL> alter database delete logfile '/dm8/data/PROD/PROD01_t1.log';
alter database delete logfile '/dm8/data/PROD/PROD01_t1.log';alter database delete logfile '/dm8/data/PROD/PROD01_t1.log';*
第 1 行, 第 48 列[logfile]附近出现错误[-2007]:
语法分析出错.
已用时间: 0.194(毫秒). 执行号:0.
SQL>
SQL> alter database delete logfile 'PROD01_t1.log';
alter database delete logfile 'PROD01_t1.log';alter database delete logfile 'PROD01_t1.log';*
第 1 行, 第 48 列[logfile]附近出现错误[-2007]:
语法分析出错.
已用时间: 0.189(毫秒). 执行号:0.
4 修改现有redo日志大小
达梦8数据库目前只能对日志文件进行向上(扩大)RESIZE操作,不能进行向下(缩小)RESIZE操作,可以通过
alter database resize logfile ‘日志文件’ to XX; 语句实现,我们现在将上面添加的日志文件由64MB扩大到70MB,再尝试缩小到64MB。
测试一:扩大
SQL> select path,RLOG_SIZE/1024/1024 as size_mb from v$rlogfile;行号 PATH SIZE_MB
---------- ---------------------------- --------------------
1 /dm8/data/PROD/PROD01.log 500
2 /dm8/data/PROD/PROD02.log 500
3 /dm8/data/PROD/PROD03.log 500
4 /dm8/data/PROD/PROD01_t1.log 64已用时间: 1.482(毫秒). 执行号:511.
SQL> alter database resize logfile '/dm8/data/PROD/PROD01_t1.log' to 70;
操作已执行
已用时间: 5.239(毫秒). 执行号:512.
SQL> select path,RLOG_SIZE/1024/1024 as size_mb from v$rlogfile;行号 PATH SIZE_MB
---------- ---------------------------- --------------------
1 /dm8/data/PROD/PROD01.log 500
2 /dm8/data/PROD/PROD02.log 500
3 /dm8/data/PROD/PROD03.log 500
4 /dm8/data/PROD/PROD01_t1.log 70已用时间: 0.250(毫秒). 执行号:513.
测试二:缩小
SQL> select path,RLOG_SIZE/1024/1024 as size_mb from v$rlogfile;行号 PATH SIZE_MB
---------- ---------------------------- --------------------
1 /dm8/data/PROD/PROD01.log 500
2 /dm8/data/PROD/PROD02.log 500
3 /dm8/data/PROD/PROD03.log 500
4 /dm8/data/PROD/PROD01_t1.log 70已用时间: 0.242(毫秒). 执行号:514.
SQL> alter database resize logfile '/dm8/data/PROD/PROD01_t1.log' to 64;
alter database resize logfile '/dm8/data/PROD/PROD01_t1.log' to 64;
[-2410]:数据文件[/dm8/data/PROD/PROD01_t1.log]大小无效.
已用时间: 1.705(毫秒). 执行号:0.
5 修改redo日志路径
达梦数据库REDO日志文件修改路径必须在MOUNT状态下进行,通过alter database rename to语句实现。
SQL> select path from v$rlogfile;行号 PATH
---------- ----------------------------
1 /dm8/data/PROD/PROD01.log
2 /dm8/data/PROD/PROD02.log
3 /dm8/data/PROD/PROD03.log
4 /dm8/data/PROD/PROD01_t1.log已用时间: 1.007(毫秒). 执行号:516.
SQL> alter database rename logfile '/dm8/data/PROD/PROD01_t1.log' to '/dm8/data/PROD/logfile/PROD01_t1.log';
alter database rename logfile '/dm8/data/PROD/PROD01_t1.log' to '/dm8/data/PROD/logfile/PROD01_t1.log';
第1 行附近出现错误[-530]:只允许在MOUNT状态NORMAL模式下执行.
已用时间: 0.299(毫秒). 执行号:0.
SQL> alter database mount; --可以直接从open状态,改变到mount状态
操作已执行
已用时间: 3.609(毫秒). 执行号:0.
SQL> select status$ from v$instance;行号 STATUS$
---------- -------
1 MOUNT已用时间: 0.599(毫秒). 执行号:517.
SQL> alter database rename logfile '/dm8/data/PROD/PROD01_t1.log' to '/dm8/data/PROD/logfile/PROD01_t1.log';
操作已执行
已用时间: 508.509(毫秒). 执行号:518.
SQL> select path from v$rlogfile;行号 PATH
---------- ------------------------------------
1 /dm8/data/PROD/PROD01.log
2 /dm8/data/PROD/PROD02.log
3 /dm8/data/PROD/PROD03.log
4 /dm8/data/PROD/logfile/PROD01_t1.log已用时间: 0.482(毫秒). 执行号:519.[dmdba@test1 logfile]$ pwd
/dm8/data/PROD/logfile
[dmdba@test1 logfile]$ ll
total 71680
-rw-r--r-- 1 dmdba dinstall 73400320 Aug 10 23:40 PROD01_t1.log
6 重命名
达梦数据库REDO日志文件重命名必须在MOUNT状态下进行,通过alter database rename to语句实现。与修改路径的方式一样。
SQL> select path from v$rlogfile;行号 PATH
---------- ------------------------------------
1 /dm8/data/PROD/PROD01.log
2 /dm8/data/PROD/PROD02.log
3 /dm8/data/PROD/PROD03.log
4 /dm8/data/PROD/logfile/PROD01_t1.log已用时间: 0.470(毫秒). 执行号:520.
SQL> alter database rename logfile '/dm8/data/PROD/logfile/PROD01_t1.log' to '/dm8/data/PROD/logfile/PROD01_t2.log';
alter database rename logfile '/dm8/data/PROD/logfile/PROD01_t1.log' to '/dm8/data/PROD/logfile/PROD01_t2.log';
第1 行附近出现错误[-530]:只允许在MOUNT状态NORMAL模式下执行.
已用时间: 0.269(毫秒). 执行号:0.
SQL> alter database mount;
操作已执行
已用时间: 2.649(毫秒). 执行号:0.
SQL> select status$ from v$instance;行号 STATUS$
---------- -------
1 MOUNT已用时间: 0.712(毫秒). 执行号:521.
SQL> alter database rename logfile '/dm8/data/PROD/logfile/PROD01_t1.log' to '/dm8/data/PROD/logfile/PROD01_t2.log';
操作已执行
已用时间: 286.390(毫秒). 执行号:522.
SQL> select path from v$rlogfile;行号 PATH
---------- ------------------------------------
1 /dm8/data/PROD/PROD01.log
2 /dm8/data/PROD/PROD02.log
3 /dm8/data/PROD/PROD03.log
4 /dm8/data/PROD/logfile/PROD01_t2.log已用时间: 0.459(毫秒). 执行号:523.[dmdba@test1 logfile]$ pwd
/dm8/data/PROD/logfile
[dmdba@test1 logfile]$ ll
total 71680
-rw-r--r-- 1 dmdba dinstall 73400320 Aug 10 23:46 PROD01_t2.log
谨记:心存敬畏,行有所止。