达梦数据库备份还原
--归档周期
SELECT '单个文件大小' AS 名称, WM_CONCAT(ARCH_FILE_SIZE || 'MB') AS 信息 FROM V$DM_ARCH_INI WHERE ARCH_TYPE = 'LOCAL' UNION ALL SELECT '归档日志上限', WM_CONCAT(ARCH_SPACE_LIMIT || 'MB') FROM V$DM_ARCH_INI WHERE ARCH_TYPE = 'LOCAL' UNION ALL SELECT '归档目录', WM_CONCAT(ARCH_DEST) FROM V$DM_ARCH_INI WHERE ARCH_TYPE = 'LOCAL' UNION ALL SELECT '归档日志个数',TO_CHAR(COUNT(1)||'个') FROM V$ARCH_FILE UNION ALL SELECT '当前归档周期',TO_DATE(MIN(CREATE_TIME),'YYYY-MM-DD HH24:MI:SS')||' ~ '||TO_DATE(MAX(CLOSE_TIME),'YYYY-MM-DD HH24:MI:SS') FROM V$ARCH_FILE;
alter database mount;
alter database noarchivelog;
alter database delete archivelog 'type=local,dest=/dmdata/arch';
alter database archivelog;
alter database open;
2 数据库备份
创建测试数据
create table t (id int ,name VARCHAR (100));
begin
for i in 1..10000 loop
insert into t values (i,'test' ||i);
end loop;
commit;
end;
联机全量备份 (压缩等级1,并行4)
BACKUP DATABASE FULL BACKUPSET '/dmdata/bakful'compressed level 1 parallel 4;
删除一部分数据
delete from t where id<20;
联机增量备份
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dmdata/bakful' BACKUPSET '/dmdata/increment_bak';
清空表数据
truncate table t;
3 数据库还原恢复
关闭数据库,使用dmrman脱机还原
使用dmdba用户,切换到安装目录bin下面执行如下命令
./dmrman use_ap=2
第一步:使用全量备份文件还原数据库
RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET'/dmdata/bakful';
使用增量量份文件还原数据库(增量还原过程中隐含了一个完全还原操作,如果有全量的基备份,无需执行全量,直接执行增量即可)
RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/increment_bak';
第二步:使用全量备份文件进行恢复
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET'/dmdata/bakful';
如果要恢复数据库最新状态,全量还原之后,直接利用归档文件进行恢复(要看归档周期是否覆盖到备份的日期)
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' WITH ARCHIVEDIR'/dmdata/arch'
也可利用归档恢复到某个时间点
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' WITH ARCHIVEDIR'/dmdata/dmarch' UNTIL TIME'2022-07-25 17:57:22';
第三步:更新魔数
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC
4 验证数据是否正确