一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

OracleRMAN的備份與恢復(fù)命令詳解(一)

 Froum27 2010-06-12
首頁(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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    欧美亚洲三级视频在线观看| 视频一区日韩经典中文字幕| 色婷婷中文字幕在线视频| 亚洲一区二区三区在线免费| 亚洲视频一区二区久久久| 九九热国产这里只有精品| 日韩在线欧美一区二区| 欧美日本道一区二区三区| 欧美日韩精品综合在线| 亚洲淫片一区二区三区| 欧美日韩精品综合一区| 两性色午夜天堂免费视频| 欧美综合色婷婷欧美激情| 微拍一区二区三区福利| 日韩欧美亚洲综合在线| 九九热视频经典在线观看| 精品欧美国产一二三区| 美女黄色三级深夜福利| 久热久热精品视频在线观看| 极品少妇一区二区三区精品视频| 日本视频在线观看不卡| 91午夜少妇极品福利| 久热香蕉精品视频在线播放| 亚洲国产成人久久99精品| 欧美午夜一区二区福利视频| 国产性色精品福利在线观看| 国产男女激情在线视频| 国产内射一级一片内射高清| 人妻人妻人人妻人人澡| 久久精品伊人一区二区| 亚洲综合色婷婷七月丁香| 欧美日韩亚洲国产av| 国产精品一区欧美二区| 欧美一区二区三区99| 欧美尤物在线观看西比尔| 亚洲午夜精品视频观看| 99热九九热这里只有精品| 中文字幕中文字幕在线十八区| 视频在线免费观看你懂的| 99久久精品午夜一区二| 国产精品熟女乱色一区二区|