目录
一、准备工作
创建表空间TS及数据文件
create tablespace ts datafile '/home/dmdba/datafile/TS01.DBF' size 128,'/home/dmdba/datafile/TS02' size 128;
创建用户bak_test,并将表空间TS设置为bak_test的默认表空间
create user bak_test identified by dameng123 default tablespace ts;
为用户bak_test赋权
grant resource,dba to bak_test;
连接bak_test用户,创建表t1,并插入一条记录
conn bak_test/dameng123
create table t1(id int identity,name varchar(20));
insert into t1 values('tom');
commit;
连接SYSDBA用户开启归档配置
conn SYSDBA/SYSDBA
alter database mount;
alter database add archivelog 'dest=/home/dmdba/arch,type=local,file_size=1024,space_limit=0';
alter database archivelog;
alter database open;
查询归档配置
select arch_mode from v$database;
select arch_lsn,clsn,path from v$arch_file;
二、完全备份还原测试
进行完全备份
backup database full to full_bak_01 backupset '/home/dmdba/dmbak/full_bak_01' backupinfo '完全备份01';
添加备份搜索目录
select sf_bakset_backup_dir_add('disk','/home/dmdba/dmbak');
select backup_name,backup_path,begin_lsn,end_lsn,desc# from v$backupset;
模拟数据文件丢失
mv TS01.DBF TS01.DBF.bak
重启数据库,查看表
DmServiceDMSERVER restart
disqlalter database open;
conn bak_test/dameng123
select * from t1;alter tablespace ts online;
关闭数据库,使用完全备份01还原数据文件TS01.DBF
DmServiceDMSERVER stop
dmrman
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmbak/full_bak_01';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmbak/full_bak_01';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;exit
启动数据库,查看表t1
DmServiceDMSERVER start
disql
conn bak_test/dameng123
select * from t1;
三、差异增量备份还原测试
插入一条记录
insert into t1 values('jerry');
commit;
select * from t1;
进行差异增量备份
backup database increment base on backupset '/home/dmdba/dmbak/full_bak_01' to inc_bak_01 backupset '/home/dmdba/dmbak/inc_bak_01' backupinfo '差异增量备份01';
select backup_name,backup_path,begin_lsn,end_lsn,desc# from v$backupset;
模拟损坏数据文件
mv TS01.DBF TS01.DBF.bak1
ll
重启数据库,查看表T1
DmServiceDMSERVER restart
disql bak_test/dameng123
alter database open;
select * from t1;
alter tablespace ts online;
使用差异增量备份01还原
DmServiceDMSERVER stop
dmrman
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmbak/inc_bak_01';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmbak/inc_bak_01';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
重启数据库,查看T1表
四、累积增量备份还原测试
由于累计增量备份只能使用完全备份作为基备份,因此进行一次完全备份
backup database full to full_bak_02 backupset '/home/dmdba/dmbak/full_bak_02' backupinfo '完全备份02';
插入一条记录
insert into t1 values('cumulative');
commit;select * from t1;
使用完全备份02作为基备份进行累积增量备份
backup database increment cumulative base on backupset '/home/dmdba/dmbak/full_bak_02' to cum_bak_01 backupset '/home/dmdba/dmbak/cum_bak_01' backupinfo '累计增量备份01';
select sf_bakset_backup_dir_add('disk','/home/dmdba/dmbak');
select backup_name,backup_path,begin_lsn,end_lsn,desc# from v$backupset;
模拟损坏数据文件
重启数据库,查看表
DmServiceDMSERVER restart
disql bak_test/dameng123
alter database open;
select * from t1;
alter tablespace ts online;
关闭数据库,使用累积备份01进行还原
DmServiceDMSERVER stop
dmrman
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmbak/cum_bak_01';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmbak/cum_bak_01';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
启动数据库,查看数据
DmServiceDMSERVER start
disql bak_test/dameng123
select * from t1;
五、归档日志恢复测试
插入三条记录,用于完全备份
insert into t1 values('full01');
insert into t1 values('full02');
insert into t1 values('full03');
commit;
backup database full to full_bak_03 backupset '/home/dmdba/dmbak/full_bak_03' backupinfo '完全备份03';
select sf_bakset_backup_dir_add('disk','/home/dmdba/dmbak');
select backup_name,backup_path,begin_lsn,end_lsn,desc# from v$backupset;
插入三条记录,用于归档日志基于lsn恢复
insert into t1 values('lsn01');
insert into t1 values('lsn02');
insert into t1 values('lsn03');
commit;select file_lsn from v$rlog;
插入三条记录,用于归档日志基于时间恢复
insert into t1 values('time01');
insert into t1 values('time02');
insert into t1 values('time03');
commit;
select sysdate;
select file_lsn from v$rlog;
模拟数据文件丢失
重启数据库,查看表
DmServiceDMSERVER restart
disql bak_test/dameng123
alter database open;
select * from t1;
alter tablespace ts online;
关闭数据库,使用完全备份03还原数据文件
DmServiceDMSERVER stop
dmrman
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmbak/full_bak_03';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmbak/full_bak_03';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
启动数据库,查看表,发现只恢复到了完全备份03的数据(多出来的full01是上一次测试没删干净,与这次测试无关)
DmServiceDMSERVER start
disql bak_test/dameng123
select * from t1;
关闭数据库,使用归档日志基于lsn恢复
DmServiceDMSERVER stop
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmbak/full_bak_03';
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/home/dmdba/arch' until lsn 46922;
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
启动数据库,查看表,lsn小于46922之前的数据全部恢复
DmServiceDMSERVER start
disql bak_test/dameng123
select * from t1;
关闭数据库,使用归档日志基于时间进行恢复
DmServiceDMSERVER stop
dmrman
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmbak/full_bak_03';
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/home/dmdba/arch' until time '2022-06-20 15:31:18';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
启动数据库,查看表,时间早于2022-06-20 15:31:18之前的数据全部恢复
DmServiceDMSERVER start
disql bak_test/dameng123
select * from t1;
更多资讯请到达梦社区地址了解: