签到成功

知道了

CNDBA社区CNDBA社区

DM 达梦数据库 重做日志 redo log 的进一步测试

2019-10-22 00:13 4233 2 原创 DM 达梦
作者: dave

在之前的博客我们了解了DM中重做日志的基本概念,如下:

DM7 达梦数据库 重做日志管理 及 归档模式切换
https://www.cndba.cn/dave/article/3575http://www.cndba.cn/dave/article/3733http://www.cndba.cn/dave/article/3733http://www.cndba.cn/dave/article/3733http://www.cndba.cn/dave/article/3733

本篇是对重做日志的进一步测试。

http://www.cndba.cn/dave/article/3733

1 重做日志redo log 只能添加 不能删除

本想按照Oracle里的思路,替换下redo log文件(因为怀疑文件有损坏),但一顿操作之后,发现redo log 可以添加,但是无法drop:http://www.cndba.cn/dave/article/3733

SQL> select file_id,path,rlog_size/1024/1024 as "Size" from V$RLOGFILE;

LINEID     FILE_ID     PATH                            Size                
---------- ----------- ------------------------------- --------------------
1          0           /dm/dmdbms/data/dave/dave01.log 256
2          1           /dm/dmdbms/data/dave/dave02.log 256

used time: 4.815(ms). Execute id is 5.
SQL>  alter database add logfile '/dm/dmdbms/data/dave/dave03.log' size 256;
executed successfully
used time: 987.905(ms). Execute id is 6.
SQL> alter database add logfile '/dm/dmdbms/data/dave/dave04.log' size 256;
executed successfully
used time: 817.451(ms). Execute id is 7.
SQL> alter database drop logfile '/dm/dmdbms/data/dave/dave01.log';
alter database drop logfile '/dm/dmdbms/data/dave/dave01.log';

alter database drop logfile '/dm/dmdbms/data/dave/dave01.log';
              *                                               
line 1, column 15, nearby [drop] has error[-2007]:
Syntax error.
used time: 0.593(ms). Execute id is 0.
SQL>

这里提示drop 语法有问题,查看了一下DM的用户手册,确实没有看到drop的操作,只有add,resize和 rename。 所以从官方文档得到的信息,redo log 只能添加不能删除。

2 Redo log 只能改大,不能改小

在DB open的状态下,可以添加和resi Redo log file。 数据文件大小最小为 4096页大小,如页大小为 8K,则可添加的文件最小值为 40968k=32M。

但实际测试的时候发现另外一个限制:redo log 只能resize 大,不能resize 小:http://www.cndba.cn/dave/article/3733

SQL> alter database resize logfile '/dm/dmdbms/data/dave/dave01.log' to 32;
alter database resize logfile '/dm/dmdbms/data/dave/dave01.log' to 32;
[-2410]:Data file [/dm/dmdbms/data/dave/dave01.log] size is invalid.
used time: 1.678(ms). Execute id is 0.
SQL> alter database resize logfile '/dm/dmdbms/data/dave/dave01.log' to 128;
alter database resize logfile '/dm/dmdbms/data/dave/dave01.log' to 128;
[-2410]:Data file [/dm/dmdbms/data/dave/dave01.log] size is invalid.
used time: 1.277(ms). Execute id is 0.
SQL> alter database resize logfile '/dm/dmdbms/data/dave/dave01.log' to 512;
executed successfully
used time: 671.505(ms). Execute id is 25.
SQL> alter database resize logfile '/dm/dmdbms/data/dave/dave01.log' to 256;
alter database resize logfile '/dm/dmdbms/data/dave/dave01.log' to 256;
[-2410]:Data file [/dm/dmdbms/data/dave/dave01.log] size is invalid.
used time: 1.899(ms). Execute id is 0.

3 重命名redo log

该操作比较简单,在mount 状态下直接操作:

SQL>  alter database rename logfile 'dave01.log' to 'dave11.log';
 alter database rename logfile 'dave01.log' to 'dave11.log';
[-530]:Error in line: 1
Only mount & normal mode supported.
used time: 0.430(ms). Execute id is 0.
SQL> alter database mount;
executed successfully
used time: 00:00:01.849. Execute id is 0.
SQL>  alter database rename logfile 'dave01.log' to 'dave11.log';
executed successfully
used time: 00:00:03.810. Execute id is 27.
SQL>  alter database rename logfile 'dave02.log' to 'dave12.log';
executed successfully
used time: 00:00:02.785. Execute id is 28.
SQL> alter database open;
executed successfully
used time: 00:00:01.178. Execute id is 0.
SQL> select file_id,path,rlog_size/1024/1024 as "Size" from V$RLOGFILE;

LINEID     FILE_ID     PATH                            Size                
---------- ----------- ------------------------------- --------------------
1          0           /dm/dmdbms/data/dave/dave11.log 512
2          1           /dm/dmdbms/data/dave/dave12.log 256
3          2           /dm/dmdbms/data/dave/dave03.log 256
4          3           /dm/dmdbms/data/dave/dave04.log 256

used time: 1.402(ms). Execute id is 29.
SQL>

4 尝试重建控制文件来删除redo log 文件

DM的控制文件里记录了redo log 的信息,我们可以通过重建控制文件的方式来移动文件的位置,所以尝试下重建控制文件来删除redo log。

达梦重建控制文件的方法在我之前的博客有说明,如下:

DM7 达梦数据库 查看并重建控制文件 操作示例
https://www.cndba.cn/dave/article/3574http://www.cndba.cn/dave/article/3733

停库:

[dave@www.cndba.cn ~]$ /etc/init.d/DmServicedave stop
Stopping DmServicedave:                                    [ OK ]
[dave@www.cndba.cn ~]$

生成控制文件文本:

[dave@www.cndba.cn ~]$ dmctlcvt type=1 src=/dm/dmdbms/data/dave/dm.ctl dest=/tmp/cmctl.txt
DMCTLCVT V7.6.0.95-Build(2018.09.13-97108)ENT 
Can not open ini file !
convert ctl to txt success!
[dave@www.cndba.cn ~]$

删除里面的redo11.log 和redo12.log 内容:

#-----------------------------------------------

# file path
fil_path=/dm/dmdbms/data/dave/dave11.log
# mirror path
mirror_path=
# file id
fil_id=0
# whether the file is auto extend
autoextend=1
# file create time
fil_create_time=2029-3-21 5:56:44
# file modify time
fil_modify_time=2019-10-21 14:40:41
# the max size of file
fil_max_size=0
# next size of file
fil_next_size=0

# file path
fil_path=/dm/dmdbms/data/dave/dave12.log
# mirror path
mirror_path=
# file id
fil_id=1
# whether the file is auto extend
autoextend=1
# file create time
fil_create_time=2029-3-21 5:56:44
# file modify time
fil_modify_time=2019-10-21 14:40:54
# the max size of file
fil_max_size=0
# next size of file
fil_next_size=0

重建控制文件:

[dave@www.cndba.cn ~]$ dmctlcvt type=2 src=/tmp/cmctl.txt dest=/dm/dmdbms/data/dave/dm.ctl
DMCTLCVT V7.6.0.95-Build(2018.09.13-97108)ENT 
Can not open ini file !
convert txt to ctl success!

起库验证:http://www.cndba.cn/dave/article/3733

折腾2次,删除redo log 后,达梦实例无法正常启动
[dave@www.cndba.cn ~]$ /etc/init.d/DmServicedave start
Starting DmServicedave:                                    [ FAILED ]
file dm.key not found, use default license!
Global parameter value of RT_HEAP_TARGET is illegal, use min value!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V7.6.0.95-Build(2018.09.13-97108)ENT  startup...
License will expire on 2019-11-04
rfil grp init log file /dm/dmdbms/data/dave/dave03.log error, code = -717
[dave@www.cndba.cn ~]$ 

[dave@www.cndba.cn ~]$ /etc/init.d/DmServicedave start
Starting DmServicedave: /etc/init.d/DmServicedave: line 333:  2958 Segmentation fault      (core dumped) "$EXEC_PROG_FULL_PATH" "$INI_PATH" -noconsole $TMP_START_MODE > "$SERVICE_LOG_FILE" 2>&1
                                                           [ FAILED ]
file dm.key not found, use default license!
Global parameter value of RT_HEAP_TARGET is illegal, use min value!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V7.6.0.95-Build(2018.09.13-97108)ENT  startup...
License will expire on 2019-11-04
[dave@www.cndba.cn ~]$

查看DM的日志如下:http://www.cndba.cn/dave/article/3733

2019-10-21 15:15:50 [INFO] database P0000002847 main_thread  fil_sys_init
2019-10-21 15:15:51 [WARNING] database P0000002847 main_thread  License will expire on 2019-11-04
2019-10-21 15:15:51 [INFO] database P0000002847 main_thread  ep 0 set rac status to 1
2019-10-21 15:19:09 [INFO] database P0000002902 main_thread  version info: develop
2019-10-21 15:19:09 [INFO] database P0000002902 main_thread  DM Database Server x64 V7.6.0.95-Build(2018.09.13-97108)ENT  startup...
2019-10-21 15:19:15 [INFO] database P0000002902 main_thread  fil_sys_init
2019-10-21 15:19:16 [WARNING] database P0000002902 main_thread  License will expire on 2019-11-04
2019-10-21 15:19:16 [INFO] database P0000002902 main_thread  ep 0 set rac status to 1
2019-10-21 15:19:16 [ERROR] database P0000002902 main_thread  arch file(/dm/dmdbms/data/dave/dave03.log) fil id check fail(file: /data/zsn/trunk7_ent/log/rfil.c, line: 777)
2019-10-21 15:19:16 [ERROR] database P0000002902 main_thread  rfil grp init log file /dm/dmdbms/data/dave/dave03.log error, code = -717
2019-10-21 15:22:58 [INFO] database P0000002958 main_thread  version info: develop
2019-10-21 15:22:58 [INFO] database P0000002958 main_thread  DM Database Server x64 V7.6.0.95-Build(2018.09.13-97108)ENT  startup...
2019-10-21 15:23:04 [INFO] database P0000002958 main_thread  fil_sys_init
2019-10-21 15:23:04 [WARNING] database P0000002958 main_thread  License will expire on 2019-11-04
2019-10-21 15:23:04 [INFO] database P0000002958 main_thread  ep 0 set rac status to 1

最后老老实实还原环境:

[dave@www.cndba.cn ~]$ /etc/init.d/DmServicedave start
Starting DmServicedave:                                    [ OK ]
[dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 9.084(ms)
disql V7.6.0.95-Build(2018.09.13-97108)ENT 
Connected to: DM 7.1.6.95
SQL> select file_id,path,rlog_size/1024/1024 as "Size" from V$RLOGFILE;

LINEID     FILE_ID     PATH                            Size                
---------- ----------- ------------------------------- --------------------
1          0           /dm/dmdbms/data/dave/dave11.log 512
2          1           /dm/dmdbms/data/dave/dave12.log 256
3          2           /dm/dmdbms/data/dave/dave03.log 256
4          3           /dm/dmdbms/data/dave/dave04.log 256

used time: 10.700(ms). Execute id is 3.
SQL>

曲线救国的方式也无法删除,从目前的测试来看DM数据库的redo log 真的只能添加,不能删除。

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2297
    原创
  • 3
    翻译
  • 624
    转载
  • 198
    评论
  • 访问:9213411次
  • 积分:4522
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ