rman备份恢复总结
Recovery Manager(RMAN)是一種用于備份(backup)、還原(restore)和恢復(recover)
數據庫的Oracle 工具.RMAN只能用于ORACLE8或更高的版本中。它能夠備份整個數據
庫或數據庫部件,如表空間、數據文件、控制文件、歸檔文件以及Spfile參數文件。RMAN
也允許您進行增量數據塊級別的備份,增量RMAN備份是時間和空間有效的,因為他們只備
份自上次備份以來有變化的那些數據塊。而且,通過RMAN提供的接口,第三方的備份與恢
復軟件如veritas將提供更強大的備份與恢復的管理功能。
通過RMAN,也提供了其它更多功能,如數據庫的克隆、采用RMAN建立備用數據庫、
利用RMAN備份與移動裸設備(RAW)上的文件等工作將變得更方便簡單。9i的RMAN通過
增強的自動配置與管理功能,以及特有的塊級別的恢復,將使備份與恢復工作變得更加快捷
與完美。9i的RMAN有如下特征特性:
·自動的備份與恢復
·方便的備份歸檔日志
·自動檢測新的數據文件
·支持增量備份
·最大限度的減少備份與恢復的錯誤
·減少恢復的時間
·在熱備份中不會產生額外的redo日志
·腐爛數據塊的自動檢測·并行的備份與恢復操作
·在線備份時,表空間不用置于備份模式
可以看到,在以上的一些特性中,顯示了RMAN強大的功能與好處,以上功能的實現,
是因為RMAN是塊級別的備份與恢復,備份與恢復發生在數據庫塊級別,可以通過比較數據
塊而獲得一致性的數據塊,可以避免備份沒有用過的塊,可以檢驗塊是否腐爛等塊級別的問
題。
?? 在使用rman備份分為使用恢復目錄和不使用恢復目錄兩種形式,如果使用恢復目錄,那恢復目
錄最好建另外一臺機器上才更有意義,因為如果同生產庫建在一起了,當此機器出現故障時,恢
復目錄數據庫可以也無法使用,那么rman就不能得到先前的備份信息了,也就不能進行恢復了。
?? 下面介紹不使用恢復目錄的備份與恢復方法,由于沒有使用恢復目錄那么相關的備份信息將保
存在控制文件中,所以配置rman為自動備份控制文件,每次執行backup時就自動備份一個控制文
件,默認保存在/opt/ora9/product/9.2.0.4/dbs/ 也可更改備份位置。
啟動控制文件自動備份configure controlfile autobackup on;
設置自動備份控制文件格式configure controlfile autobackup format for device type disk?
to '/backup/cf_%F'
設置備份優化configure backup optimization on;
自動備份控制文件默認保存路徑/opt/ora9/product/9.2.0.4/dbs/
連連接數據庫
rman>connect target / 或 rman target /
備份數據庫
RMAN> run {
2> allocate channel dev1 type disk;
3> backup
4> format '/tmp/hotbak/bak'
5> database;
6> release channel dev1;
7> }
備份表空間
RMAN> run {
2> allocate channel dev1 type disk;
3> backup
4> format '/tmp/hotbak/tablespace_users'
5> tablespace users;
6> release channel dev1;
7> }
備份單獨數據文件
RMAN> run {
2> allocate channel dev1 type disk;
3> backup
4> format '/tmp/hotbak/datafile_users'
5> datafile '/opt/ora9/oradata/oradb/users01.dbf';
6> release channel dev1;
7> }
備份控制文件
RMAN> run {
2> allocate channel dev1 type disk;?
3> backup
4> format '/tmp/hotbak/controlfile'
5> (current controlfile);
6> release channel dev1;
7> }
恢復表空間
rman target / nocatalog
RMAN> startup mount
RMAN> restore tablespace users;
RMAN> recover tablespace users;
RMAN> exit
Datafile recovery 數據文件恢復
??????? RMAN> run {
?????? 2> allocate channel dev1 type disk;
?????? 3> sql "alter tablespace users offline immediate";
?????? 4> restore datafile 4;
?????? 5> recover datafile 4;
?????? 6> sql "alter tablespace users online";
?????? 7> release channel dev1;
?????? 8> }
恢復控制文件
rman>startup nomount;
rman>set dbid=2347671489
rman>restore controlfile from autobackup 或 rman>restore controlfile from?
'/opt/arch/ct_c-2347671489-20060630-00'
rman>alter database open resetlogs;
RMAN> startup mount;
恢復數據庫
RMAN> restore database;
RMAN> recover database;?
RMAN>alter database open resetlogs;
恢復完畢。
?? 上面從恢復控制文件開始,講述的是,只要你有數據庫的備份文件和備份時控制文件,才可以
進行恢復,就算重裝也可以。
再說幾個rman常用命令:
list backup 查看備份信息
List backup summary 查看備份匯總信息
List backup of datafile ‘file name’
list incarnation of database;?? 查看具體的備份信息
Crosscheck命令
檢查磁盤或磁帶上的備份或拷貝是否正確,并更新備份或者拷貝的狀態
Crosscheck backup;
Crosscheck archivelog all;
Delete [noprompt] expired backup命令刪除過期備份
也可以用List來查看相應的報告
LIST EXPIRED BACKUP;
LIST EXPIRED BACKUP SUMMARY;
Delete 命令
Delete命令可以用來刪除指定的備份或者用來刪除廢棄或者是過期的備份集
如刪除指定的備份集與備份片
RMAN> DELETE BACKUPPIECE 101;
RMAN> DELETE CONTROLFILECOPY '/tmp/control01.ctl';
RMAN> DELETE BACKUP OF TABLESPACE users DEVICE TYPE sbt;
刪除過期或者廢棄了的備份
RMAN> DELETE EXPIRED BACKUP;
RMAN> DELETE NOPROMPT OBSOLETE;
RMAN> DELETE OBSOLETE REDUNDANCY = 3;
RMAN> DELETE OBSOLETE RECOVERY WINDOW OF 7 DAYS;
刪除指定的備份歸檔
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 300;
再貼幾個備份腳本:
全庫備份腳本:
#!/bin/sh
date=`date +%Y%m%d`
export ORACLE_BASE=/opt/ora9?
export ORACLE_HOME=/opt/ora9/product/9.2.0.4?
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin?
export ORACLE_OWNER=oracle?
export ORACLE_SID=oradb?
export ORACLE_TERM=xterm?
export LD_ASSUME_KERNEL=2.4.19?
export THREADS_FLAG=native?
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib?
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"?
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data?
/opt/ora9/product/9.2.0.4/bin/rman target / <<EOF
run {
backup
tag 'dbfull'
format '/tmp/dbfull%u_%s_%p_%T'
database;
}
exit;
EOF
rm /opt/arch/* -rf
下面為增量備份腳本,增量備份分為0級,1級,2級,0級為基礎備份,1級為0級增量,恢復時
恢復0級,再恢復1級,oracle9i增量備份也要進行全庫掃描,oracle10G在這方面有專門的改善。
增量備份的好處是減小備份文件大小,但同樣也增加恢復時的時間和復雜度,我更加適合數據量
特別的數據庫。
????
0級備份腳本
#!/bin/sh
date=`date +%Y%m%d`
export ORACLE_BASE=/opt/ora9?
export ORACLE_HOME=/opt/ora9/product/9.2.0.4?
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin?
export ORACLE_OWNER=oracle?
export ORACLE_SID=oradb?
export ORACLE_TERM=xterm?
export LD_ASSUME_KERNEL=2.4.19?
export THREADS_FLAG=native?
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib?
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"?
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data?
/opt/ora9/product/9.2.0.4/bin/rman target / <<EOF
run {
backup
incremental level 0
tag 'db0'
format '/tmp/db0%u_%s_%p_%T'
database;
#plus archivelog
#delete all input;
}
exit;
EOF
rm /opt/arch/* -rf
1級備份
#!/bin/sh
date=`date +%Y%m%d`
export ORACLE_BASE=/opt/ora9?
export ORACLE_HOME=/opt/ora9/product/9.2.0.4?
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin?
export ORACLE_OWNER=oracle?
export ORACLE_SID=oradb?
export ORACLE_TERM=xterm?
export LD_ASSUME_KERNEL=2.4.19?
export THREADS_FLAG=native?
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib?
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"?
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data?
/opt/ora9/product/9.2.0.4/bin/rman target / <<EOF
run{
backup
incremental level 1
tag 'db1'
format '/tmp/db1%u_%s_%p_%T'
database;
#plus archivelog
#delete all input;
}
exit;
EOF
如果出現故障,恢復的方法參考上面的就可以了,把相應該的備份文件控制文件和歸檔日志都
放在相對的位置就可以進恢復了。
?
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 (退出)
??? 2、連接:
??? %rman [email=target=rman/rman@mydb]target=rman/rman@mydb[/email] (啟動恢復管理器)
??? 3、基本設置:
??? RMAN> configure default device type to disk; (設置默認的備份設備為磁盤)
??? RMAN> configure device type disk parallelism 2; (設置備份的并行級別,通道數)
??? RMAN> configure channel 1 device type disk fromat '/backup1/backup_%U'; (設置備份的文件格式,只適用于磁盤設備)
??? RMAN> configure channel 2 device type disk fromat '/backup2/backup_%U'; (設置備份的文件格式,只適用于磁盤設備)
??? 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';
??? 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' 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 [email=target=rman/rman@mydb]target=rman/rman@mydb[/email] (啟動恢復管理器)
??? 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 [email=target=rman/rman@mydb]target=rman/rman@mydb[/email] (啟動恢復管理器)
??? 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;
??? 增量恢復:
??? 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 [email=target=rman/rman@mydb]target=rman/rman@mydb[/email]
??? RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora
??? RMAN> restore database;
??? RMAN> recover database;
??? RMAN> alter database open.(e129)on.htm
??? simulator/doc/license_keys.htm
??? simulator/doc/sdk.style.css
??? simulator/doc/davehitzforeword.htm
??? simulator/doc/faq.htm
??? simulator/doc/troubleshooting.htm
??? simulator/license.htm
??? simulator/readme.htm
??? simulator/runsim.sh
??? simulator/setup.sh
??? simulator/sim.tgz
總結
以上是生活随笔為你收集整理的rman备份恢复总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Atom相关资料整理
- 下一篇: Activity调用栈的分析