1、切換服務器歸檔模式,如果已經是歸檔模式可跳過此步:
%sqlplus /nolog (啟動sqlplus)
SQL> conn / as sysdba (以DBA身份連接
數據庫)
SQL> shutdown immediate; (立即關閉數據庫)
SQL> startup mount (啟動實例并加載數據庫,但不打開)
SQL> alter database archivelog; (更改數據庫為歸檔模式)
SQL> alter database open; (打開數據庫)
SQL> alter system archive log start; (啟用自動歸檔)
SQL> exit (退出)

恢復數據庫必須在mount狀態下

2、連接:
%rman
target=rman/rman@mydb(啟動恢復管理器)

3、基本設置:
RMAN> configure default device type to disk; (設置默認的備份設備為磁盤)
RMAN> configure device type disk parallelism 2; (設置備份的并行級別,通道數)
RMAN> configure channel 1 device type disk format '/backup1/backup_%U'; (設置通道1備份的文件格式,只適用于磁盤設備)
RMAN> configure channel 2 device type disk format '/backup2/backup_%U'; (設置通道2備份的文件格式,只適用于磁盤設備)
RMAN> configure controlfile autobackup on; (打開控制文件與服務器參數文件的自動備份)
RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F'; (設置控制文件與服務器參數文件自動備份的文件格式)

4、查看所有設置:
RMAN> show all;

5、查看數據庫方案報表
RMAN> report schema;

6、備份全庫:
RMAN> backup database plus archivelog delete input; (備份全庫及控制文件、服務器參數文件與所有歸檔的重做日志,并刪除舊的歸檔日志)

7、備份表空間:
RMAN> backup tablespace system plus archivelog delete input; (備份指定表空間及歸檔的重做日志,并刪除舊的歸檔日志)

8、備份歸檔日志:
RMAN> backup archivelog all delete input;

9、復制數據文件:
RMAN> copy datafile 1 to '/oracle/dbs/system.copy'; (使用report schema可以查看。該命令報告數據庫所有能備份的數據文件對象。)
RMAN> copy datafile '/export/home/oracle/oradata/support2/users01.dbf' to '$ORACLE_HOME/test.copy'; (標準用法)
RMAN> list copy of datafile '/oracle/dbs/system.copy'; (查看相對應的文件copy)
RMAN> delete copy of datafile '/oracle/dbs/system.copy'; (刪除相對應的文件copy)

10、查看備份和文件復本:
RMAN> list backup;

11、驗證備份:
RMAN> validate backupset 3;

12、從自動備份中恢復服務器參數文件:
RMAN> shutdown immediate; (立即關閉數據庫)
RMAN> startup nomount; (啟動實例)
RMAN> restore spfile to pfile '/backup1/mydb.ora' from autobackup; (從自動備份中恢復服務器參數文件)

13、從自動備份中恢復控制文件:
RMAN> shutdown immediate; (立即關閉數據庫)
RMAN> startup nomount; (啟動實例)
RMAN> restore controlfile to '/backup1/controlfile01.ctl' from autobackup; (從自動備份中恢復控制文件)

13、恢復和復原全數據庫:
RMAN> shutdown immediate; (立即關閉數據庫)
RMAN> exit (退出)
%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak (將數據文件重命名)
%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak (將數據文件重命名)
%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak (將數據文件重命名)
%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak (將數據文件重命名)
%rman
target=rman/rman@mydb(啟動恢復管理器)
RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora (指定初始化參數文件啟動數據庫)
RMAN> restore database; (還原數據庫)
RMAN> recover database; (恢復數據庫)
RMAN> alter database open; (打開數據庫)

14、恢復和復原表空間:
RMAN>
sql 'alter tablespace users offline immediate'; (將表空間脫機)
RMAN> exit (退出恢復管理器)
%mv /oracle/dbs/users01.dbf /oracle/dbs/users01.bak (將表空間重命名)
%rman
target=rman/rman@mydb(啟動恢復管理器)
RMAN> restore tablespace users; (還原表空間)
RMAN> recover tablespace users; (恢復表空間)
RMAN> sql 'alter tablespace users online'; (將表空間聯機)

15、增量備份與恢復:
第一天的增量基本備份:
RMAN> backup incremental level=0 database plus archivelog delete input;
第二天的增量差異備份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第三天的增量差異備份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第四天的增量差異備份:
RMAN> backup incremental level=1 database plus archivelog delete input;
第五天的增量差異備份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第六天的增量差異備份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第七天的增量差異備份:
RMAN> backup incremental level=0 database plus archivelog delete input;
backup incremental level=1 CUMULATIVE database plus archivelog delete input;
增量恢復:
RMAN> shutdown immediate;
RMAN> exit
%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak
%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak
%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak
%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak
%rman
target=rman/rman@mydb
RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;


基于時間點的恢復
export ORACLE_SID=order
rman target / nocatalog
set DBID=1454675292
startup nomount;
restore controlfile from autobackup;
alter database mount;
restore database until time "TO_DATE('03/14/07 15:00:00','MM/DD/YY HH24:MI:SS')";
recover database until time "TO_DATE('03/14/07 15:00:00','MM/DD/YY HH24:MI:SS')";
alter database open resetlogs;

基于時間點的恢復時,rman只會尋找時間點之前的備份集