达梦故障恢复

本文介绍了达梦数据库的故障恢复基础知识,包括数据库结构、redo和undo、回滚页清理等,并详细阐述了实例不可用时的故障分类、处理步骤、恢复技术和具体案例,如文件误删、数据库页损坏等,强调了恢复后检查的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基础知识

   

1、数据库结构

实例:实例一般是由一组正在运行的 DM 后台进程/线程以及一个大型的共享内存组成。数据库的物理数据文件是由实例来操作读写的,故障恢复主要为实例恢复。

表空间:表空间由一个或者多个数据文件组成。是逻辑的结构,初始化数据库默认创建4个表空间,SYSTEM 存放一些元数据,MAIN为用户默认表空间,需要注意 MAIN 表空间扩展后不能收缩 不方便管理,建议业务用户创建专用的表空间。ROLL 表空间为回滚表空间,存储更新或者删除的 旧值。TEMP 为临时表空间,所有临时段都会用到,表创建索引就用到临时表空间来临时存放。所以临时表空间最大限制可根据数据库最大表20% 来大概估算。

数据文件:数据文件以 dbf 为扩展名,是真实数据存储的地方。

控制文件:是一个二进制文件,它记录了数据库必要的初始信息。

重做日志文件:重做日志(即 REDO 日志,联机日志文件)指在 DM 数据库中添加、删除、修改对象,或者改变数据,DM 都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。

归档日志文件:归档日志文件,就是在归档模式下,重做日志被连续写入到归档日志后,所生成了归档日志文件。归档的写入 不是等redo写满 切换组后才写,写redo 后就尽快写归档了,所以归档和redo是差不太多的。

    

 2、redo和undo

Redo 默认生成两组,256M 的redo文件。 当一个写满后,切换到另一个redo文件,写满了又切换 这样循环使用redo文件的。任何修改数据库的操作都会产生重做日志。

Undo 是存储修改前的旧值在 ROLL.DBF 文件,回滚段的数据不是一直保留的,事务结束后,由系统的 PURGE 模块释放回滚页。回滚表空间不允许修改和删除操作。当roll表空间能存下系统产生的回滚段时,由UNDO_RETENTION参数控制清理多久前的回滚段。默认为90s。如roll表空间不足,系统又需要用到回滚段, 那就不能保证90秒后才清理,事务写盘后就可以清理了。

3、回滚页的清理过程

更新一行数据后提交,查询select * from V$PURGE; 显示1个事务待PURGE

select * from V$PURGE_PSEG_TAB;--显示待purge 表信息,主要看事务ID 和表ID ,通过表ID 去关联 查询确认表。

SELECT * FROM dba_objects where object_type='TABLE' AND OBJECT_ID IN(select TAB_ID from V$PURGE_PSEG_TAB);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值