为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:麒麟系统
【CPU】:
【问题描述】*:
参考改这个问题时报的错
https://eco.dameng.com/community/post/202212091743284X0SXIA8PR7HJSVE25
报错如图
1、根据旧库的初始化参数重新初始化一个新实例。
2、查看旧库SYSTEM.DBF中的db_magic和pemnt_magic值
2、使用dmmdf修改SYSTEM.DBF中的db_magic和pemnt_magic值
3、备份旧库的SYSTEM.DBF、 dm_service.prikey
4、移动新库修改完成db_magic和pemnt_magic值后的SYSTEM.DBF到旧库目录
5、移动新库 dm_service.prikey到旧库。
6、启动一次数据库,这时候由于使用新库的SYSTEM.DBF是没有字典表的,查不到旧库的数据,仅能启动而已。
7、将第3步备份的SYSTEM.DBM、 dm_service.prikey 恢复成旧的名称。
8、再次启动旧库,此时数据库能起来并且可以读到旧数据。但数据库是不健康的
9、使用dexp逻辑备份全量数据出来。
10、重新初始化新的实例,导入第9步导出的数据。

以下方法可以测试一下,但是注意操作前先对整个目录冷备份一次,以便随时回滚整个操作(禁止生产环境随意操作,如果需要技术支持建议可以先联系达梦工程师详细沟通):
1、先用dmmdf查看旧的redo文件中的CLSN和NEXT_SEQ、G_NEXT_SEQ三个值,记录下来
2、再用dmmdf修改当前新初始化的redo文件中CLSN和NEXT_SEQ、G_NEXT_SEQ三个值为刚刚第一步记录的值
3、修改dm.ini中两个参数为CLPT_RLOG_SIZE=0
CKPT_INTERVAL=18000
4、使用dmserver尝试前台启动实例。如果能够启动成功,第一时间进行数据逻辑迁移,把数据迁移出当前实例。