1. 程式人生 > >RMAN命令詳解

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

RACTICE 資料庫的備份集

分配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