一、验证删除后是否能恢复
1、建测试表sysdba.test6
create table test6 as select id from sysobjects;
executed successfully
2、备份test6
SQL> backup table test6;
executed successfully
备份位置
SQL> select backup_path,type,backup_time,base_name from v$backupset;
LINEID BACKUP_PATH TYPE
---------- --------------------------------------------------------- -----------
BACKUP_TIME BASE_NAME
-------------------------- ---------
1 /dm8/data/TEST/bak/TS_MAIN_FULL_20210104_142803_889266 0
2021-01-04 14:28:04.725525
3、删除test6,并恢复
SQL> drop table test6 purge;
executed successfully
restore table test6 from backupset '/dm8/data/TEST/bak/TAB_TEST6_BTREE_20210104_142949_400940';
restore table test6 from backupset '/dm8/data/TEST/bak/TAB_TEST6_BTREE_20210104_142949_400940';
[-2106]:Error in line: 1
Invalid table or view name [TEST6].
4、新建一个test6表 id列与sysobjects的列类型不同
create table test6 (id varchar(10));
executed successfully
SQL> restore table test6 from backupset '/dm8/data/TEST/bak/TAB_TEST6_BTREE_20210104_142949_400940';
restore table test6 from backupset '/dm8/data/TEST/bak/TAB_TEST6_BTREE_20210104_142949_400940';
[-8324]:the definition of dest table restored does not match with the one in backupset.
5、新建一个与sysobjects 的id列一致的表
SQL> desc sysobjects
LINEID NAME TYPE$ NULLABLE
---------- -------- ------------ --------
1 NAME VARCHAR(128) N
2 ID INTEGER N
3 SCHID INTEGER N
4 TYPE$ VARCHAR(10) N
5 SUBTYPE$ VARCHAR(10) Y
6 PID INTEGER Y
7 VERSION INTEGER N
8 CRTDATE DATETIME(6) Y
9 INFO1 INTEGER Y
10 INFO2 INTEGER Y
11 INFO3 BIGINT Y
LINEID NAME TYPE$ NULLABLE
---------- ----- --------------- --------
12 INFO4 BIGINT Y
13 INFO5 VARBINARY(128) Y
14 INFO6 VARBINARY(2048) Y
15 INFO7 BIGINT Y
16 INFO8 VARBINARY(1024) Y
17 VALID CHAR(1) Y
17 rows got
SQL> create table test6 (id int);
executed successfully
SQL> restore table test6 from backupset '/dm8/data/TEST/bak/TAB_TEST6_BTREE_20210104_142949_400940';
executed successfully
二、验证是否应用归档
1、查看是否开启归档
SQL> select arch_mode from v$database;
LINEID ARCH_MODE
---------- ---------
1 Y
已开启归档,备份是在归档开启之后做的
2、删除部分表数据
SQL> select count(1) from test6;
LINEID COUNT(1)
---------- --------------------
1 1365
used time: 0.875(ms). Execute id is 410.
SQL> delete from test6 where id<1000;
affect rows 286
SQL> commit;
executed successfully
SQL> select count(1) from test6;
LINEID COUNT(1)
---------- --------------------
1 1079
3、还原test6
SQL> restore table test6 from backupset '/dm8/data/TEST/bak/TAB_TEST6_BTREE_20210104_142949_400940';
executed successfully
SQL> select count(1) from test6;
LINEID COUNT(1)
---------- --------------------
1 1365
三、结论
表恢复需要存在与原结构一致的表,字段数量、类型一致
表数据恢复到备份时的数量,证明未应用归档。
官方文档也明确提示'表还原之后不需要恢复操作',也表明了恢复表是不会应用归档的。