--建表
create table sales
(
product_id number(10),
sales_date date,
sales_cost number(10,2),
status varchar2(20)
);
--插数据
insert into sales values (1,sysdate-90,18.23,'inactive');
commit;
--启用rman做全库备份
运行D:\autobackup\rman\backup_orcl.bat
生成日志文件D:\autobackup\rman\logs\2011-04-29.log
从日志文件中看出:
Control File and SPFILE:D:\AUTOBACKUP\RMAN\C-1275904369-20110429-00
数据文件:D:\AUTOBACKUP\RMAN\DATA_20110429_1DMB01T6_1_1
日志文件:D:\AUTOBACKUP\RMAN\DATA_20110429_1CMB01T2_1_1 和 D:\AUTOBACKUP\RMAN\DATA_20110429_1EMB022O_1_1
备份正查完成。
--再插数据
insert into sales values (2,sysdate-60,18,'inactive');
commit;
--切换日志(手动触发检查点)
connect sys/orcl as sysdba;
alter system switch logfile;
--继续插数据
insert into sales values (3,sysdate-30,88.23,'inactive');
commit;
--全库恢复
1.连接rman
rman target /
2.启动数据库到加载状态
rman> shutdown immediate;
rman> startup mount;
3.执行修复、恢复操作
rman> restore database;
rman> recover database;
4.打开数据库(恢复完成退出rman)
rman> alter database open;
rman> exit;
5.校验
SQL> select * from sales;
PRODUCT_ID SALES_DATE SALES_COST STATUS
---------- ----------- ----------- --------------------
1 2011-1-29 1 18 inactive
2 2011-2-28 1 18 inactive
3 2011-3-30 1 88 inactive
三条数据齐全,说明数据库在恢复时启用日志文件对数据进行了恢复。
增量备份已现多余,检查点也无需用户手动触发,
oracle在备份前会归档一次日志文件,在备份后也会归档一次日志文件,这也是为什么备份时生成两个日志文件的原因。
6.恢复完成后马上做一次全库备份
运行D:\autobackup\rman\backup_orcl.bat
7.本测试的不足
本测试并未模拟灾难环境,如突然断电导致的数据库崩溃,
此时,最后一次检查点至崩溃时刻间的数据没有归档,将会丢失。