达梦数据库通过使用表空间备份恢复表空间数据到特定时间或特定的LSN

       因为表空间的恢复只能是恢复到备份时的最新状态,所以有时需要通过表空间恢复到特定时间点的数据,可以根据以下方式进行恢复。由于表空间的数据库对象等字典信息保存在数据库的 SYSTEM 表空间中,所以表空间备份恢复只能在备份源库上联机执行,且要求在源库正常启动状态下执行表空间还原操作,并且需要开启归档模式。

       还需要特别注意的是,此操作是通过UNTIL LSN 或者 UNTIL TIME进行恢复,表空间还原不建议使用 UNTIL LSN 或者 UNTIL TIME,若要使用,则确保备份集生成之后未执行过 DDL 操作,否则将可能出现不可预知的后果。

以下为表空间在虚拟环境上通过lsn恢复到特定点的操作:

1.  首先创建表空间MAIN及测试表test,并插入两行数据,提交。

create tablespace "MAIN" datafile '/dm7/dmdbms/data/DAMENG/MAIN.DBF' size 128 autoextend on ;

create table test(a char,b char) storage(on MAIN);

insert into test values(1,2);

insert into test values(3,4);

commit;

2.创建联机备份,也可以使用全库备份的备份文件恢复表空间:

backup tablespace main full backupset '/opt/dmdbms/data/test';

3.查询当前lsn记录:305857(cur_lsn)

select * from v$rlog;

4.删除表test中的全部数据

truncate table test;

5.通过lsn还原表空间

这里恢复失败的原因应该是要注意,lsn值使用备份时的lsn值,因为此时是备份中记录的有效lsn,所以此次实验备份中记录的lsn是305858。如果是在备份前记录的,则会出现下边情况。

alter tablespace main offline;

restore tablespace main from backupset '/opt/dmdbms/data/test' until lsn 305857;

[-8268]:无效恢复数据库LSN参数.

SQL> restore tablespace main from backupset '/opt/dmdbms/data/test' until lsn 305856;

restore tablespace main from backupset '/opt/dmdbms/data/test' until lsn 305856;

[-8268]:无效恢复数据库LSN参数.

已用时间: 00:00:01.052. 执行号:0.

SQL> restore tablespace main from backupset '/opt/dmdbms/data/test' until lsn 305858;

操作已执行

已用时间: 453.571(毫秒). 执行号:144.

SQL> alter tablespace main online;

操作已执行

已用时间: 21.712(毫秒). 执行号:145.

如果根据时间恢复,以下为示例:

restore tablespace main from backupset '/opt/dmdbms/data/test'  until time '2020-02-18 14:56:13';
 

6.查询数据,两行数据恢复。

select * from test;

 

你可能感兴趣的:(达梦数据库通过使用表空间备份恢复表空间数据到特定时间或特定的LSN)