达梦数据库误删除数据恢复

文章描述了在达梦数据库中,当客户误删一张业务表后,如何通过全库备份、增量备份和归档文件进行数据库恢复的详细步骤。包括检查备份完整性、在测试环境恢复、导出导入数据等操作,并强调了数据备份和归档管理的重要性。
摘要由CSDN通过智能技术生成

问题背景

客户在2023-06-26 20:54:13误truncate了一张业务表,需要要紧急恢复,达梦不建议使用闪回查询恢复,只能考虑恢复整库,再将删除表数据导入到生产库相应表,可以使用dts迁移数据,可以通过逻辑导出导入表数据。

恢复方案

1,检查误删数据库的全库备份、增量备份、归档文件,是否连续完整?
2,在测试环境新建一个数据库实例。
3,传输完整的全库和增量备份到测试库,传输能连接备份数据的归档文件至目标端。
4,恢复数据库数据
5,导出导入误删数据
6,规划数据库路径:
全备和增量备份目录:        /bak/dmbak/oabak
归档文件目录:              /bak/dmbak/archbak
新建数据库实例数据数据目录:/data/dmdata/OABAK/dm.ini


数据库恢复

初始化测试实例

/home/dmdbms/bin/dminit PATH=/bak/dmbak/dmdata/ PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 CHARSET=1 CASE_SENSITIVE=Y DB_NAME=BAK1 INSTANCE_NAME=BAK1 PORT_NUM=5238

服务注册 ,使用root用户

 /home/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /bak/dmbak/dmdata/BAK1/dm.ini -p OABAK1

远程拷贝数据
scp拷贝  全备、增备、归档

恢复数据,恢复时间点:2023-06-26 20:54:12

'DB_DMDB_INCREMENT_2023_06_26_00_30_26' 为最后一份增量备份的目录名
cd /home/dmdbms/bin/
./dmrman

RESTORE DATABASE '/bak/dmbak/dmdata/BAK1/dm.ini' from backupset '/bak/dmbak/oabak/DB_DMDB_INCREMENT_2023_06_26_00_30_26' task thread 32
RECOVER DATABASE '/bak/dmbak/dmdata/BAK1/dm.ini' with archivedir '/bak/dmbak/archbak' until time '2023-06-26 20:54:12'
RECOVER DATABASE '/bak/dmbak/dmdata/BAK1/dm.ini' update db_magic

启动数据库实例
cd /home/dmdbms/bin/
./DmServiceBAK1  start

./disql sysdba/SYSDBA
--将主备库强制open
sql> sp_set_para_value(1,’ALTER_MODE_STATUS’,1);
sql> alter database normal;
sql> alter database open force;
sql> select checkpoint(100);

测试库导出数据,导出问题表
./dexp userid=SYSDBA/SYSDBA:5236 FILE=/bak/dmbak/oabak/xxxxx_06262212.dmp LOG=/bak/dmbak/oabak/xxxxx_06262212.log TABLES=xxx.xxxxx  TABLE_PARALLEL=4

导入之前停止应用,将误删后产生的数据备份,然后清空表导入数据,导入完成后将备份数据插入到表中。

导入数据
./dimp userid=SYSDBA/SYSDBA@192.168.xxx.xx:5236 FILE=/bak/dmbak/oabak/xxxxx_06262212.dmp LOG=/bak/dmbak/oabak/IMP_xxxxx_06262212.log TABLES=xxx.xxxxx  TABLE_PARALLEL=8  TABLE_EXISTS_ACTION=append

收集问题表的统计信息
DBMS_STATS.GATHER_TABLE_STATS('xxx','xxxxxxx',NULL,100,TRUE,'FOR ALL COLUMNS SIZE AUTO',2);

应用验证数据

应用方验证数据是否准确

全库备份

归档保留空间太小20G,大量导入数据后,历史归档文件被删除,立即做个全量备份

backup database FULL backupset '/bak/dmbak/full/DB_DMDB_FULL_2023_06_26_00_51' task thread 32 parallel 8;

总结思考

1.生产环境做任务数据删除之前,一定要先做数据的备份。

2.数据库一定要定期做数据库的全量备份,归档日志的备份,有备份才能恢复数据。

3.一定要确保归档空间足够,日志保留时间充足,避免因空间不够,或归档保留期限到期,归档被删除,导致归档文件确实不连续,无法恢复数据。

达梦技术社区:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值