注册
DMDSC中的Redo、Undo修复
专栏/技术分享/ 文章详情 /

DMDSC中的Redo、Undo修复

LHX 2025/04/18 257 0 0
摘要

一、概念

在关系型数据库中,Redo日志和Undo日志是确保数据一致性和事务持久性的关键组件,还在故障恢复过程中发挥十分重要的作用。本次针对DMDSC中的Redo和Undo概念以及异常判断与恢复进行讲解与测试。

1. Redo(重做日志)

作用:
• 重做日志详细记录了事务对数据的每一次修改。其核心目的是确保一旦事务成功提交,即便随后系统遭遇崩溃,这些修改也能被准确无误地恢复,避免数据丢失。
特点:
• 严格按照事务发生的顺序记录变化,确保在系统崩溃时能够按照相同的顺序进行事务重演,从而恢复到崩溃前的状态。
• 日志的写入优先于数据页的修改,这一设计确保了日志总是先于数据被写入磁盘,为数据恢复提供了可靠保障。
• 在归档模式下,redo日志可以被归档到远程或本地存储,进一步增强了数据恢复和备份的能力。

2. Undo(回滚日志)

作用:
• Undo日志记录了事务的撤销操作,其主要功能是回滚未提交的事务,将数据恢复到事务开始之前的状态。
• 在事务回滚和多版本并发控制(MVCC)中发挥着重要作用,确保了数据的完整性和一致性。
特点:
• 系统启动时,先执行redo操作,再进行undo操作。这一顺序确保了在恢复数据时,先应用所有已提交的修改,再回滚未提交的修改。
• Undo日志的重用不会导致日志文件的收缩,这意味着日志文件的大小在重用过程中保持不变。

二、DMDSC中的Redo、Undo

在DSC集群环境中,Redo和Undo的配置信息被保存在dminit.ini文件中。实例初始化时,这些日志文件在ASM(自动存储管理)中创建,为集群的稳定运行提供了坚实基础。
image.png
此外,管理员也同样可以通过alter语句灵活调整Redo和Undo的配置,例如:
alter tablespace “ROLL” add datafile ‘+DMDATA/data/dsc/roll2.dbf’ size 256;

三、模拟Redo修复

1.将Redo从ASM中拷贝出来

ASM>cp ‘dsc0_log01.log’ ‘/home/data/’
image.png

2.破坏Redo

[dmdba@DSC0 data]$ echo “This is a header” > dsc0_log01.log
image.png

3.停ASM、DSC服务

ep stop GRP_DSC
image.png

4.将破坏后的Redo文件替换到ASM中

ASM>rm -rf dsc0_log01.log
ASM>cp -r ‘/home/data/dsc0_log01.log’ ‘+DMLOG/log’
image.png

5.启动服务、查看报错

ep startup GRP_DSC
image.png
image.png

6.查看DB_MAGIC

[dmdba@DSC1 bin]$ ./dmmdf TYPE=1 FILE=/home/data/system.dbf
image.png

7.新创建实例产生Redo

image.png

8.拷贝出新的Redo

ASM>cp ‘dsc0_log01.log’ ‘/home/data/’
ASM>cd +DMDATA/data/dsc
ASM>cp ‘roll.dbf’ ‘/home/data/’
image.png

9.修改新Redo的db_magic

[root@DSC0 bin]# ./dmmdf TYPE=2 FILE=/home/dmdba/dsc0_log01.log
Input the new value: 1044926824
image.png

10.替换损坏的Redo

ASM>rm -rf dsc0_log01.log
ASM>cp -r ‘/home/dmdba/dsc0_log01.log’ ‘+DMLOG/log’
image.png

11.重启DCS服务

ep startup GRP_DSC
image.png
after redo
image.png
实例恢复
image.png

四、模拟Undo修复

1.停DSC服务

ep stop GRP_DSC
image.png

2.这次我们选择删除Undo

ASM>rm -rf roll.dbf
image.png

3.重启服务观察报错

image.png

4.替换Undo,这里注意新Undo要启动过一次实例的才能使用

ASM>cp -r ‘/home/dmdba/roll.dbf’ ‘+DMDATA/data/dsc’
image.png

5.服务恢复

ep startup GRP_DSC
image.png

五、注意点

在Undo替换时,新Undo需要重启一次实例才能用。新实例中的Undo、Redo文件至少要和原实例中大小一样。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服