达梦数据库备份还原

1 归档原理和作用
归档就是对redo日志的归档,数据库开启归档后,redo日志会保存到指定的日志文件中。作用是恢复数据,因为数据库备份是定时的,如果中间间隔期间数据库挂了或者某段时间做了误操作,可用归档日志结合备份文件进行数据还原,保障数据安全。
 
查看归档状态
select arch_mode from v$database;
打开归档(归档限制大小10G,超过限制大小覆盖最开始的归档文件)
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST =/dmdata/arch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=10240';
alter database open;
查看归档情况

--归档周期

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;

 数据库还原恢复

关闭数据库,使用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 验证数据是否正确

 

 

 

 

 
posted @ 2020-10-11 13:18  fangzpa  阅读(1647)  评论(0编辑  收藏  举报