签到成功

知道了

CNDBA社区CNDBA社区

DM 达梦数据库 ROLL 文件 损坏 解决方法

2022-08-25 14:21 1903 0 原创 DM 达梦
作者: dave

在之前的博客我们看了达梦Redo log 故障的处理方法,如下:

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

DM 达梦数据库 redo log 损坏故障 解决方法
https://www.cndba.cn/dave/article/108602

同样,达梦的UNDO 表空间ROLL 文件也存在损坏的可能性。 但因为ROLL 不涉及到db_magic 的修改,所以相对来说,处理简单一些。

1 处理思路说明

对于ROLL 文件损坏的情况,处理方法同样是新建一个同配置(页大小、大小写敏感、字符集等)的实例,然后把新实例的ROLL文件替换掉原实例的ROLL文件,然后重启数据库。

2 具体操作过程

2.1 创建测试实例

我们这里直接利用之前创建的测试实例,这里不再新建,如果新建,命令如下:

[dave@www.cndba.cn data]$ dminit path=/data/dm/dmdbms/data page_size=32 extent_size=32 charset=0 db_name=cndba instance_name=cndba

2.2 破坏ROLL文件

这里直接MV 掉。

[dave@www.cndba.cn cndba]$ mv ROLL.DBF ROLL.DBF.bak
[dave@www.cndba.cn cndba]$

此时启动直接报错:

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

[dave@www.cndba.cn cndba]$ dmserver dm.ini
file dm.key not found, use default license!
version info: develop
DM Database Server 64 V8 03134283890-20220304-158322-10045 startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
/data/dm/dmdbms/data/cndba/ROLL.DBF not exist, can not startup
[dave@www.cndba.cn cndba]$

2.3 新建临时实例

注意我这里实例名不同,不过并不影响恢复,能创建同名,最好。 http://www.cndba.cn/dave/article/108603

[dave@www.cndba.cn data]$ dminit path=/data/dm/dmdbms/data page_size=32 extent_size=32 charset=0 db_name=dave instance_name=dave port_num=5238
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-03-04
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /data/dm/dmdbms/data/dave/dave01.log


 log file path: /data/dm/dmdbms/data/dave/dave02.log

write to dir [/data/dm/dmdbms/data/dave].
create dm database success. 2022-08-04 23:17:31
[dave@www.cndba.cn data]$

这里要先启动一次实例,在正常关闭。 达梦实例创建后,必须先启动一次才能正常使用。

[dave@www.cndba.cn data]$ cd dave
[dave@www.cndba.cn dave]$ ls
bak      dave01.log  dm.ctl  dminit20220804231728.log  HMAIN     ROLL.DBF    SYSTEM.DBF
ctl_bak  dave02.log  dm.ini  dm_service.prikey         MAIN.DBF  sqllog.ini
[dave@www.cndba.cn dave]$ dmserver dm.ini
file dm.key not found, use default license!
version info: develop
DM Database Server 64 V8 03134283890-20220304-158322-10045 startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2023-03-04
file lsn: 0
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
iid page's trxid[1002]
NEXT TRX ID = 1003
……

2.4 将临时实例的ROLL复制到旧环境

[dave@www.cndba.cn cndba]$ cp ../dave/ROLL.DBF .
[dave@www.cndba.cn cndba]$ ls
bak          cndba01.log.bak  cndba02.log.bak  dm.ctl  dminit20220804230707.log  HMAIN     rep_conflict.log  ROLL.DBF.bak  SYSTEM.DBF  trace
cndba01.log  cndba02.log      ctl_bak          dm.ini  dm_service.prikey         MAIN.DBF  ROLL.DBF          sqllog.ini    TEMP.DBF
[dave@www.cndba.cn cndba]$

2.5 启动实例

[dave@www.cndba.cn cndba]$ dmserver dm.ini
file dm.key not found, use default license!
version info: develop
DM Database Server 64 V8 03134283890-20220304-158322-10045 startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2023-03-04
file lsn: 39768
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
iid page's trxid[5010]
NEXT TRX ID = 5011
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 to_release_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 to_release_pages, 0 mgr pages, 0 mgr recs!
iid page's trxid[6012]
NEXT TRX ID = 7014.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.

3 小结

在ROLL文件的处理中,我们是直接替换的,没有更新db_magic,也没有修改PSEG_RECV参数以故障重启实例。 相对来说,是一个风险较小的操作。 但从生产环境的稳定性角度来看,也可能会遇到替换ROLL后,还有问题的情况,这种情况可能就需要连REDO LOG 一起替换了。 具体过程这里不再重复。

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

最后,虽然替换ROLL 文件风险较小,但还是建议导出数据到新的实例中,以确保数据库实例的稳定性。 http://www.cndba.cn/dave/article/108603

DM7 达梦数据库 物理备份还原之 备份管理 操作手册
https://www.cndba.cn/dave/article/3600
DM7 达梦数据库 物理备份还原之 联机备份(SQL备份) 使用手册
https://www.cndba.cn/dave/article/3595http://www.cndba.cn/dave/article/108603

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

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

dave

关注

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

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

        QQ交流群

        注册联系QQ