首頁(yè) 資訊 空間 學(xué)生 論壇 博客 下載 讀書(shū) 網(wǎng)摘 程序員 外包 書(shū)店 網(wǎng)址 CTO俱樂(lè)部 樂(lè)知教育 D9區(qū)
Safuel的專(zhuān)欄 條新通知 登錄 注冊(cè) 歡迎 退出 我的博客 配置 寫(xiě)文章 文章管理 博客首頁(yè) 全站 當(dāng)前博客 空間 博客 好友 相冊(cè) 留言 用戶(hù)操作 [留言] [發(fā)消息] [加為好友] ID:hxf0759 共6775次訪問(wèn),排名2萬(wàn)外,好友2人,關(guān)注者2人。的文章 原創(chuàng) 15 篇翻譯 0 篇轉(zhuǎn)載 8 篇評(píng)論 3 篇訂閱我的博客 [編輯]hxf0759的公告 [編輯]文章分類(lèi) Oracle命令備忘 Oracle實(shí)驗(yàn) Oracle學(xué)習(xí)筆記 Oracle優(yōu)化相關(guān) 存檔 2010年02月(5) 2009年06月(4) 2009年05月(7) 2009年04月(7) Oracle RMAN的備份與恢復(fù)命令詳解(一) 收藏 4.3 Copy 鏡像拷貝與恢復(fù) Copy鏡像拷貝命令可以創(chuàng)建數(shù)據(jù)庫(kù)數(shù)據(jù)文件、歸檔重做日志或者控制文件的精確副本。 RMAN 副本與這些文件的區(qū)別僅在于名稱(chēng)和(或)位置的區(qū)別。功能相當(dāng)于用戶(hù)管理的備份恢復(fù)中的熱備份。備份副本的好處是恢復(fù)比較快,恢復(fù)時(shí)可以不用拷貝,指定新位置即可。
Copy鏡像拷貝至少要在mount 狀態(tài)下運(yùn)行。
Copy鏡像拷貝可作為增量備份的 Level 0
Oracle10g開(kāi)始,允許使用單條命令"backup as copy"進(jìn)行數(shù)據(jù)庫(kù)拷貝。
4.3.1 備份 生成數(shù)據(jù)文件副本:
RMAN> copy datafile 3 to 'd:\backup\datafilecopy\users01.dbf.bak';
RMAN> copy datafile 'd:\oracle\oradata\ora9i\users01.dbf' to
'd:\backup\datafilecop y\users01.dbf.bak';
生成控制文件副本:
RMAN> copy current controlfile to … ;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP is ON;
備份 ARCHIVELOG 副本:
// 只能一個(gè)一個(gè)的來(lái)備份,而不能指定一個(gè)范圍
RMAN> copy archivelog 'd:\oracle\oradata\arc\ming_351.arc' to
'd:\oracle\orabackup\arc\ming_351.arc';
并行設(shè)置:
1. RMAN> configure device type …… parallelism = 3;//only 2 channel, one for writting data to disk
2. 手工分配多個(gè)通道
3. 在命令中指定多個(gè)文件RMAN> cop y datafile 'xx' to 'xx2', datafile 'yy' to 'yy2', ……;
塊檢查:CHECK LOGICAL 選項(xiàng)MAXCORRUPT參數(shù) V$COPY_CORRUPTION在復(fù)制操作中,Oracle 服務(wù)器進(jìn)程對(duì)每個(gè)塊執(zhí)行校驗(yàn)和計(jì)算以檢測(cè)是否有塊損壞。 RMAN 在還原副本時(shí)也要核對(duì)校驗(yàn)和. 該過(guò)程稱(chēng)為物理?yè)p壞檢測(cè). 可以使用NOCHECKSUM 選項(xiàng)取消校驗(yàn)和操作,從而加快復(fù)制進(jìn)程。如果數(shù)據(jù)庫(kù)已在維護(hù)塊校驗(yàn)和,則此選項(xiàng)無(wú)效。缺省情況下,禁用邏輯損壞的錯(cuò)誤檢查。
可以使用 CHECK LOGICAL 選項(xiàng)測(cè)試通過(guò)了物理?yè)p壞檢查的數(shù)據(jù)和索引塊,查看它們是否存在邏輯損壞,如行片或索引條目損壞。如果檢測(cè)到任何塊存在邏輯損壞,則 將該塊記錄到服務(wù)器進(jìn)程的警報(bào)日志和跟蹤文件中。
可以使用 MAXCORRUPT 參數(shù)設(shè)置邏輯和物理?yè)p壞的閾值。只要在某個(gè)文件中檢測(cè)到的邏輯和物理?yè)p壞總和低于該值,則 RMAN 命令完成,同時(shí) Oracle 將損壞塊的 范圍植入到 V$COPY_CORRUPTION 視圖。如果超出 MAXCORRUPT,則該命令終 止,并且不植入視圖。 當(dāng)并行度比較高時(shí),占用的計(jì)算機(jī)資源較多,但備份操作完成 速度較快。缺省情況下將啟用對(duì)物理?yè)p壞的錯(cuò)誤檢查。有關(guān)在備份過(guò)程中遇到的損壞數(shù)據(jù)文件塊的信息將記錄在控制文件和警報(bào)日志中。
4.3.2 恢復(fù) 查看所有的 Copy鏡像拷貝:RMAN> list copy;數(shù)據(jù)文件副本還原:還原時(shí)可以 offline 數(shù)據(jù)文件所屬表空間,然后利用 OS拷貝命令恢復(fù)副本。
還可以用 restore (datafile num) from datafilecop y 命令來(lái)從數(shù)據(jù)文件副本中還原數(shù)據(jù)文件,然后再用 recover 命令來(lái)恢復(fù)。例如:RMAN> sql "alter database datafile 5 offline"; RMAN> restore (datafile 5) from datafilecop y; RMAN> recover datafile 5;RMAN> sql "alter database datafile 5 online";注意,上面的圓括號(hào)很重要,如果沒(méi)有,restore 命令就會(huì)執(zhí)行失敗。
4.4 Backup 備份與恢復(fù) Backup 備份命令生成 Backup sets (備份集合),以 oracle 專(zhuān)有的格式保存,由一個(gè)完全的所有的備份片集合構(gòu)成,構(gòu)成一個(gè)完全備份或增量備份。
4.4.1 BACKUP 備份命令選項(xiàng)
設(shè)置標(biāo)記(TAG)
RMAN> backup database tag='test backup';
限制備份集大小
RMAN> backup database maxsetsize=100M;
只備份新增部分
RMAN> backup incremental level 0 database;
備份控制文件 同時(shí)備份SPFILE
RMAN> backup current controlfile;
RMAN> configure controlfile autobackup on; // 默認(rèn)是 off
也可以在備份數(shù)據(jù)庫(kù)或者文件的時(shí)候加上 include current controlfile 選項(xiàng)。例如:
RMAN> backup database include current controlfile;
備份時(shí)如果包含了 SYSTEM表空間,將自動(dòng)備份控件文件和 SPFILE RMAN> backup file 1;
使用自動(dòng)備份進(jìn)行恢復(fù):
RMAN> restore spfile/controlfile to '/xx/xx' from autobackup;
備份歸檔日志(9i)
RMAN> backup archivelog all;
RMAN> backup …… plus archivelog; // 在備份其他時(shí)同時(shí)備份歸檔日志
plus archivelog 隱含如下步驟:
運(yùn)行一個(gè) ALTER SYSTEM ARCHIVELOG CURRENT 命令
運(yùn)行 BACKUP ARCHIVELOG ALL 命令。注意如果備份優(yōu)化被啟用,RMAN只會(huì)備份未備份過(guò)的日志
備份 BACKUP命令中定義的文件
運(yùn)行 ALTER SYSTEM ARCHIVE LOG CURRENT 命令
備份所有的剩下的歸檔日志
備份完后刪除歸檔日志RMAN> backup …… ARCHIVELOG all delete all input;修改備份集的保存策略例如:將備份設(shè)置為永久有效RMAN> backup database keep forever logs|nologs;設(shè)置為有效期 180 天RMAN> backup database keep until time='sysdate+180';重寫(xiě)configure exclude / noexclude通過(guò) configure exclude 可以配置 RMAN 不備份上次備份以來(lái)沒(méi)有發(fā)生變化的數(shù)據(jù)文件。如果要確保 RMAN備份這些數(shù)據(jù)文件,可以在 backup命令中添加 noexclude 選項(xiàng)。 例如:RMAN> backup database noexclude;
跳過(guò)脫機(jī)的、不可存取的或者只讀的數(shù)據(jù)文件
RMAN> backup database skip offline skipinaccessible skipreadonly;
強(qiáng)制備份只讀的數(shù)據(jù)文件
RMAN> backup database force;
備份指定周期內(nèi)沒(méi)有備份的數(shù)據(jù)文件
RMAN> backup database not backed up;
RMAN> backup database not backed up since time='sysdate-2';
在備份操作期間檢查邏輯訛誤
RMAN> backup check logical database; //在檢查邏輯錯(cuò)誤的同時(shí)進(jìn)行備份RMAN> backup validate check logical database; //只檢查建立壓縮備份集RMAN> backup as compressed backupset tablespace users FORMAT='D:\BACKUP\%d_%s.dbf';
4.4.2 RESTORE/RECOVER恢復(fù)命令選項(xiàng) 數(shù)據(jù)庫(kù)恢復(fù)
RMAN> restore/revover database ;
表空間恢復(fù)
RMAN> restore/revover tablespace xx ;
只讀表空間的恢復(fù)
默認(rèn)情況下,即使丟失了只讀的數(shù)據(jù)文件,RMAN 也不會(huì)在執(zhí)行完全數(shù)據(jù)庫(kù)還原 操作時(shí) 候還原只讀的數(shù)據(jù)文件。要 在完全恢復(fù)期間還 原只讀的 數(shù)據(jù)文件,就必須在 RESTORE 命令中使用 CHECK READONLY 參數(shù):RMAN> RESTORE DATABASE CHECK READONLY;
恢復(fù)SPFILE/控制文件
使用自動(dòng)備份恢復(fù) SPFILE/控制文件
RMAN> startup nomount;
RMAN> set dbid=153910023
RMAN> restore controlfile from autobackup
RMAN> restore spfile/controlfile to '/xx/xx' from autobackup ;
或
RMAN> restore controlfile from'/arch/ct_c-2347671489-20060630-00';
聯(lián)機(jī)狀態(tài):目標(biāo)數(shù)據(jù)庫(kù) MOUNT 或 OPEN
RMAN> restore controlfile to 'd:\temp\control01.ctl';
歸檔重做日志的還原
RMAN> RESTORE ARCHIVELOG ALL;RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1 UNTIL LOGSEQ=20; RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1;
也可以用 SET命令來(lái)指定歸檔日志的還原位置,例如:
RMAN> run
{
set archivelog destination to "d:\temp";
restore archivelog all;
}
數(shù)據(jù)文件副本還原
RMAN> sql "alter datafile 5 offline";RMAN> restore (datafile 5) from datafilecop y; RMAN> recover datafile 5;RMAN> sql "alter datafile 5 online";請(qǐng)注意,上面的圓括號(hào)很重要
還原檢查與恢復(fù)測(cè)試
與備份檢查一樣,還原操作也可以檢查是否能正常 restore 或者是否該備份集是否有效。如::
RMAN> RESTORE DATABASE VALIDATE;RMAN>VALIDATE BACKUPSET 218;RMAN> RESTORE DATABASE VALIDATE CHECK LOGICAL ;
從指定的tag恢復(fù):
RMAN> RESTORE FROM tag=‘xxxx’;
不完全恢復(fù)的還原:
1.set until time/SCN/ 2.RMAN> restore database until scn 1000;RMAN>restore database "to_date('2005/08/01 13:00:00','yyyy/mm/dd hh24:mi:ss')"; RMAN> restore database until sequence 100 thread 1;
塊級(jí)別的恢復(fù)
塊恢復(fù) Block Media Recovery (BMR),塊是恢復(fù)的最小單元,通過(guò)塊可以減少恢復(fù) 時(shí)間,而且數(shù)據(jù)文件可以在線。恢復(fù)塊的時(shí)候,必須指定具體的塊號(hào),如:RMAN> block recover datafile 6 block 3;具體請(qǐng)見(jiàn) 4.7.4 塊媒體恢復(fù) Block Media Recovery (BMR)
4.4.3 非歸檔模式下的 BACKUP 備份與恢復(fù) 恢復(fù)目錄: 打開(kāi)目標(biāo)數(shù)據(jù)庫(kù):例程啟動(dòng),數(shù)據(jù)庫(kù)加載,mount 不能 open因?yàn)槟繕?biāo)數(shù)據(jù)庫(kù)不在歸檔模式下,所以當(dāng)進(jìn)行備份/恢復(fù)操作的時(shí)候數(shù)據(jù)庫(kù)無(wú)法打開(kāi)。目標(biāo)數(shù)據(jù)庫(kù)只能在 MOUNT 狀態(tài)不能 Open,所以屬于脫機(jī)備份。
非歸檔模式不備份 redo日志,只有完全備份和 readonly/offline表空間和數(shù)據(jù)文件 備份是有意義的,所以非歸檔模式最好不用 RMAN進(jìn)行備份,備份語(yǔ)法與歸檔模式相 同,所以這里只做簡(jiǎn)單介紹。
4.4.3.1 全庫(kù)備份 例: 使用默認(rèn)的設(shè)置脫機(jī)全備份的語(yǔ)句
RMAN> shutdown immediate;RMAN> startup mount;RMAN> backup database;RMAN> startup;
例:不使用默認(rèn)的設(shè)置執(zhí)行脫機(jī)備份操作 ,在備份命令中指定備份選項(xiàng)
RMAN> shutdown immediate;
RMAN> startup mount;
RMAN> run { allocate channel c1 type disk format '/xxx/ming_%U';
allocate channel c2 type disk format '/xxx/ming_%U';
backup full tag full_db_backup format "/backups/db_t%t_s%s_p%p" (database);
backup current controlfile;
release channel c1 ;
release channel c2 ;}
在這個(gè)例子中,我們分配了兩個(gè)通道,備份位置是在/xxx.默認(rèn)情況下,如果備份數(shù)據(jù)文件 1 (SYSTEM 表空間),控制文件和參數(shù)文件也會(huì)備份。 可以通過(guò)下面的命令顯示恢復(fù)目錄中記載的備份集信息: RMAN> list backupset of database;
4.4.3.2 全庫(kù)備份的恢復(fù) $ rman target /
RMAN> startup mount
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open resetlogs;
4.4.3.3 表空間備份 只有 readonly/offline表空間的備份才有意義。
RMAN> run {
2> allocate channel dev1 type disk;
3> backup
4> tag tbs_users_read_only
5> format "/oracle/backups/tbs_users_t%t_s%s"
6> (tablespace users);
7> }
使用下列命令來(lái)顯示恢復(fù)目錄中該表的備份信息:RMAN> list backupset of tablespace users;
4.4.3.4 表空間備份的恢復(fù) RMAN> RUN{
sql "alter tablespace xx offline immediate;"
restore tablespace xx;
recover tablespace xx;
sql "alter tablespace xx online;" }
4.4.3.5 備份控制文件 RMAN> run {
2> allocate channel dev1 type "SBT_TAPE";
3> backup
4> format "cf_t%t_s%s_p%p"
5> tag cf_monday_night
6> (current controlfile);
7> release channel dev1;8> }
注:數(shù)據(jù)庫(kù)完全備份將自動(dòng)備份控制文件。(或者備份時(shí)加 include current controlfile)
4.4.4 歸檔模式下的BACKUP備份與完全恢復(fù) 要用 RMAN 進(jìn)行聯(lián)機(jī)備份操作,數(shù)據(jù)庫(kù)就必須位于 ARCHIVELOG 模式?;謴?fù) 目錄必須打開(kāi),目標(biāo)數(shù)據(jù)庫(kù)例程必須啟動(dòng),數(shù)據(jù)庫(kù)加載或者打開(kāi)。
這部分只介紹完全恢復(fù),不完全恢復(fù)見(jiàn)下一節(jié)。
4.4.4.1 整庫(kù)備份與恢復(fù)備份命令: 只備份數(shù)據(jù)文件 (如果 configure controlfile autobackup on; 將自動(dòng)包括控件文件,SPFILE):RMAN> backup database;同時(shí)備份歸檔日志,然后將備份后的歸檔日志刪除RMAN> backup database plus archivelog delete input;明確指定同時(shí)備份控件文件:
RMAN> run{
allocate channel c1 type disk;
sql 'alter system archive log current';
backup full database include current controlfile tag 'dbfull'
format '/u06/oracle/rmanback/full_%u_%s_%p';
sql 'alter system archive log current';
release channel c1;}
可以用 RMAN的 plus archvielog 選項(xiàng)簡(jiǎn)化數(shù)據(jù)庫(kù)備份:
RMAN> run {
2> backup database
3> format '/xxfull%d_%T_%s'
4> plus archivelog
5> format '/xx/arch_%d_%T_%s'
6> delete all input;
7> }
完全恢復(fù):目標(biāo)數(shù)據(jù)庫(kù)必須是 mount狀態(tài)$ rman target / RMAN> startup mount RMAN> restore database;RMAN> recover database;RMAN> alter database open;
4.4.4.2 表空間的備份與恢復(fù) 備份命令:RMAN> backup tablespace users ;
例:RMAN> RUN{
allocate channel c1 type disk;
backup tablespace users tag 'ts_users' format '/oracle/rmanback/ts_%u_%s_%p' ;
release channel c1;
}
恢復(fù):如果我們只丟失了特定的表空間的數(shù)據(jù)文件,那么我們可以選擇只恢復(fù)這個(gè)表空間,而不是恢復(fù)整個(gè)數(shù)據(jù)庫(kù)。表空間恢復(fù)可以在不關(guān)閉數(shù)據(jù)庫(kù)的情況下進(jìn)行,只需要將需要恢復(fù)的 表空間 offline.
RMAN> RUN{
sql "alter tablespace xx offline immediate;"
restore tablespace xx;
recover tablespace xx;
sql "alter tablespace xx online;"
}
恢復(fù)到一個(gè)不同的位置:
RMAN> RUN{
sql "alter tablespace xx offline immediate;"
SET NEWNAME for datafile 1 to '/xx';
restore tablespace xx;
switch datafile 1;
recover tablespace xx;
sql "alter tablespace tbs1 online;"
}
4.4.4.3 數(shù)據(jù)文件的備份與恢復(fù) 備份命令:
RMAN> backup datafile 3;
RMAN> backup datafile 'D:\ORAC LE\ORADATA\TEST\TEST.DB';
恢復(fù)命令:數(shù)據(jù)文件恢復(fù)與表空間恢復(fù)類(lèi)似 .假設(shè)數(shù)據(jù)文件號(hào)為5的文件丟失,文件名是:'E:\ORACLE\ORADATA\USERS.DBF',那么我們恢復(fù)的時(shí)候可以指定文件號(hào),也可以指定文件名。
RMAN> run {
2> allocate channel dev1 type disk;
3> sql "alter tablespace users offline immediate";
4> restore datafile 4;—或者 restore 'E:\ORACLE\ORADATA\USERS.DBF'
5> recover datafile 4;
6> sql "alter tablespace users online";
7> release channel dev1;
8> }
恢復(fù)到一個(gè)不同的位置:
$ rman target /
RMAN> startup mount
RMAN> RUN{
sql "alter tablespace users offline immediate";
SET NEWNAME for datafile 9 to '/xx/user01.dbf';
restore datafile 9;
switch datafile all;
recover datafile 9;
sql "alter tablespace users online";
}
4.4.4.4 歸檔重做日志的備份與恢復(fù) 備份:整庫(kù)備份的同時(shí),備份所有歸檔 (以及聯(lián)機(jī)日志):RMAN> backup database plus archivelog;
備份所有歸檔:RMAN> backup archivelog all;
備份兩天來(lái)的歸檔:RMAN> backup archivelog from time='sysdate-2' [to time=‘xxx’] ;
備份從 sequence 1 開(kāi)始的歸檔:RMAN> backup archivelog from sequence 1[to sequence =‘n];
備份沒(méi)有三次備份的歸檔:RMAN> backup archivelog not backed up 3 times;
備份所有歸檔,然后刪除歸檔:RMAN> backup archivelog all delete input;
恢復(fù):顯示恢復(fù)目錄中的歸檔日志:RMAN> list backupset of archivelog all;
一般情況下,在 RMAN 的普通恢復(fù)過(guò)程中,不必恢復(fù)歸檔的重做日志。不過(guò)偶爾也需要恢復(fù)重做日志,例如我們用 Log Miner 來(lái)從歸檔中查找一些東西。
RMAN命令舉例:
RMAN> RESTORE ARCHIVELOG ALL;
RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1UNTIL LOGSEQ=20;
RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1;
可以用 SET命令來(lái)指定歸檔日志的還原位置,例如:RMAN> run{ set archivelog destination to "d:\temp";restore archivelog all;}需要注意的是,即使新的歸檔日志目錄不同于默認(rèn)的歸檔日志目錄,如果 Oracle 判定日志已存在,也不會(huì)恢復(fù)該歸檔日志文件。
4.4.4.5 聯(lián)機(jī)日志的備份 聯(lián)機(jī)日志不能用 RMAN 來(lái)備份,可以先將其歸檔,再備份。為了實(shí)現(xiàn)這點(diǎn),必須在 RMAN中執(zhí)行歸檔命令語(yǔ)句:
RMAN> run {
2> allocate channel dev1 type disk;
3> sql "alter system archive log current";
4> backup (archivelog from time "sysdate-1" all delete input)
5> "format "/oracle/backups/log_t%t_s%s_p%p";
6> release channel dev1;
7>
}
上面的腳本可以在執(zhí)行完一個(gè)完整的聯(lián)機(jī)數(shù)據(jù)庫(kù)備份后執(zhí)行,確保所有的重做日志可以將數(shù)據(jù)庫(kù)恢復(fù)到一個(gè)一致性的狀態(tài)。
當(dāng)然,也可以在全庫(kù)備份時(shí)使用 plus archvielog 選項(xiàng),將自動(dòng)完成聯(lián)機(jī)日志的備份。
4.4.4.6 控制文件和服務(wù)器參數(shù)文件的備份與恢復(fù)備份: // 設(shè)置文件名格式RMAN> set controlfile autobackup format for device t ype disk to 'ctl_%F';
1. RMAN> configure controlfile autobackup on; // backup database 時(shí)將自動(dòng)備份
2. RMAN> backup current controlfile;
3. RMAN> backup …… include control file;
4. RMAN> backup file 1; // system datafile 自動(dòng)備份
恢復(fù)SPFILE:
SPFILE(PFILE)的丟失/損壞,對(duì)數(shù)據(jù)庫(kù)不會(huì)產(chǎn)生致命影響,可以從其他方式恢復(fù)。不過(guò)既然RMAN的備份計(jì)劃中包括了SPFILE的備份,那么就可以使用RMAN來(lái)還原SPFILE了。
$ rman target / catalog "rman/rman@db" RMAN> set dbid=153910023 // SET DBID 這個(gè)步驟是不能省略的,否則會(huì)報(bào)錯(cuò)。
RMAN> restore spfile from autobackup [MAXDAYS 100]; // 或者 restore spfile;
RMAN> startup force
或者從某個(gè)備份集恢復(fù):RMAN> restore spfile from backupset bs_num 命令。 使用dbms_backup_restore 包恢復(fù)服務(wù)器參數(shù)文件:在一些不常見(jiàn)的情況下,我們可能需要直接使用dbms_backup_restore 包來(lái)恢復(fù)spfile.當(dāng)然這個(gè)包也可以用來(lái)恢復(fù)其它數(shù)據(jù),是常規(guī)辦法都沒(méi)有用的時(shí)候的一個(gè)利器。 這個(gè)包可以在數(shù)據(jù)庫(kù) NOMOUNT狀態(tài)下使用。 假設(shè)我們有一個(gè)自動(dòng)備份文件C-2600315304-20060829-02,我們需要從這里恢復(fù)數(shù)據(jù),那么可以通過(guò)執(zhí)行下面的腳本來(lái)完成:
SQL>
DECLARE
DEVTYPE VARCHAR2(256);
DONE BOOLEAN;
BEGIN
DEVTYPE:=DBMS_BACKUP_RESTORE.deviceallocate(NULL);
DBMS_BACKUP_RESTORE.restoresetdatafile;
DBMS_BACKUP_RESTORE.restorespfileto('/back/SPFILE.ORA');
DBMS_BACKUP_RESTORE.restorebackuppiece('/back/C-2600315304-20060829-02',DONE=>done);
DBMS_BACKUP_RESTORE.devicedeallocate(NULL);END;
恢復(fù)控制文件:
RMAN> startup nomount; RMAN> set dbid=153910023
RMAN> restore controlfile from autobackup
或
RMAN> restore controlfile from'/arch/ct_c-2347671489-20060630-00';
聯(lián)機(jī)狀態(tài):目標(biāo)數(shù)據(jù)庫(kù) MOUNT 或 OPEN
RMAN> restore controlfile to 'd:\temp\control01.ctl';
然后再執(zhí)行恢復(fù)數(shù)據(jù)庫(kù)的其他步驟:RMAN> restore database; RMAN> recover database;RMAN> alter database open resetlogs;
使用 dbms_backup_restore 包恢復(fù)控制文件:
SQL>
DECLARE DEVTYPE VARCHAR2(256);
DONE BOOLEAN;
BEGIN
DEVTYPE:=DBMS_BACKUP_RESTORE.deviceallocate(NULL);
DBMS_BACKUP_RESTORE.restoresetdatafile;
DBMS_BACKUP_RESTORE.restorecontrolfileto('/back/CONTROL01.CTL');
DBMS_BACKUP_RESTORE.restorebackuppiece('/back/C-2600315304-20060829-00',DONE=>done);
DBMS_BACKUP_RESTORE.devicedeallocate(NULL);END;/
4.4.4.7 備份集的備份的備份與恢復(fù)
備份:備份所有備份集:RMAN> backup backupset all;備份指定備份集:RMAN> backup backupset bs_num;恢復(fù):(這種備份只是增加一個(gè)鏡像,不用恢復(fù))
主要用于改變備份集的位置,或者創(chuàng)建多個(gè)鏡像備份,比如將備份集從硬盤(pán)備份到磁帶。
4.4.5 歸檔模式下的不完全恢復(fù) 不完全恢復(fù)就意味著有數(shù)據(jù)的丟失。引起不完全恢復(fù)的原因有很多,如丟失了聯(lián)機(jī)日志或某個(gè)歸檔日志。另外如果出現(xiàn)了嚴(yán)重?fù)p害數(shù)據(jù)庫(kù)的用戶(hù)錯(cuò)誤,比如某用戶(hù)錯(cuò)誤的刪除了某個(gè)重要的數(shù)據(jù),那么數(shù)據(jù)庫(kù)也要恢復(fù)到這個(gè)錯(cuò)誤操作之前。
不完全恢復(fù)會(huì)影響整個(gè)數(shù)據(jù)庫(kù),需要在 MOUNT 狀態(tài)下進(jìn)行。在不完全恢復(fù)完成之后, 通常需要使用 resetlogs 選項(xiàng)來(lái)打開(kāi)數(shù)據(jù)庫(kù)。resetlogs 表示一個(gè)數(shù)據(jù)庫(kù)邏輯生存期的結(jié)束和另一個(gè)數(shù)據(jù)庫(kù)邏輯生存期的開(kāi)始。數(shù)據(jù)庫(kù)的邏輯生存期也被稱(chēng)為一個(gè)對(duì)應(yīng)物(incarnation)。 每次使用 resetlogs 選項(xiàng)來(lái)打開(kāi)數(shù)據(jù)庫(kù)后都會(huì)創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)對(duì)應(yīng)物,這對(duì)于恢復(fù)操作來(lái)說(shuō)非常重要。每次使用 resetlogs 后,SCN計(jì)數(shù)器不會(huì)被重置,但是 Oracle會(huì)重置聯(lián)機(jī)日志序列號(hào),同時(shí)還會(huì)重置聯(lián)機(jī)重做日志內(nèi)容。因此執(zhí)行了 resetlogs 之后,應(yīng)該立即重新備份整個(gè)數(shù)據(jù)庫(kù),否則恢復(fù)起來(lái)相當(dāng)麻煩。 (注:Oracle 10g 中已經(jīng)可以在 resetlogs 之后不備份數(shù)據(jù)庫(kù),恢復(fù)的時(shí)候能夠穿越 resetlogs)
使用RMAN執(zhí)行不完全恢復(fù)操作時(shí)需要完成的一個(gè)工作是建立恢復(fù)目標(biāo)?;謴?fù)目標(biāo)是要終止恢復(fù)進(jìn)程的點(diǎn),可以是時(shí)間點(diǎn)、指定的 SCN 或者一個(gè)日志序列號(hào)。我們可以在 run代碼中使用 set 命令和 until time、until scn、until sequence 參數(shù)。
也可以選擇在RESTORE 和RECOVER命令中直接使用UNTIL TIME、UNTIL SCN、 或者 UNTIL SEQUENCE 參數(shù),這樣就可以避免使用 run 代碼。例如;
startup mount;
restore database "to_date('2005/08/01 13:00:00','yyyy/mm/dd hh24:mi:ss')"; recover database "to_date('2005/08/01 13:00:00','yyyy/mm/dd hh24:mi:ss')"; alter database open resetlogs;
4.4.5.1 基于SCN的恢復(fù) 如果知道數(shù)據(jù)庫(kù)出錯(cuò)前的 SCN,可以將數(shù)據(jù)庫(kù)還原到指定 SCN 狀態(tài)。
$ startup mount;
RMAN> run{
allocate channel d1 type disk;
restore database until scn 1317011; ——或者 set until scn 1317011
recover database until scn 1317011;
sql 'alter database open resetlogs';
release channel d1;
}
4.4.5.2 基于時(shí)間的恢復(fù) 下面使用 set until time 命令為 2005 年 8 月 1 日下午 1點(diǎn)的恢復(fù)目標(biāo):
$ startup mount;
RMAN> run{
set until time "to_date('2005/08/01 13:00:00','yyyy/mm/dd hh24:mi:ss')";
restore database;
recover database;
alter database open resetlogs;
}
執(zhí)行上面的命令時(shí), RMAN 會(huì)查找與恢復(fù)目標(biāo)時(shí)間最近、但是不包含恢復(fù)目標(biāo)時(shí)間及以后時(shí)間的備份集,并且從這個(gè)備份中還原數(shù)據(jù)庫(kù)。如果數(shù)據(jù)庫(kù)非歸檔模式,那么恢復(fù)操作會(huì)在備份集的時(shí)間點(diǎn)停止;否則 RECOVER 命令會(huì)應(yīng)用恢復(fù)目標(biāo)之前的歸檔重做日志或需 要的增量備份。
4.4.5.3 基于日志序列的恢復(fù) RMAN 允許用戶(hù)將數(shù)據(jù)庫(kù)恢復(fù)到指定的歸檔重做日志序列號(hào)。如果歸檔的重做日志中有間隙(某個(gè)歸檔日志文件或備份損壞或丟失) ,使用這種方法就很方便。間隙通常意味 著我們只能將數(shù)據(jù)庫(kù)還原到間隙開(kāi)始的地方。
SQL> startup mount;
RMAN> restore database until sequence 100 thread 1; ——not include 100 RMAN> recover database until sequence 100 thread 1;
SQL> alter database open resetlogs;
RMAN> RUN {
2> SET UNTIL SEQUENCE 120 THREAD 1;
4> RESTORE DATABASE;
5> RECOVER DATABASE; ——recovers through log 119 not include 120
6> ALTER DATABASE OPEN RESESTLOGS;
7> }
4.5. RMAN 查看信息List 與Report 4.5.1 恢復(fù)目錄相關(guān)視圖 恢復(fù)目錄本身有一組視圖,用于存放目標(biāo)數(shù)據(jù)庫(kù)與備份信息,可以用 RMAN用戶(hù)登錄數(shù) 據(jù)庫(kù)進(jìn)行查看,例:RC_DATABASE
RC_DATAFILE RC_STORED_SCRIPT RC_STORED_SCRIPT_LINE RC_TABLESPACE 4.5.2 RMAN 動(dòng)態(tài)性能視圖
以下是目標(biāo)數(shù)據(jù)庫(kù)上與 RMAN 備份有關(guān)系的一些動(dòng)態(tài)性能視圖,可以用 SYS用戶(hù)進(jìn)行 查詢(xún)。
V$ARCHIVED_LOG V$BACKUP_CORRUPTION V$COPY_CORRUPTION V$BACKUP_DEVICE V$CONTROLFILE_RECORD_SECTION V$BACKUP_DATAFILE 用于通過(guò)確 定各數(shù) 據(jù)文件中 的塊數(shù)來(lái)創(chuàng)建大小 相同的備份集。通過(guò)它也可以找出數(shù)據(jù)文件中已損壞的塊數(shù)。 V$BACKUP_REDOLOG 顯示在備份集中存儲(chǔ)的歸檔日志。 V$BACKUP_SET 顯示已經(jīng)創(chuàng)建的備份集。 V$BACKUP_PIECE 顯示為備份集創(chuàng)建的備份片。
這里還有一個(gè)視圖,可以大致的監(jiān)控到 RMAN 備份進(jìn)行的程度。如通過(guò)如下的 SQL腳本,將獲得備份的進(jìn)度。
SQL> SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
3 FROM V$SESSION_LONGOPS
4 WHERE OPNAME LIKE 'RMAN%'
5 AND OPNAME NOT LIKE '%aggregate%'
6 AND TOTALWORK != 0
7 AND SOFAR <> TOTALWORK;
要在備份過(guò)程中將某一進(jìn)程與一個(gè)通道關(guān)聯(lián)起來(lái),請(qǐng):
1.啟動(dòng)恢復(fù)管理器并連接到目標(biāo)數(shù)據(jù)庫(kù)和恢復(fù)目錄(與后者的連接是可選的)。
Rman target / catalog rman/rman@rcat
2.在分配通道后,設(shè)置 COMMAND ID 參數(shù),然后復(fù)制所需的對(duì)象。
run {
allocate channel t1 type disk;
set command id to 'rman';
copydatafile 1 to '/u01/backup/df1.cpy';
release channel t1;}
3.查詢(xún) V$SESSION_LONGOPS 視圖以獲得復(fù)制的狀態(tài)。
SELECT sid, serial#, context, sofar, totalwork
round(sofar/totalwork*100,2) "% Complete",
FROM v$session_longops
WHERE opname LIKE 'RMAN:%'
AND opname NOT LIKE 'RMAN: aggregate%';
4.使用 SQL*Plus 并查詢(xún) V$PROCESS 和 V$SESSION 以獲得 SID 和 SPID.然 后, 使用操作系統(tǒng)實(shí)用程序來(lái)監(jiān)視進(jìn)程或線程。
SELECT sid, spid, client_info FROM v$process p, v$session s WHERE p.addr = s.paddr
AND client_info LIKE '%id=rman%';
4.5.3 List List 命令是一種在數(shù)據(jù)庫(kù)控制文件 或者恢復(fù)目錄中查詢(xún)備份的歷史信息的方法。 List提供了一組信息,可以提供各種備份的信息,如對(duì)應(yīng)物、備份集、歸檔日志備份、控 制文件備份等等。
列出對(duì)應(yīng)物:RMAN> list incarnation;
列出備份概要信息:RMAN> list backup summary;
按備份類(lèi)型列出備份:RMAN> list backup by file;
獲得備份的詳細(xì)信息,包括備份片的物理文件名:RMAN> list backup; RMAN> list backupset bs#;
或者按照TAG 來(lái)查:RMAN> list backup tag=tab_number;
列出過(guò)期的備份:RMAN> list expired backup;
按照表空間和數(shù)據(jù)文件來(lái)列出備份:列出USERS 表空間的備份:RMAN> list backup of tablespace USERS;
列出文件5的備份:RMAN> list backup of datafile 5;
列出文件 E:\ORACLE\USERS.DB 的備份:RMAN> list backup of datafile ' E:\ORAC LE\USERS.DB ';
列出控制文件的備份:RMAN> list backup of controlfile;
列出歸檔日志的備份:RMAN> list archivelog all;RMAN> list backup of archivelog all;
列出副本:
RMAN> list copy 列出所有的副本。
RMAN> list copy of controlfile 列出控制文件副本
RMAN> list copy of archivelog all 列出所有歸檔日志副本
RMAN> list copy of database 列出數(shù)據(jù)庫(kù)所有數(shù)據(jù)文件的副本
4.5.4 Report Report 命令被用于判斷數(shù)據(jù)庫(kù)的當(dāng)前可恢復(fù)狀態(tài)和提供數(shù)據(jù)庫(kù)備份的特定信息,可以檢測(cè)哪些文件需要備份,哪些備份能被刪除以及那些文件能不能獲得的信息。可以報(bào) 告數(shù)據(jù)庫(kù)的所有能備份數(shù)據(jù)文件對(duì)象,包括數(shù)據(jù)文件名、文件號(hào)、表空間、文件大小、 是否含有回滾段等。
RMAN> report schema或者RMAN> REPORT SCHEMA AT TIME 'SYSDATE-14'; RMAN> REPORT SCHEMA AT SCN 1000;RMAN> REPORT SCHEMA AT SEQUENCE 100 THREAD 1;
報(bào)告需要備份的數(shù)據(jù)文件RMAN> report need backup [ redundancy | days | incremental n];
報(bào)告過(guò)期了的數(shù)據(jù)文件或者不可用的備份與拷貝
RMAN> Report obsolete [orphan]
報(bào)告最近沒(méi)有備份的數(shù)據(jù)文件
RMAN> report need backup days=10; // 恢復(fù)需要超過(guò) 10天的歸檔日志
RMAN> report need backup incremental=3; // 恢復(fù)時(shí)需要超過(guò) 3 增量的文件報(bào)表文件,增量名稱(chēng)8 15 E:\ORACLE\ORADATA\MING_RECOVER\MINGDICT.DB 9 15 E:\ORACLE\ORADATA\MING_RECOVER\MINGLOB.DB
這個(gè)報(bào)告中,列出的數(shù)據(jù)文件,在進(jìn)行恢復(fù)的時(shí)候,需要從 3 個(gè)以上的增量備份文件中恢復(fù)。我們知道如果需要從很多文件中恢復(fù),會(huì)影響恢復(fù)速度,可以根據(jù)情況來(lái)重新備份這些文件。
報(bào)告?zhèn)浞萑哂嗷蚧謴?fù)窗口我們可以執(zhí)行 report need backup redundancy 來(lái)確定為滿(mǎn)足冗余備份策略而需要備份的 文件。例如:RMAN> report need backup redundancy=2; // 文件冗余備份少于2個(gè)我們也可以按照恢復(fù)窗口來(lái)查找需要備份的文件。比如我們要求恢復(fù)窗口小于2天,那么用下面的命令:
RMAN> report need backup recovery window of 2 days; //文件報(bào)表的恢復(fù)需要超過(guò) 2天的歸檔日志
這個(gè)命令等同于:report need backup days=2;
發(fā)表于 @ 2009年05月17日 23:33:00 | 評(píng)論( 0 ) | 編輯| 舉報(bào)| 收藏
舊一篇:Oracle RMAN的基本概念 | 新一篇:Oracle歸檔命令
查看最新精華文章 請(qǐng)?jiān)L問(wèn)博客首頁(yè)相關(guān)文章 DBA工作備忘錄之三:rman備份,未使用catalog,控制文件丟失的解決辦法DBA工作備忘錄之三:rman備份,未使用catalog,控制文件丟失的解決辦法oracle數(shù)據(jù)庫(kù)備份與恢復(fù)ORACLE ten G R two 備份 帶與帶不歸檔日志的過(guò)程RMAN備份錯(cuò)誤ORA-19502的學(xué)習(xí)rman異地和本地備份---ORA-19504ORACLE數(shù)據(jù)庫(kù)RMAN備份恢復(fù)如何移動(dòng)數(shù)據(jù)文件的位置發(fā)表評(píng)論 表 情: 評(píng)論內(nèi)容: 用 戶(hù) 名: 登錄 注冊(cè) 匿名評(píng)論 匿名用戶(hù)驗(yàn) 證 碼: 重新獲得驗(yàn)證碼 公司簡(jiǎn)介|招賢納士|廣告服務(wù)|銀行匯款賬號(hào)|聯(lián)系方式|版權(quán)聲明|法律顧問(wèn)|問(wèn)題報(bào)告 北京創(chuàng)新樂(lè)知廣告有限公司 版權(quán)所有, 京 ICP 證 070598 號(hào) 世紀(jì)樂(lè)知(北京)網(wǎng)絡(luò)技術(shù)有限公司 提供技術(shù)支持 Email:webmaster@csdn.net Copyright © 1999-2010, CSDN.NET, All Rights Reserved 本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/hxf0759/archive/2009/05/17/4196078.aspx
|
|
來(lái)自: Froum27 > 《Oracle RMAN》