注册
DM-备份恢复测试
技术分享/ 文章详情 /

DM-备份恢复测试

故渊 2025/12/31 133 0 0

一、使用物理全备和差异增量备份进行恢复

1、创建测试表和做物理备份

(1)新建测试表:
[dmdba@db1 ~]$ disql dmu/Dm%20250101
SQL> create table dmu.t20(id int,name varchar(20));
SQL> insert into dmu.t20 values(10,‘FULLBACKUP’);
SQL> commit;
SQL> select * from t20;
1 10 FULLBACKUP

(2)做物理全备:
BACKUP DATABASE FULL FORMAT ‘/dm8/dmbackup/SIN_%U_%d’
BACKUPINFO ‘完全备份’
MAXPIECESIZE 32768
COMPRESSED LEVEL 1
PARALLEL 3 READ SIZE 4096;

(3)做完全备后再次插入测试数据:id=11的数据不在全备文件中
SQL> insert into dmu.t20 values(11,‘INCRBACKUP’);
SQL> commit;

(4)做差异增量备份-01
BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘/dm8/dmbackup’
FORMAT ‘/dm8/dmbackup/INCR_%U_%d’
BACKUPINFO ‘差异增量备份’
MAXPIECESIZE 32768
COMPRESSED LEVEL 1
PARALLEL 3;

(5)再次插入测试数据:此时id=12的行不在差异增量备份-01中
SQL> insert into dmu.t20 values(12,‘INCRBACKUP02’);
SQL> commit;

(6)再次做差异增量备份-02
BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘/dm8/dmbackup’
FORMAT ‘/dm8/dmbackup/INCR_%U_%d’
BACKUPINFO ‘差异增量备份’
MAXPIECESIZE 32768
COMPRESSED LEVEL 1
PARALLEL 3;

(7)再次插入测试数据:此时id=13的行需要使用归档文件恢复
SQL> insert into dmu.t20 values(13,‘ARCHIVELOG03’);
SQL> commit;

2、恢复数据
(1)进入RMAN
./dmrman

(2)还原:差异增量备份,只需要指定需要恢复到相应时间点的增量备份即可,但是全备和INCR_DB_INCREMENT_20251225_093208_888270_DAMENG之间的所有增量备份都要放在同一个目录下
RESTORE DATABASE ‘/dm8/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/backup/INCR_DB_INCREMENT_20251225_093208_888270_DAMENG’;

(3)恢复
1)如果没有连续的归档则可以指定增量备份进行恢复,只能恢复到增量备份的时间点
RECOVER DATABASE ‘/dm8/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/backup/INCR_DB_INCREMENT_20251225_093208_888270_DAMENG’;

2)归档是连续的,就是增量备份后的归档都存在,可以指定归档文件进行恢复
RECOVER DATABASE ‘/dm8/dmdata/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/dwarch’;

(4)更新魔术
RECOVER DATABASE ‘/dm8/dmdata/DAMENG/dm.ini’ UPDATE DB_MAGIC;

3、启动数据库后查看测试数据:
[dmdba@db2 DAMENG]$ disql sysdba/Dm%20250101
SQL> alter database normal;
SQL> alter database open;
SQL> select * from dmu.t20;
1 10 FULLBACKUP
2 11 INCRBACKUP
3 12 INCRBACKUP02
4 13 ARCHIVELOG03

==========================================
二、做基于时间点的恢复:使用物理全备和累积备份测试

1、创建测试表和做备份

(1)创建测试表
SQL> create table dmu.t21(id int,c1date date,c2date time,c3date TIMESTAMP);
SQL> insert into dmu.t21 values(10,sysdate,sysdate,sysdate);
SQL> commit;
SQL> select * from t21;
1 10 2025-12-25 13:37:41 2025-12-25 13:37:41.000000

(2)做物理全备:
BACKUP DATABASE FULL FORMAT ‘/dm8/dmbackup/SIN_%U_%d’
BACKUPINFO ‘完全备份’
MAXPIECESIZE 32768
COMPRESSED LEVEL 1
PARALLEL 3 READ SIZE 4096;

(3)再次插入测试数据
SQL> insert into dmu.t21 values(11,sysdate,sysdate,sysdate);
SQL> commit;

(4)做累积增量备份-01
BACKUP DATABASE INCREMENT CUMULATIVE WITH BACKUPDIR ‘/dm8/dmbackup’
FORMAT ‘/dm8/dmbackup/PRO_%U_%d’
BACKUPINFO ‘累积增量备份’
MAXPIECESIZE 32768
COMPRESSED LEVEL 5
PARALLEL 3;

(5)再次插入测试数据
SQL> insert into dmu.t21 values(12,sysdate,sysdate,sysdate);
SQL> commit;

(6)做累积增量备份-02
BACKUP DATABASE INCREMENT CUMULATIVE WITH BACKUPDIR ‘/dm8/dmbackup’
FORMAT ‘/dm8/dmbackup/PRO_%U_%d’
BACKUPINFO ‘累积增量备份’
MAXPIECESIZE 32768
COMPRESSED LEVEL 5
PARALLEL 3;

(7)插入测试数据
SQL> insert into dmu.t21 values(13,sysdate,sysdate,sysdate);
SQL> commit;

(8)查看测试数据
SQL> select * from dmu.t21;
1 10 2025-12-25 13:37:41 2025-12-25 13:37:41.000000
2 11 2025-12-25 13:41:10 2025-12-25 13:41:10.000000
3 12 2025-12-25 13:43:13 2025-12-25 13:43:13.000000
4 13 2025-12-25 13:45:22 2025-12-25 13:45:22.000000

2、做恢复

(1)进入RMAN
./dmrman

(2)还原
RESTORE DATABASE ‘/dm8/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/backup/PRO_DB_INCREMENT_20251225_134435_282116_DAMENG’;

(3)恢复:累积增量备份需要和全备放到同一个目录下,且归档要是连续的,由于是累积增量备份只需要有"最后一个增量"和"全量"备份即可
RECOVER DATABASE ‘/dm8/dmdata/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/dwarch’ UNTIL TIME ‘2025-12-25 13:43:13’;

(4)更新魔术
RECOVER DATABASE ‘/dm8/dmdata/DAMENG/dm.ini’ UPDATE DB_MAGIC;

3、启动数据库后查看测试数据
SQL> select * from dmu.t21;
1 10 2025-12-25 13:37:41 2025-12-25 13:37:41.000000
2 11 2025-12-25 13:41:10 2025-12-25 13:41:10.000000
3 12 2025-12-25 13:43:13 2025-12-25 13:43:13.000000

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服