显示所有RMAN配置
rman target sys/oracle nocatalog
show all;
建立OS目录“D:\BACKUP\RMAN”
run {host mkdir “D:\BACKUP\RMAN”}
配置RMAN备份文件默认格式为“%d_%s.bak”,然后显示自动通道配置。
configure channel device type disk format ‘D:\BACKUP\RMAN\%d_%s.bak’;
show channel;
配置备份冗余度为3,然后显示备份冗余度
configure retention policy to redundancy 3;
show retention policy;
清除备份冗余度配置,然后显示备份冗余度
configure retention policy clear;
show retention policy;
建立PRACTICE 数据库的备份集
分配3个通道,设置备份片文件最大尺寸为400M
建立备份集,文件格式:“%d_%s_%p.bak”,备份目录:“D:\BACKUP\RMAN”
清除通道分配
使用list backup 命令列出所有备份集。
rman targt sys/oracle nocatalog
run {
configure channel device type disk maxpiecesize 400M; --设置最大尺寸400M
configure device type disk parallelism 3; --分配3个并行通道
backup database format=’e:\backup\rman\%d_%s_%p.bak’; --以指定格式备份
configure channel device type disk clear; --还原最大尺度限制
configure device type disk clear; --还原并行度
}
list backup;
建立表空间USERS的备份集
使用REPORT SCHEMA 命令报告目标数据库的物理方案
建立备份集,文件格式:“%N_%s.bak”, 备份目录:D:\backup\rman
使用list backup 命令列出所有备份集
report schema;
backup tablespace users format=’e:\backup\rman\%N_%s.bak’;
list backup of tablespace users;
建立最近一天归档日志的备份集
手工切换日志3次
sql ‘alter system switch logfile’;
sql ‘alter system switch logfile’;
sql ‘alter system switch logfile’;
建立归档日志的备份集
backup archivelog from time ‘sysdate-1’ until time ‘sysdate’
format=’e:\backup\rman\%d_%s.bak’;
使用list backup 命令列出所有备份集
list backup of archivelog all;
建立增量备份和累计备份
在USER01表空间上执行增量0级备份
backup incremental level 0 tablespace user01;
建立示例表test_7,并执行pl/sql块插入数据
run {host ‘sqlplus sys/oracle as sysdba’;}
create table test_7(cola INT) TABLESPACE user01;
begin
for I in 1..100000 loop
insert into test_7 values(i);
end loop;
commit;
end;
/
在USER01表空间上执行增量1级备份
exit
backup incremental level 1 tablespace user01;
为示例表test_7插入1000000行数据
run {host ‘sqlplus sys/oracle as sysdba’;}
create tale test_7(cola INT) TABLESPACE user01;
begin
for I in 100000..200000 loop
insert into test_7 values(i);
end loop;
commit;
end;
/
exit
在user01表空间上执行累积1级备份
backup incremental level 1 cumulative tablespace user01;
在USER01表空间上执行增量0级备份
backup incremental level 0 tablespace user01;
列出user01表空间的所有备份集,并比较各个备份片文件的尺寸
list backup of tablespace user01;
在USER01表空间的数据文件上建立映像副本
使用REPORT SCHEMA 命令报告目标数据库物理方案
report schema;
备份user01表空间的数据文件,备份目录:D:\BACKUP\RMAN
copy datafile 5 to ‘e:\backup\rman\df_5.bak’;
RMAN恢复
恢复SYSTEM表空间
建立示例表test_8 插入6行数据并提交
create table test_8(cola INT) TABLESPACE system;
insert into test_8 values(1);
insert into test_8 values(2);
insert into test_8 values(3);
insert into test_8 values(4);
insert into test_8 values(5);
insert into test_8 values(6);
模拟损坏
rman target sys/oracle nocatalog
report schema;
shutdown immediate
run {host ‘del E:\PRACTICE\SYSTEM01.DBF’;}
重启数据库,打开数据库,检查是否完全恢复
startup
run {
restore datafile 1;
recover datafile 1;
alter database open;
}
run {host ‘sqlplus sys/oracle@practice as sysdba’;}
select * from test_8
恢复其他表空间(USER)
建立示例表test_9,插入3行数据并提交
create table test_9(cola INT) TABLESPACE users;
insert into test_9 values(1);
insert into test_9 values(2);
insert into test_9 values(3);
commit;
模拟损坏
恢复users表空间
检查test_9是否完全恢复
shutdown immediate;
run {host ‘del e:\practice\users01.dbf’;}
startup
run {
sql ‘alter database datafile 4 offline’;
sql ‘alter database open’;
restore tablespace users;
recover tablespace users;
sql ‘alter tablespace users online’;
}
run {host ‘sqlplus sys/oracle@practice as sysdba’;}
select * from test_9;
基于时间的不完全恢复
建立示例表test_10,插入6行数据并提交
create test_10 (cola INT) TABLESPACE user01;
insert into test_10 values(1);
insert into test_10 values(2);
insert into test_10 values(3);
insert into test_10 values(4);
insert into test_10 values(5);
insert into test_10 values(6);
commit;
查询sysdate函数确定当前系统日期和时间
select to_char(sysdate,’YYYY-MM-DD HH24:MI:SS’) from dual;
模拟误操作
DROP table test_10;
恢复并检查结果
set NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
rman target sys/oracle@practice nocatalog
run {
startup force mount;
set until time ‘’;
restore database;
recover database;
alter database open resetlogs;
}
run {host ‘sqlplus sys/oracle@practice as sysdba’;}
select * from test_10;
基于取消的不完全恢复
建立示例表TEST_11,并插入6行数据每插入一行提交一次,并手工切换日志
create table test_11(cola INT) TABLESPACE user01;
insert into test_11 values(2);
commit;
insert into test_11 values(3);
commit;
insert into test_11 values(4);
commit;
insert into test_11 values(5);
commit;
insert into test_11 values(6);
commit;
alter system switch logfile;
模拟损坏, 恢复数据,并检查test_11表的结果
shutdown immediate;
run {host ‘del e:\practice\user01.dbf’;}
run {host ‘del e:\practice\archive\47_1_993476187.ARC’}
run {host ‘del C:\practice\archive\47_1_993476187.ARC’}
run{
startup force mount;
setuntil sequence=3;
restore database;
recover database;
alter database open resetlogs;
}
run {host ‘sqlplus sys/oracle@practice as sysdba’;}
select * from test11;
RMAN维护
REPORT:,查看目标数据库物理结构,查看需要备份的文件,陈旧的备份文件
LIST:列出所有备份集,备份片,映像副本
CROSSCHECK:查看备份状态是否失效,保持同步状态
DELETE:删除 --noprompt 不显示信息
CHANGE:改变备份集,备份片状态,以及是否长久保存
CATALOG:添加用户备份到RMAN备份资料库中
删除所有备份集和映像副本
delete noprompt backup;
delete noprompt copy;
使用REPORT命令
报告数据库物理方案
export schema;
报告3天为备份的数据文件,然后备份相应的数据文件
report need backup days 1 database;
在user01表空间上执行以下语句建立TEST_12表:
CREATE TABLE test_12 TABLESPACE user01 NOLOGGING
AS SELECT * FROM test11;
报告不可恢复的数据文件,然后备份相应的数据文件
report unrecoverable;
backup datafile 5 format =”E:\BACKUP\rman\%d_%s.bak”;
使用LIST命令
列出表空间 USERS 的备份集
list backup of tablespace users;
列出所有数据库的副本
list incarnation of database;
使用CROSSCHECK命令
列出表空间USER01的备份集,然后使用OS命令删除某个备份集文件
list backup of tablespace user01;
run {host ‘del e:\backup\rman\practice_16.bak’;}
使用CROSSCHECK 命令核对表空间USER01的备份集
crosscheck backup of tablespace user01;
使用DELETE命令
删除陈旧备份
delete noprompt obsolete;
删除EXPIRED备份集
delete expired backup;
使用CHANGE命令
列出表空间USER的备份集,然后改变备份集为UNAVAILABLE状态
list backup of tablespace users;
change backupset 13 unavailable;
列出表空间USER的备份集,然后改变备份集为AVAILABLE状态
list backup of tablespace users;
change backupset 13 unavailable;
使用CATALOG命令
使用用户管理备份方式备份USER01表空间
run {host ‘sqlplus sys/oracle @practice as sysdba’;}
alter tablespace user01 begin backup;
host copy e:\practice\user01.dbf d:\backup\rman
alter tablespace user01 end backup;
exit
追加USER01表空间备份信息到RMAN资料库
catalog datafile copy ‘E:\backup\rman\user01.dbf’;