目录
基于时间点备份恢复
测试用例名称 | 基于时间点备份恢复 | 测试用例标识 | ||
测试用例说明(方法、目的) | 测试基于时间点对数据库进行备份、恢复 | |||
前置条件 | 配置dmarch.ini,内容如下: [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #归档类型 LOCAL/REALTIME ARCH_DEST = /dmarch #归档目标路径 ARCH_FILE_SIZE = 128 #归档文件大小,单位Mb,缺省128M ARCH_SPACE_LIMIT = 10240 打开dm.ini中的归档开关:ARCH_INI=1 重启数据库服务器 | |||
测试执行步骤 | ||||
序号 | 测试输入 | 预期结果 | ||
1 | --建表,并插入数据 SQL> create table tab1(col1 int,col2 varchar2(10)) ; SQL> set time on 10:18:10 SQL> insert into tab1 values(1,'a') ; 10:18:26 SQL> insert into tab1 values(2,'b') ; 10:18:39 SQL> commit ; 10:18:41 SQL> select * from tab1 ; LINEID COL1 COL2 ---------- ----------- ---- 1 1 a 2 2 b | 执行成功 | ||
2 | --备份表: 10:18:50 SQL> backup database backupset '/dmbak/db_full_lsn' ; | 执行成功 在/dmbak/ db_full_lsn路径下生成文件db_full_lsn_1.bak、db_full_lsn.bak和db_full_lsn.meta | ||
3 | --插入数据: 10:23:57 SQL> insert into tab1 values(3,'c') ; 10:24:12 SQL> commit ; 10:24:21 SQL> alter system switch logfile ; 10:24:33 SQL> select sysdate ; LINEID SYSDATE ---------- ------------------- 1 2022-04-18 10:24:38 10:24:38 SQL> select file_lsn from v$rlog ; LINEID FILE_LSN ---------- -------------------- 1 112374 | |||
4 | --truncate表TAB1: 10:25:34 SQL> truncate table tab1 ; | 执行成功 | ||
4 | --关闭数据库,执行表还原: $ service DmServicedmserver stop $ dmrman RMAN> restore database '/dmdata/DAMENG/dm.ini' from backupset '/dmbak/db_full_lsn'; RMAN> recover database '/dmdata/DAMENG/dm.ini' with archivedir '/dmarch' until time '2022-04-18 10:24:38'; RMAN> recover database '/dmdata/DAMENG/dm.ini' update db_magic ; | |||
5 | --开库,查询表TAB1: $ service DmServicedmserver start $ disql SYSDBA/SYSDBA SQL> select * from tab1 ; LINEID COL1 COL2 ---------- ----------- ---- 1 1 a 2 2 b 3 3 c | 查询到truncate之前,备份集之后的数据 | ||
备注 | 清除测试环境: drop table tab1 ; | |||
基于LSN备份恢复
测试用例名称 | 基于LSN备份恢复 | 测试用例标识 | ||
测试用例说明(方法、目的) | 测试基于LSN对数据库进行备份、恢复 | |||
前置条件 | 配置dmarch.ini,内容如下: [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #归档类型 LOCAL/REALTIME ARCH_DEST = /dmarch #归档目标路径 ARCH_FILE_SIZE = 128 #归档文件大小,单位Mb,缺省128M ARCH_SPACE_LIMIT = 10240 打开dm.ini中的归档开关:ARCH_INI=1 重启数据库服务器 | |||
测试执行步骤 | ||||
序号 | 测试输入 | 预期结果 | ||
1 | --建表,并插入数据 11:22:21 SQL> create table tab1(col1 int,col2 varchar2(10)) ; 11:22:31 SQL> insert into tab1 values(1,'a') ; 11:22:42 SQL> insert into tab1 values(2,'b') ; 11:22:46 SQL> commit ; 11:22:49 SQL> select * from tab1 ; LINEID COL1 COL2 ---------- ----------- ---- 1 1 a 2 2 b | 执行成功 | ||
2 | --备份表: 11:22:53 SQL> backup database backupset '/dmbak/db_full_lsn1' ; | 执行成功 在/dmbak/ db_full_lsn1路径下生成文件db_full_lsn1_1.bak、db_full_lsn1.bak和db_full_lsn1.meta | ||
3 | --插入数据: 11:24:36 SQL> insert into tab1 values(3,'c') ; 11:24:40 SQL> commit ; 11:24:43 SQL> alter system switch logfile ; 11:24:47 SQL> select sysdate ; LINEID SYSDATE ---------- ------------------- 1 2022-04-18 11:24:51 11:24:51 SQL> select file_lsn from v$rlog ; LINEID FILE_LSN ---------- -------------------- 1 114908 | |||
4 | --truncate表TAB1: 11:25:54 SQL> truncate table tab1 ; | 执行成功 | ||
5 | --关闭数据库,执行表还原: $ service DmServicedmserver stop $ dmrman RMAN> restore database '/dmdata/DAMENG/dm.ini' from backupset '/dmbak/db_full_lsn1'; RMAN> recover database '/dmdata/DAMENG/dm.ini' with archivedir '/dmarch' until lsn 114908; RMAN> recover database '/dmdata/DAMENG/dm.ini' update db_magic ; | |||
6 | --开库,查询表TAB1: $ service DmServicedmserver start $ disql SYSDBA/SYSDBA SQL> select * from tab1 ; LINEID COL1 COL2 ---------- ----------- ---- 1 1 a 2 2 b 3 3 c | 查询到truncate之前,备份集之后的数据 | ||
备注 | 清除测试环境: drop table tab1 ; | |||
增量备份恢复(利用整个全备和增量备)
测试用例名称 | 增量备份恢复 | 测试用例标识 | ||
测试用例说明(方法、目的) | 测试数据库产品是否提供数据增量备份/恢复功能 | |||
前置条件 | 配置dmarch.ini,内容如下: [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #归档类型 LOCAL/REALTIME ARCH_DEST = /dmarch #归档目标路径 ARCH_FILE_SIZE = 128 #归档文件大小,单位Mb,缺省128M ARCH_SPACE_LIMIT = 10240 打开dm.ini中的归档开关:ARCH_INI=1 重启数据库服务器 | |||
测试执行步骤 | ||||
序号 | 测试输入 | 预期结果 | ||
1 | 建表,并插入数据 create table tab1(col1 int) ; insert into tab1 values(1) ; commit ; | 执行成功 | ||
2 | 执行联机完全备份数据库: backup database full backupset '/dmbak/dm_full' ; | 备份成功 | ||
3 | 继续向tab1表插入数据: insert into tab1 values(2) ; insert into tab1 values(3) ; commit ; | 执行成功 | ||
4 | 执行联机增量备份数据库: backup database increment with backupdir '/dmbak/dm_full' backupset '/dmbak/dm_inc' | 备份成功 | ||
5 | 删除表: drop table tab1 ; | 执行成功 | ||
6 | 停止数据库服务,执行脱机还原: $ dmrman RMAN> restore database '/dmdata/DAMENG/dm.ini' from backupset '/dmbak/dm_inc'; RMAN> recover database '/dmdata/DAMENG/dm.ini' from backupset '/dmbak/dm_inc' ; RMAN> recover database '/dmdata/DAMENG/dm.ini' update db_magic ; | 还原成功 | ||
7 | 启动数据库服务,查询表tab1: SQL> select * from tab1 ; LINEID COL1 ---------- ----------- 1 1 2 2 3 3 | 返回结果集: 说明数据库成功还原到了做增量备份时的状态 | ||
备注 | 清除测试环境: drop table tab1 ; | |||
增量备份恢复(利用整个全备和部分增量备)
测试用例名称 | 增量备份恢复 | 测试用例标识 | ||
测试用例说明(方法、目的) | 测试数据库产品是否提供数据增量备份/恢复功能 | |||
前置条件 | 配置dmarch.ini,内容如下: [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #归档类型 LOCAL/REALTIME ARCH_DEST = /dmarch #归档目标路径 ARCH_FILE_SIZE = 128 #归档文件大小,单位Mb,缺省128M ARCH_SPACE_LIMIT = 10240 打开dm.ini中的归档开关:ARCH_INI=1 重启数据库服务器 | |||
测试执行步骤 | ||||
序号 | 测试输入 | 预期结果 | ||
1 | 建表,并插入数据 create table tab1(col1 int) ; insert into tab1 values(1) ; commit ; | 执行成功 | ||
2 | 执行联机完全备份数据库: backup database full backupset '/dmbak/dm_full1' ; | 备份成功 | ||
3 | 继续向tab1表插入数据: insert into tab1 values(2) ; commit ; select file_lsn from v$rlog ; LINEID FILE_LSN ---------- --------------------
insert into tab1 values(3) ; commit ; | 执行成功 | ||
4 | 执行联机增量备份数据库: backup database increment with backupdir '/dmbak/dm_full1' backupset '/dmbak/dm_inc1' | 备份成功 | ||
5 | 删除表: drop table tab1 ; | 执行成功 | ||
6 | 停止数据库服务,执行脱机还原: $ dmrman RMAN> restore database '/dmdata/DAMENG/dm.ini' from backupset '/dmbak/dm_full1'; RMAN> recover database '/dmdata/DAMENG/dm.ini' with archivedir '/dmarch' until lsn 31256; RMAN> recover database '/dmdata/DAMENG/dm.ini' update db_magic ; | 还原成功 因为要还原到全备之后增量备之前,所以需要restore到全备,然后利用归档恢复到指定点 | ||
7 | 启动数据库服务,查询表tab1: SQL> select * from tab1 ; LINEID COL1 ---------- ----------- 1 1 2 2 | 返回结果集: 说明数据库成功还原到了固定LSN号 | ||
备注 | 清除测试环境: drop table tab1 ; | |||
达梦社区地址:https://eco.dameng.com