在误删redo日志时,如果实例没有关闭,可以使用文件句柄进行恢复:
这一步操作是为了让数据库只读,之后让那些记录在系统缓冲区中被修改过的数据页写入磁盘,尽可能保留更多数据
ps -ef|grep dms|grep -v grep
ls -lrth /proc/10608/fd|grep dele
cp /proc/10608/fd/13 /dmdata/data/DMOA/DAMENG01.log
cp /proc/10608/fd/14 /dmdata/data/DMOA/DAMENG02.log
当数据库有可用备份时,还可以通过备份来恢复redo log
# 校验备份集
check backupset '/dmdata/dmbak/dmrman_full_bak_test'
# 还原数据库
RESTORE DATABASE '/dmdata/data/DMOA/dm.ini' FROM BACKUPSET '/dmdata/dmbak/dmrman_full_bak_test'
# 恢复归档日志
RECOVER DATABASE '/dmdata/data/DMOA/dm.ini' WITH ARCHIVEDIR '/dmbak/dmdba/dmbak/arch_log/arch'"
# 更新数据库魔数
RECOVER DATABASE '/dmdata/data/DMOA/dm.ini' UPDATE DB_MAGIC
当数据库实例已经关闭,且无可用备份时,还可以通过替换redo日志方式恢复
可以通过dminit日志查看初始化参数
将原库PSEG_RECV参数设置为零
可以通过查看故障库的数据文件头信息,来确认这两个参数值
注意所有归档日志均需要修改,否则启动会报错
尝试对故障实例启动,若为2024年后的新版达梦数据库,此时仍不能启动,日志中报错如下:
新版数据库还需要修改clsn,可查询对应server运行日志最后打印的cur_lsn值,或者用归档日志分析最大lsn值。设置时比这个值稍大即可(示例中为+100)
在对current redo log进行修改时,还会出现下列错误,因为此前尝试过启动实例:
此时需要先修改实例日志的sta为1,再修改clsn。修改clsn成功后,将sta改回
修改clsn完成后,还需要在dm.ini中追加参数RLOG_CHECK_SPACE=2;
上述操作完毕后,再次重启启动实例
达梦社区技术https://eco.dameng.com
文章
阅读量
获赞
