RMAN命令詳解
顯示所有RMAN配置
rman target sys/oracle@practice 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;
建立P
分配3個通道,設定備份片檔案最大尺寸為400M
建立備份集,檔案格式:“%d_%s_%p.bak”,備份目錄:“D:\BACKUP\RMAN”
清除通道分配
使用list backup 命令列出所有備份集。
rman targt sys/oracle@practice 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@practice 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@practice 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@practice 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:\backu