<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      15.Oracle10g服務器管理恢復--目錄維護(練習24.25.26)

      作為一名DBA必須能對數據庫進行備份以確保數據庫始終處于受保護狀態,而不出現任何失效的情況。進行自動備份操作時,需要關注如下問題:

      • 經常備份的內容是什么?
      • 可以完全恢復數據庫嗎?
      • 是否已經有一個歸檔日志文件的良好備份嗎?
      • 是否有不能恢復的數據庫操作妨礙了數據庫的恢復?
      • 哪些備份是孤立的并可以刪除?
      • 恢復需要哪些備份才能實現?
      • 可以進行快速恢復嗎?

      RMAN備份配置完成并成功運行后,仍需要給予密切關注,作為DBA驗證備份工作必須進行,不需要的舊備份需要刪除。在前面練習中推薦了一種典型的增量備份策略。當日常自動備份進行時,這些備份一直在累積。下圖顯示了幾個星期之后日常備份是如何建立起來的,該圖顯示了在星期天進行基準增量備份后,每天進行增量備份。如果每個備份操作都完好按照計劃進行,則意味著數據庫已經得到保護,DBA可以高枕無憂了。
      為了安全起見需要經常檢查備份工作的情況以及數據庫是否按計劃得到保護,有時因為缺少磁盤空間、硬件錯誤等問題導致自動備份的失敗,或者由于磁帶介質管理發生問題,如果在緊急情況下出現備份沒有完成或者不可用等情況,那問題就嚴重,甚至可能危機DBA的職位。

      (圖1 )

      在練習中會出現許多用于檢查和維護PRACTICE數據庫目錄備份的RMAN命令,可以通過以下三個方面來探討一個成功RMAN的部署:

      1. 如何通過已有的腳本來運行RMAN任務?(參見練習24)
      2. 如何確定數據庫已經由RMAN備份保護起來了?(參見練習25)
      3. 如何清理過時、不需要的腳本,釋放備份存儲空間,并保持目錄處于一個便于管理的大小?(參見練習26)

      RMAN命令

      RMAN提供了幾個用于維護備份的命令,雖然這些命令在21-23練習中使用過,這里將更詳細進行介紹。

      (一) LIST
      LIST命令將使RMAN讀取目錄或控制文件來顯示備份的有關細節,如果列出一個單一的備份集,將會看到生成的備份片、時間、SCN值、文件名等屬于該備份的信息。一般情況下,列表的結果輸出到屏幕上,如果在命令行中或RMAN提示符下指定了輸出消息日志文件,那么結果會輸出到該文件中。如果需要顯示特定備份的細節,可以限定備份鍵值、備份標識、時間范圍、設備類型或者指定的匹配模式,也可以查詢備份內部特定的對象、特定的表空間、數據文件、控制文件以及歸檔日志等詳細情況。
      (二) REPORT
      REPORT命令對于需要操作的數據庫備份高亮顯示,與LIST命令類似,發布的REPORT命令將通知RMAN讀取目錄或目錄控制文件并收集備份的有關信息。這些REPORT命令能夠判斷是否可以快速恢復數據庫以及找到不再需要的陳舊備份,也可以采用如下方式運行報告(report)命令以獲取需要的信息:

      • 需要備份什么文件?
      • 哪些文件沒有最新的備份?
      • 哪些文件因為不可以恢復的操作的原因不能恢復?

      Report將會找到一個孤立的備份,該備份被執行多次而且被新的備份孤立,冗余(Redundancy)選項定義了一個備份在孤立以前能夠保留的次數,其中孤立備份報告默認冗余值是一個備份。

      (三) CHANGE
      CHANGE命令幫助管理已知RMAN備份的狀態,對于每個文件RMAN都分配一個可維護的通道來訪問磁盤或磁盤上的文件。CHANGE命令有幾個更改目錄和備份文件的選項:

      • Delete 從操作系統上刪除備份片文件,并標記該備份記錄為已刪除(deleted);
      • Available 為了還原將映像拷貝或備份片的狀態修改為Available,默認情況下,所有的備份都設置為Available;
      • Unavailable 為了還原,將映像拷貝或備份片的狀態修改為Unavailable;
      • Uncatalog 從目錄中刪除備份。

      (四) CROSSCHECK
      CROSSCHECK命令驗證RMAN備份中已知的備份片文件是否存在磁盤或者磁帶上,CROSSCHECK可以作為CHANGE命令的一個選項執行,當對磁盤的備份使用CROSSCHEC命令時,RMAN讀取目錄查找該備份所在的位置,如果找到備份文件,RMAN需要驗證備份片頭部的正確性。
      (五) VALIDATE
      VALIDATE命令確定一個或多個備份集是否能被還原或者是已經損壞,VALIDATION比CROSSCHECK包含了更多的驗證功能。當執行該命令時,RMAN將查找介質上所有的備份片并掃描每個文件,當讀取備份片中的每個數據塊時,已經存儲的備份操作的校驗將重新計算并進行校驗。如果每個文件的校驗和正確,則RMAN確認該備份集的所有備份片都處于有序狀態而且有效。備份片驗證時的任何錯誤寫入到告警日志文件、服務器跟蹤文件、V$BACKUP_CORRUPTION或V$COPY_CORRUPTION動態視圖中。該命令不僅可以對指定的備份集進行驗證,而且可以在RESTORE命令中使用VALIDATE選項模擬還原數據庫或部分數據庫;最后RMAN可以使用UNTIL參數設定期望的恢復停止點,驗證恢復是否可以在前一個時間點完成。
      除了上面五個管理備份與目錄的命令外,還可以使用CREATE、REPLACE以及DELETE等命令腳本。

       

      練習24:存儲腳本

      恢復管理器命令可以在RMAN提示符下運行或通過腳本執行,也可以將腳本保存在資料庫中,然后在RMAN提示符下執行這些存儲的腳本。每個注冊的數據庫必須有屬于自己的存儲腳本;腳本不能在不同數據庫之間共享。例如:如果有兩個數據庫在目錄中注冊并且都要運行一個名為b_whole_inc0的腳本,則必須在目錄中分別為每個數據庫創建自己的腳本。
      本練習將要學習如何將前面使用過的腳本文件作為存儲腳本保存。
      步驟一:創建并替換存儲腳本
      用21-23練習創建備份存儲腳本b_whole_inc0.rcv、b_whole_inc1.rcv、b_archive_2days.rcv和b_archive_delete3.rcv:

       1 create script b_whole_inc0 {
       2   allocate channel d1 type disk;
       3   backup 
       4     incremental level = 0 
       5     database
       6     format 'D:\oracle\CODE\chap13\db_%d_%s_%p_%t'
       7     tag = 'WHOLE_INC0';
       8     release channel d1;
       9 }
      10 
      11 create script b_whole_inc1 {
      12   allocate channel d1 type disk;
      13   backup 
      14     incremental level = 1 cumulative
      15     database
      16     format 'D:\oracle\CODE\chap13\db_%d_%s_%p_%t'
      17     tag = 'WHOLE_INC1';
      18     release channel d1;
      19 }
      20 
      21 create script archive_log_current {
      22   sql "ALTER SYSTEM ARCHIVE LOG CURRENT";
      23 }
      24 
      25 create script b_archive_2days {
      26   allocate channel d1 type disk;
      27   execute script archive_log_current;
      28   backup archivelog
      29     from time 'SYSDATE-2'
      30     format 'D:\oracle\CODE\chap13\ar_%d_%s_%p_%t';
      31     release channel d1;
      32 }
      33 
      34 create script b_archive_delete3 {
      35   allocate channel d1 type disk;
      36   execute script archive_log_current;
      37   backup archivelog
      38     from time 'SYSDATE-3' until time 'SYSDATE-2'
      39     format 'D:\oracle\CODE\chap13\ar_%d_%s_%p_%t'
      40     delete input;
      41     release channel d1;
      42 }

      上述腳本定義將完成和21-23練習備份的腳本文件同樣的任務,下面是關于scripts.rcv內容的說明:

      • 在存儲腳本時,不需要運行塊。腳本中的命令將在加載時編譯然后作為一個整體執行;
      • 存儲腳本的語法在保存到目錄中時進行檢查,這種校驗保證了任何存儲腳本都沒有語法錯誤。在格式化語句中存儲腳本不檢查子目錄是否存在;
      • 所有RMAN的存儲腳本執行完成后,分配的通道并沒有自動釋放,所以應該顯示釋放這些通道;
      • 當存儲腳本文件時,生成腳本的命令第一次生成腳本,也可以使用REPLACE SCRIPT命令以新的腳本代替已經存在的腳本;
      • 存儲腳本可以從許多文件中或在RMAN提示符下生成,不需要同時載入到一個腳本文件中;
      • 如果替換的腳本不存在或需要進行替換,則使用REPLACE SCRIPT命令,而不是CREATE SCRIPT來生成這個存儲腳本。

      為了生成存儲腳本,必須鏈接到恢復目錄以及目標數據庫,盡管可以在RMAN命令提示符中輸入每一行命令來生成存儲腳本,但最好還是運行scripts.rcv文件:

      1 WIN>rman
      2 RMAN>connect catalog rman1010/rman@rcat 
      3 RMAN>connect target sys/system@practice
      4 RMAN>@scripts.rcv

       如果只是為了在恢復目錄中增加數據,為什么還鏈接到目標數據庫呢?因為在目錄中創建的腳本只用于該目標數據庫。(如果還有其他的數據庫也注冊在該目錄中,則當鏈接到另一個目標數據庫時還需要運行scripts.rcv)當替換腳本文件運行時,這個獨立的腳本將進行語法檢查并存儲在目錄數據庫中,腳本文件中的每個存儲腳本都有類似如下的信息顯示:

      (圖3 )

      如果輸入錯誤或者RMAN不能編譯這些命令,則RMAN將顯示錯誤并說明該文件不符合規則的信息。
      步驟二:列表顯示存儲腳本
      如何知道腳本已經在目錄中生成?在RMAN提示符下沒有一個比較方便的方法顯示所有存儲的腳本,但有一個名為RC_STORED_SCRIPT的視圖,其中每一行分別記錄了目錄數據庫中的每一個存儲的腳本。具體方法如下:

      1 RMAN>host;
      2 WIN>sqlplus /nolog
      3 SQL>connect rman1010/rman@rcat
      4 SQL>set linesize 1000
      5 SQL> SELECT db_name, script_name
      6        FROM rc_stored_script
      7       WHERE db_name = 'PRACTICE';

      (圖5 )

      小技巧:退出SQL*PLUS,返回到RMAN提示符下,在RMAN提示符下,再次輸入exit又回退到RMAN提示符下。

      (圖7)

      可以在RMAN下使用PRINT命令打印存儲腳本的內容,下面將顯示每一個存儲腳本命令的內容:

      1 RMAN>print script archive_log_current;
      2 RMAN>print script b_whole_inc0;
      3 RMAN>print script b_whole_inc1; 
      4 RMAN>print script b_archive_2days;
      5 RMAN>print script b_archive_delete3;

      (圖9)

      步驟三:執行并刪除存儲腳本

      RMAN EXECUTE SCRIPT命令在RMAN提示符下運行存儲腳本,嘗試運行剛才生成的一個腳本來執行一次完全數據庫備份。運行存儲在目錄數據庫中的b_whole_inc0腳本來備份PRACTICE數據庫:

      1 RMAN>run { execute script b_whole_inc0; }

      (圖11)

      腳本執行命令必須置于運行塊中,如果運行幾個不同的腳本,需要置于單獨的運行塊中。如下運行一次整體數據庫增量級別1的備份以及近兩天之內生成的歸檔日志文件的備份:

      1 RMAN> run {
      2        execute script b_whole_inc1;
      3    execute script b_archive_2days;
      4       }

      (圖13)

      (圖15)

      為了刪除存儲腳本,使用REMOVE SCRIPT命令指定腳本的名稱:

      1 RMAN>delete script b_whole_inc1;

      (圖17)

      在本練習中,只創建了少量的腳本,對于大型的規劃部署,將會創建諸如備份、維護以及恢復等多種任務復雜腳本。從存儲腳本運行備份操作的最大優點就是集中存放,分離的腳本文件不需要在服務器上導出維護,而RMAN也可以運行在沒有駐留在目標數據庫的服務器上。

       

      練習25:確認備份

      數據庫得到保護是否就可以防止失效?是否可以使用服務器管理的備份按商業要求進行數據庫的恢復?這些問題對于成功的RMAN部署是一個關鍵的測試,但這些測試對于大型的數據庫需要花費大量的時間和磁盤空間。

      • RMAN是否有一種方法可以驗證目標數據庫已經由當前的備份保護起來了?答案是確認的;
      • 是否可以發現數據庫某些部分由于不可恢復的操作而沒有受到保護?答案是,可以;
      • 是否可以確認目錄中注冊的備份任然保存在磁盤或者磁帶上?答案是。

      在本練習中,將會使用LIST、CHANGE、REPORT和VALIDATE命令,也可以查詢目標控制文件和目錄來檢查但前備份的詳細清單。通過這些方法,可以確認對PRACTICE數據庫已經進行了充分的備份。
      步驟一:用LIST確認備份
      在這個任務中,將介紹可以列出的信息類別和數據庫文件以及如何過濾不需要的內容。在介紹如何用LIST命令確認備份之前,先通過示例來講解LIST命令的各個選項。

      1) 種類 LIST命令將顯示RMAN相關備份信息的三種類型中的一種,可以查詢RMAN數據庫形態(INCARNATION)信息、備份(BACKUP)以及映像拷貝(IMAGE COPY):

      • INCARNATION 顯示數據庫的形態,包括重置日志的SCN和日期/時間值。每個數據庫鍵值以及形態鍵值都不相同;
      • BACKUP 顯示數據庫文件的備份,包括備份集號、備份級別(增量號以及完全備份)以及完成時間、每個備份集都有自己的鍵值。默認情況下,備份列表顯示備份集和數據文件,而不是顯示歸檔日志和控制文件;
      • MAGE COPY 顯示數據庫文件的拷貝,包括檢查點SCN、時間、以及該拷貝完成的日期/時間值,每個映像拷貝的鍵值都不同。默認情況下,該拷貝列表顯示數據文件的映像拷貝,而不顯示歸檔日志和控制文件。

      2) 數據庫文件及過濾器 當列表備份與拷貝時,應指定RMAN需要顯示的數據庫文件類型:數據文件、控制文件或者歸檔日志文件。如果沒有指定顯示的文件類型,默認情況下備份與拷貝的列表將顯示數據文件。為了查看不同的數據庫對象列表(數據文件、表空間、控制文件、歸檔日志文件或者數據庫),應在LIST BACKUP或COPY命令上增加以下關鍵字:

      • Database 顯示目標數據庫所有數據文件的備份或映像拷貝;
      • Tablespace 在一個單引號字符串中顯示表空間的所有數據文件備份或映像拷貝,可以列表多個數據文件;
      • Datafile 在一個單引號的字符串內以文件號或文件名顯示數據文件的備份或映像拷貝,可以列表多個數據文件;
      • Controlefile 顯示目標數據庫中的控制文件的備份或映像拷貝;
      • Archivelog 顯示歸檔日志文件的備份或映像拷貝。

      3) 數據文件 為了以不同的方式說明SYSTEM和USERS表空間文件的備份與映像拷貝的清單,在RMAN提示符下輸入如下命令:

      1 #List backup sets & pieces for the SYSTEM and USERS tablespaces
      2 RMAN>list backup;
      3 RMAN>list backup of database;
      4 RMAN>list backup of tablespace SYSTEM, USERS;
      5 RMAN>list backup of datafile 137;
      6 RMAN>list backup of datafile
      7      'D:\oracle\PRACTICE\system01.dbf',
      8      'D:\oracle\PRACTICE\users01.dbf',
      9      'D:\oracle\PRACTICE\users02.dbf'

      (圖19)

      (圖21)

      (圖23)

      1 #List image copies for the SYSTEM and USERS tablespaces
      2 RMAN>list copy;
      3 RMAN>list copy of database;
      4 RMAN>list copy of tablespace SYSTEM, USERS;
      5 RMAN>list copy of datafile 137;
      6 RMAN>list copy of datafile
      7      'D:\oracle\PRACTICE\system01.dbf',
      8      'D:\oracle\PRACTICE\users01.dbf',
      9      'D:\oracle\PRACTICE\users02.dbf';

      當列表該數據庫的備份和拷貝時,將得到組成該數據庫所有部分的全部備份與映像拷貝。

      (圖25)

      (圖27)
      4) 控制文件 為了查看控制文件的備份與映像拷貝,可以執行只輸出控制文件的list命令: 

      1 RMAN>list backup of controlfile;
      2 RMAN>list copy of controlfile;

      (圖29)

      (圖31)

      5) 歸檔日志 對于歸檔日志列表的過濾選項與數據文件和控制文件都不同。必須在list命令中明確指定哪個歸檔日志文件的清單。使用關鍵字Arachivelog將指定一個歸檔日志文件備份或映像拷貝的列表。列表的結果可以是所有的歸檔日志文件、匹配一種歸檔日志模式或者指定文件范圍的列表。范圍類型必須屬于以下之一:

      • 時間 可以用FROM TIME、UNTILE TIME或者二者結合的關鍵字指定范圍,后跟單引號的日期字符串。日期字符串可以使字符形式與TO_DATE函數結合的字符串形式、SYSDATE的日期算式和其他類型如LAST_DAY、ADD_MONTHS等的日期函數。FROM TIME將會包括從指定時間開始以來進行重做更改的歸檔重做日志文件;UNTILE TIME則包括從指定時間作為最后的重做更改時間以來的歸檔重做日志文件;
      • SCN SCN跨越了重做日志文件,可以用關鍵字FROM SCN、UNTIL SCN或二者結合的關鍵字來指定范圍,后跟一個整數值。FROM SCN將會包括具有大于或等于SCN值的歸檔重做日志文件,UNTIL SCN將會包括具有小于或等于SCN值的歸檔重做日志文件;
      • 日志序號 重做日志序列的值是針對重做日志文件的,可以用關鍵字FROM LOGSEQ、UNTIL LOGSEQ 或二則結合的關鍵字來制定范圍,后跟一個整數值。FROM LOGSEQ將會包括具有大于或等于該日志序列號的歸檔日志文件,UNTIL LOGSEQ將會包括具有小于或等于該日志序列的歸檔日志文件;
       1 #List archive log backup sets & pieces
       2 RMAN>list backup of archivelog all;
       3 RMAN>list backup of archivelog like '%oradata%';
       4 RMAN>list backup of archivelog from time 'SYSDATE - 14';
       5 RMAN>list backup of archivelog until time 'SYSDATE - 7';
       6 RMAN>list  backup of archivelog
       7      from time 'SYSDATE - 14'
       8      until time 'SYSDATE - 7';
       9 RMAN>list backup of archivelog from SCN 100000;
      10 RMAN>list backup of archivelog until SCN 110000;
      11 RMAN>list backup of archivelog from SCN 100000 until SCN 110000;
      12 RMAN>list backup of archivelog from logseq 130;
      13 RMAN>list backup of archivelog until logseq 139;
      14 RMAN>list backup of archivelog from logseq 130 until 139;

      (圖33)

      (圖35)

      上面的實例說明了如何查看RMAN的備份以及RMAN的映像拷貝的歸檔日志文件。羅列的幾個示例有助于理解如何定義范圍模式,當連接到PRACTICE目標數據庫以及目錄數據庫時,可以運行這些命令,調整SCN值以及日志序列號可以看到不同的輸出結果。

       6) 日期格式選項 參看下表說明如何在列表中用RMAN建立日期值;

      RMAN日期字符串選項

      日期字符串

      SYSDATE

      當前的日期時間

      TRUNC(SYSDATE)

      當天午夜

      SYSDATE - 7

      比當前日期少7

      13-JAN-2002

      如果會話的值是NLS_DATE_FORMAT=DD-MON-YYYY則是2002113日午夜

      TO_DATE(13-JAN-2002 13:00,

       DD-MON-YYYY HH24:MI)

      不論是NLS_DATE_FORMAT的值是什么,該時間是2002113日下午1

      ADD_MONTHS(SYSDATE, 1)

      當前日期時間之后的一個月

      ADD_MONTH(SYSDATE, -1)

      當前日期時間之前的一個月

      LAST_DAY(SYSDATE, 1)

      當前日期時間前一天

      NEXT_DAY(SYSDATE, SUNDAY)

      當前日期時間的下一個星期天的日期

       

       7) 更多的過濾選項

      可以用基于幾個條件來過濾輸出,如果使用RMAN一段時間但沒有刪除孤立的備份,則輸出結果會超額。這個列表使用過濾規則來解決,過濾規則包括:

      • Completion time 列表輸出的結果中只出現限制在時間范圍內的備份與映像拷貝。用AFTER關鍵字指定時間下限,用BEFORE關鍵字指定時間上限,用BETWEEN關鍵字指定時間范圍;
      • Tag 列表輸出結果中只出現限制在特定的tag名稱的備份與映像拷貝,如果沒有提供tag名稱,則將包括所有標示的備份與映像拷貝;
      • Recoverable 列表的結果只限定于那些可以被恢復的數據庫,也可以有選擇地為可恢復性指定停止點。這個選項將顯示所有適于基準備份的備份以及適于恢復的正確形態。例如:如果進行一次級別為3的增量備份而沒有基準(增量級別為0、完全備份或映像拷貝)備份,則該備份不能用于恢復;
      • Device type 列表的結果只限于那些具有磁盤或’SBT_TAPE’類型的備份或映像拷貝;
      • Like列表的結果只限于那些含有的數據文件匹配了文件名模式的映像拷貝,%通配符可以匹配任何字符序列’_’字符則只匹配一個字符。
       1 #List backup sets of the system datafile with filter criteria
       2 RMAN>list backup completed after 'SYSDATE - 14';
       3 RMAN>list backup completed before 'SYSDATE - 7';
       4 RMAN>list backup completed between 'SYSDATE - 14' and 'SYSDATE - 7';
       5 RMAN>list backup tag = WHOLE_INC0;
       6 RMAN>list backup recoverable;
       7 RMAN>list backup device type disk;
       8 RMAN>list copy like '%system%';
       9 RMAN>list backup completed after 'SYSDATE - 14'
      10                  tag = WHOLE_INC0
      11                  device type disk
      12                  recoverable;

      (圖37)

      這些示例說明了如何使用過濾規則來限制列表的輸出,為了查看映像拷貝的清單,可以用COPY代替關鍵字BACKUP,也可以將這些過濾器與其他數據庫對象的選項組合使用,比如為查看USERS表空間本月完成、tag名為“WHOLE_INC0”的磁盤備份,可以按如下方式操作:

      1 RMAN>list backup of tablespace 'USERS'
      2     Completed after 'LAST_DAY(ADD_MONTHS(SYSDATE, -1)) + 1'
      3     TAG = WHOLE_INC0
      4     Device type disk;

      (圖39)

      如果該備份存在,則該list命令會列出所需要的結果。注意,過濾規則的順序是無關的,另外每個過濾條件不需要在同一行書寫。

      8) 使用列表工作 當以這些選項列出了備份與映像拷貝后,如何確認PRACTICE數據庫已經得到保護?根據生成的列表可以確認得到的備份與期望的策略一致,以下采用如下描述的增量備份策略

      • 星期日 累積增量級別為0的備份,tag為SUN_LEVEL0;
      • 星期一 累積增量級別為2的備份,tag為SUN_LEVEL2;
      • 星期二 累積增量級別為2的備份,tag為SUN_LEVEL2;
      • 星期三 累積增量級別為2的備份,tag為SUN_LEVEL2;
      • 星期四 累積增量級別為1的備份,tag為SUN_LEVEL1;
      • 星期五 累積增量級別為2的備份,tag為SUN_LEVEL2;
      • 星期六 累積增量級別為2的備份,tag為SUN_LEVEL2;
      • 每天 備份所有最近兩天的歸檔日志;
      • 每天 備份所有超過三天的歸檔日志并從磁帶刪除;
      • 每天 將當前的控制文件拷貝到每個整理數據庫增量備份中;

      采用該備份策略,每個數據庫文件中的備份輸出是什么?每個歸檔日志是什么?每個控制文件呢?假設超過21天的備份都被刪除了,下面這個列表將顯示期望看到的輸出結果。

       1 #One backup set each day , total of 21
       2 list backup completed after 'SYSDATE - 21';
       3 #21 backup sets completed in the last 21 days
       4 list backup of controlfile completed after 'SYSDATE - 21';
       5 #3 backup sets completed on Sunday
       6 list backup completed after 'SYSDATE - 21' tag = SUN_LEVEL0;
       7 #Repeat above for other tag values
       8 #42 backup sets - two backups daily for 21 days
       9 list backup of archivelog all completed after 'SYSDATE - 21';
      10 #For a specific archive log , should have 3 backups
      11 list backup of archivelog from logseq 130 until logseq 130 completed after 'SYSDATE - 21';
      12 #Make sure we can recover to 21 days previous
      13 list backup recoverable until time 'SYSDATE - 21';

      這些命令的列表輸出結果很長,因此,使用RMAN的log命令來運行,然后檢查日志文件的輸出,查看列表輸出是否有期望獲得的備份清單。

      1 WIN>rman log="D:\oracle\CODE\chap13\list.out"
      2 RMAN>connect targt system/system@practice
      3 RMAN>connect catalog rman1010/rman@rcat
      4 RMAN>@list.rcv
      5 RMAN>exit

      (圖41)

      (圖43)

      (圖45)

      步驟二:用REPORT確認備份

      List命令顯示得到什么內容,而Report則顯示需要什么。有四個Report的選項,其中兩個(Need backup和Unrecoverable)可以方便地用于確認當前的備份是否可以進行恢復。

      • Need backup 說明要達到完整備份,數據文件還需要適合某些條件(日期、增量級別或冗余數)的新備份。恢復將需要歸檔重做日志和增量備份。根據這個報告可以確認數據庫中的數據文件是否還需要更多的增量備份或其他重做的時間,同時也可以報告哪些數據文件沒有足夠的冗余備份;
      • Unrecoverable 說明需要備份的數據文件中的數據塊發生了不可恢復的操作(即Nologing操作);
      • Obsolete 說明不再需要的備份可以刪除。對于該報告可以指定額外的備份數(冗余備份)。例如,如果覺得兩個冗余備份比大多數情況下的一個冗余備份更合適,則可以報告所有比這兩個冗余備份還要早的備份;
      • Schema 顯示目標數據庫的數據庫物理模式,使用目錄時,可以在制定的條件(時間、日志序列和SCN)下觀察物理模式。

      因為report具有分析功能,所以用于特殊report的參數屬于REPORT生成類型。在本練習中,將查看每個report并討論他們如何在備份策略中發現漏洞。

      • Need Backup報告 Need Backup選項顯示了一個日期范圍內還沒有備份的數據庫的內容。
        1 RMAN>report need backup days 2 database;
      • Unrecoverable報告 對目標數據庫進行Unrecoverable報告將會驗證操作更改的數據塊是否可以應用重做記錄。如果需要另一個增量備份以防止一個NOLOGING操作應用重做時出現問題,RMAN將會給出報告:
        1 RMAN>report need backup incremental 3 database;
      • Schema報告 Schema報告對于長時間恢復或不可恢復數據塊并不給出警告,可以比較目標數據庫和當前數據文件或查看模式是否一致。 
        1 RMAN>report unrecoverable;
        2 RMAN>report schema;
        3 RMAN>report schema at time 'SYSDATE - 7';
        4 RMAN>report schema at time "TO_DATE('01/8/2010', 'MM/DD/YYYY')"
        5 RMAN>report schema at scn 1000;
        6 RMAN>report schema at logseq 131;

      (圖47)

      步驟三:用SQL*PLUS確認備份
      對目錄用戶增加SQL命令產生的結果類似于LIST命令的結果,使用SQL來查詢目錄,查看備份集、備份片以及組成但前備份的數據文件的目錄內容,也可以使用備份集標識或備份集鍵值來查找所需要的信息,查詢可以可以需要對目標控制文件或目錄用戶表。查詢這些視圖的最大優點是:可以控制輸出的表現形式,列表有固定的輸出格式,而SQL可以有多種格式化的方法。下表顯示了包含備份與映像拷貝信息的關鍵視圖。
      RMAN備份與拷貝的重要數據字典與目錄視圖

      目標數據庫視圖

      目錄視圖

      描述

      V$BACKUP_SET

      RC_BACKUP_SET

      RMAN備份集信息

      V$BACKUP_PIECE

      RC_BACKUP_PIECE

      RMAN備份片文件信息

      V$BACKUP_DATAFILE

      RC_BACKUP_DATAFILE

      RMAN備份文件信息

      V$DATAFILE_COPY

      RC_DATAFILE_COPY

      RMAN映像拷貝文件

      V$BACKUP_CONTROLFILE

      RC_BACKUP_CONTROLFILE

      RMAN備份控制文件信息

      V$CONTROLEFILE_COPY

      RC_CONTROLEFILE_COPY

      RMAN控制文件的映像拷貝

      V$BACKUP_REDOLOG

      RC_BACKUP_REDOLOG

      RMAN備份歸檔日志信息

       控制文件視圖中的列和目標路視圖中的非常相似,但也有一些差別:

      • 目錄視圖有一個列的內容是標記數據庫和數據庫的形態,而目標數據字典視圖沒有,控制文件只包含當前形態的編碼;
      • 目錄視圖含有一個備份鍵值,作為備份與拷貝的內部RMAN目錄索引號,控制文件視圖中則沒有這個鍵值;

      目標控制文件與目錄可能含有對方沒有的記錄行。如果超過時限,則目標控制文件中的備份記錄將不再出現在V$視圖中。如果從目錄中刪除備份,則這些備份不會出現在目錄視圖中,但仍然保留在目標控制文件中。

      1) 備份集與備份片 可以在目標數據庫和目錄數據庫中看到RMAN進行的備份集,可以查詢這些視圖,顯示備份集和備份片的信息:

      1 SQL>connect system/system@practice
      2 SQL>SELECT recid, set_count,
      3            decode(backup_type, 'D''FULL',
      4                                'I''INCREMENTAL',
      5                                'L''LOGS') TYPE,
      6            incremental_level ILevel, completion_time Completed
      7     FROM v$backup_set;

      (圖49)

      1 SQL>SELECT recid, set_count,
      2            decode(backup_type, 'D''FULL',
      3                                'I''INCREMENTAL',
      4                                'L''LOGS') TYPE,
      5            incremental_level ILevel, completion_time Completed
      6      FROM rc_backup_set
      7     WHERE db_key=(SELECT max(db_key) FROM rc_database 
      8                    WHERE name = 'PRACTICE');

      (圖51)

      為了目錄用戶與目標控制文件比較備份片,可以分別對V$BACKUP_PIECE和RC_BACKUP_PIECE視圖執行類似的查詢。這些視圖包含了重要的列,如handle和tag;
      2) 數據文件 除RMAN LIST命令之外,還可以對目錄中的視圖進行查詢以獲得數據文件拷貝和備份的詳細信息。運行下面的查詢就可以與以上RMAN LIST COPY和LIST BACKUP 命令類似的信息:

      1 SQL>connect system/system@practice
      2 SQL>set linesize 1000
      3 SQL>SELECT file#, completion_time time, 
      4            checkpoint_change# change#, name
      5       FROM v$datafile_copy;
      6 SQL>SELECT file#, completion_time time,
      7            checkpoint_change# change#, set_count
      8       FROM v$backup_datafile;

      (圖53)

      1 SQL>connect rman1010/rman@rcat
      2 SQL>SELECT file#, completion_time time,checkpoint_change# change#, name,
      3            bdf_key key, decode(Status, 'A''AVAIL''U''UNAVAIL''D''DELETED') Status
      4       FROM rc_datafile_copy
      5      WHERE db_name = 'PRACTICE';
      6 SQL>SELECT file#, completion_time time,checkpoint_change# change#, set_count,
      7            bdf_key key11, decode(Status, 'A''AVAIL''U''UNAVAIL''D''DELETED') Status
      8       FROM rc_backup_datafile
      9      WHERE db_name = 'PRACTICE';

      (圖55)

      3) 備份控制文件 在V$CONTROLFILE_COPY、V$BACKUP_CONTROLFILE、RC_CONTROLFILE_COPY和RC_BACKUP_CONTROLFILE視圖中可以找到控制文件映像拷貝和備份。這些目錄視圖提供了比LIST命令更多的關于控制文件備份的信息,在SQL*Plus中使用SQL語句,可以查看其他的列并可以格式化輸出的結果;
      4) 備份歸檔日志 除了LIST BACKUP ARCHIVELOG命令外,還可以向目錄用戶查詢以顯示指定備份的信息,以目錄擁有者的身份啟動一個SQL*Plus會話并運行類似上一個任務中的查詢語句; 

      1 SQL>connect system/system@practice
      2 SQL>SELECT sequence#, count(*)
      3       FROM v$backup_redolog
      4      GROUP BY sequence#;

      (圖57)

      1 SQL>connect rman1010/rman@rcat
      2 SQL>SELECT sequence#, count(*)
      3       FROM rc_backup_redolog
      4      WHERE db_name = 'PRACTICE'
      5        AND status = 'A'
      6      GROUP BY sequence#; 

      (圖59)

      非常注意:這里的查詢比較簡單,一旦熟悉這些視圖,就可以按照自己的RMAN部署來定制這些查詢。同時,如果在目錄中有多個數據庫和數據庫的形態注冊,則應該使用db_key和dbinc_key兩個列作為條件,確保查詢的語句中的where部分包括了正確的數據庫和形態。

      步驟四:交叉檢查備份
      了解備份信息的關鍵是確定當前的備份情況是否已經處于有序狀態,如果在操作系統下刪除備份片,那么控制文件和目錄將不知道該創造做,因此經常進行交叉檢查以確認目錄包含了有關備份片的正確信息。
      下面的命令將檢查目標控制文件和目錄已知的所有備份:

      1 RMAN>allocate channel for maintenance type disk;
      2 RMAN>crosscheck backup;
      3 RMAN>release channel;

      輸出的結果如下:

      (圖61)

      單詞“available”意思是該備份片已被找到,可以用tag選項限制對帶有tag或特殊的tag名稱的備份交叉檢查。

      1 RMAN>crosscheck backup of datafile 1;
      2 RMAN>crosscheck backup completed between 'SYSDATE-7' an '30-Jan-2002';
      3 RMAN>crosscheck backup completed between '01-Jan-2002' and '30-Jan-2002';
      4 RMAN>crosscheck backup tag WHOLE_INC0;
      5 RMAN>crosscheck backup of archivelog like '%/100.%';
      6 RMAN>crosscheck backup of archivelog from logseq 100 until logseq 110;
      7 RMAN>crosscheck backup of archivelog from 'SYSDATE-7' and 'SYSDATE';

      (圖63)

      為了交叉檢查(crosscheck)特定的備份集或者映像拷貝,可以在change命令中使用crosscheck選項,而不僅僅使用crosscheck命令:

      1 RMAN>change backupset 311 crosscheck;
      2 RMAN>change datafilecopy 545 crosscheck;

      步驟五:驗證備份
      RMAN正因為在restore命令中提供了validate選項才具有了模擬還原的能力,這種驗證的方法是RMAN可以選擇用于還原的備份集或拷貝。RMAN也可以使用VALIDATE BACKUPSET的命令來驗證制定備份集的還原性。這兩種還原驗證方式都可以對整個數據庫、表空間、數據文件、控制文件或歸檔日志文件應用。
      警告:RMAN的驗證并不測試還原(應用增量備份和重做),因此,驗證并不是一個綜合的測試。可以驗證還原,然后只驗證增量備份的還原。
      1)還原驗證 首先驗證整個數據庫的還原并讓RMAN選擇使用的備份集和拷貝。這樣驗證方法在一個運行快中使用了還原(restore)命令,驗證備份集和拷貝的還原。
      下面的實例驗證了磁帶上的備份控制文件、所有表空間和歸檔重做日志的還原操作:

      1 RUN>run{
      2 allocate channel d1 type disk;
      3 restore database validate;
      4 restore archivelog all validate;
      5 }

      (圖65)

      如果輸出Fisnished restore說明驗證完成了,則說明驗證成功,否則將顯示錯誤的消息。
      2)驗證備份集 第二種驗證方法需要制定備份集的細節,對PRACTICE數據庫進行兩個增量備份。例如,備份集130是級別為0的增量備份,而備份集131級別為1,這兩個增量備份都包含一個控制文件的拷貝:

      1 RUN>run{
      2 allocate channel d1 type disk;
      3 validate backupset 81;
      4 }

      (圖67)

      驗證期間,將讀取備份片并模擬還原操作,如果出現:Validation complete,則是說明還原可以工作,否則將顯示錯誤信息。
      為了模擬失敗的驗證,將備份片重新命名為一個新的文件名,并驗證備份集。這時將得到一個錯誤;然后使用任何文本文件命名為備份片的原始文件名;再次驗證備份集,又將得到其他的錯誤。刪除剛才拷貝用于模擬損壞的備份片的文本文件,并將原始的備份片恢復到初始名稱,最終驗證將產生一個成功的消息。

       

      練習26:恢復目錄的清理

      在本練習中將介紹三種方法刪除陳舊備份。為了刪除陳舊的備份,RMAN提供了帶有delete選項的change命令,使用report、交叉檢查(crosscheck)和SQL確定當前恢復不需要的孤立備份,確定后刪除這些孤立的備份。
      步驟一:查找孤立的備份
      在完全恢復期間,RMAN將使用最近的備份或映像拷貝來還原數據庫文件,當需要進行時間點恢復時,RMAN還原離時間點最近的備份。存在最近的備份進行恢復而不再使用的備份就是孤立備份。如果選擇恢復時間比最近的時間早,則可能會需要這些獨立備份,所以擁有少量的額外備份也是有道理,但是積累了太多備份,則應該刪除這部分備份。
      RMAN 有一個報告可以顯示超過冗余范圍的孤立備份集,公司或許更適合三個星期的備份保持范圍,在這種情況下就沒有人會讓DBA將數據庫恢復到三個星期以前的狀態。
      查找已經孤立的以及21天(三個星期)前生成的備份:

      1 RMAN>report obsolete redundancy = 1 
      2      until time 'SYSDATE-21' device type disk;

      (圖69)

      (由于不存在21天前的備份,這里獲取三天前時間點,以下均同)
      該報告返回的任何備份或拷貝都可以刪除,因為默認的冗余值為“1”,所以可以忽略冗余部分

      1 RMAN>report obsolete until time 'SYSDATE-21';

      (圖71)

      這個命令將只保留21天以來進行的一個備份拷貝,一旦發生了21天前的備份是增量級別為1的備份情況,為了使用這些備份,將需要22天前進行的增量級別為0的備份,而這個備份有可能已經刪除了。
      使用list命令顯示21天前的備份列表:

      1 RMAN>list backupset completed before 'SYSDATE-21';

      (圖73)

      警告:如果在某個時刻進行完全或增量級別為0的備份,并創建了所有的增量備份或者歸檔日志文件則只能恢復到這個時刻。因此,如果不確定是否還要恢復到過去某個時間點,則應保留一個舊版本和所有的歸檔日志。實際中可以根據業務的需要決定備份的周期,如磁帶循環使用的周期是三個月,則只能將備份恢復到三個月以前。
      步驟二:刪除孤立的備份
      一旦確定了要刪除的備份集,如何使用RMAN來刪除這些備份?可以通過分配刪除通道并使用change命令來刪除備份集或映像拷貝。例如,如果REPORT命令確認要刪除一個備份集,則可以使用以下的命令從操作系統中刪除這些備份片,并將其在目錄中的狀態修改為已刪除:

      1 RMAN>#report obsolete backup on disk;
      2 RMAN>report obsolete redundancy 2 device type disk;
      3 RMAN>#Allocate a channel of type delete;
      4 RMAN>allocate channel for delete type disk;
      5 RMAN>#Delete the backup set(s)
      6 RMAN>change backupset 81 delete;
      7 RMAN>#Release the allocated delete channel.
      8 RMAN>release channel;

      (圖75)

      (圖77)

      這個操作的缺點必須運行report并根據report的輸出結果生成刪除命令,下個步驟將介紹刪除陳舊備份的另一種方法。
      為了查找并刪除孤立的備份,運行幾個增量級別為0的備份:

      1 RMAN>run {execute script b_whole_inc0;}
      2 RMAN>run {execute script b_whole_inc0;}
      3 RMAN>run {execute script b_whole_inc0;}
      4 RMAN>run {execute script b_whole_inc0;}
      5 RMAN>report obsolete redundancy 4 device type disk;

      (圖79)

      這個obsolete報告將顯示孤立的備份,刪除顯示的孤立備份,這些備份文件將從磁盤和目錄中刪除。

      (圖81)

      步驟三:刪除陳舊的備份
      可以手工刪除查找備份集編號并逐個刪除,然而為了自動化刪除陳舊的備份集,可以從恢復目錄視圖中查詢備份集并將change命令spool到一個文件中。在RMAN下運行該文件將會刪除陳舊的備份,下面SQL*Plus代碼段將生成RMAN腳本。

      1 set feedback off pagesize 0 heading off verify off
      2 set linesize 100 trimspool on
      3 define fil = 'D:\oracle\CODE\tmp\delete_copies.rcv'
      4 spool &fil
      5 prompt allocate channel for delete type disk;;
      6 SELECT 'change backupset '|| bs_key ||' delete;' FROM rc_backup_set WHERE completion_time < SYSDATE-2;
      7 prompt release channel;;
      8 spool off;

      (圖83)

      當連接到目標數據庫時,在RMAN提示符下調用delete_copies.rcv將使目錄刪除21天以前生成的備份集。

      (圖85)
      (由于不存在21天前的備份,這里獲取兩天前時間點)

      步驟四:查找過期的備份
      大多數介質管理器都有文件保存期限。例如,如果一個文件超過三個月而介質管理器的保存期也設置為三個月,則該文件將標注為過期。介質管理器將不再對他進行訪問,而且這些文件將被其他新的備份刪除,將保存期與RMAN的crosscheck選項結合使用可以刪除陳舊的備份。
      一旦這些文件被刪除,可以對備份集執行交叉檢查:

      1 RMAN>allocate channel for maintenance type disk;
      2 RMAN>crosscheck backupset;
      3 RMAN>release channel;

      (圖87)

      所有被操作系統刪除的文件將被交叉檢查crosscheck命令標記為過期。
      警告:應該仔細操作,確保沒有從磁盤上刪除近期可能需要的備份,為了安全起見最好在其他地方保存幾份以前的備份,或者在執行交叉檢查(crosscheck)命令之前將備份轉移到其他路徑下,接著對目錄進行查詢并完全確信不再需要這些備份了,然后再刪除。
      步驟五:刪除過期的備份
      這個步驟中將刪除前一步驟中已經標注為“過期”的孤立備份集和映像拷貝,為了刪除物理的備份以及將資料庫中的記錄刪除為DELETED,可以使用一下命令:

      1 RMAN>delete expired backup;

      但刪除備份片后,運行report和list命令,確保可以將數據庫恢復到三個星期以前的狀:

      1 RMAN>#Make sure we can recover to 21 days previous;
      2 RMAN>list backup recoverable until time 'SYSDATE-21';

       (圖89)

       

      posted @ 2010-12-10 09:30  shishanyuan  閱讀(1386)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲综合久久国产一区二区| 看全色黄大黄大色免费久久| 无码欧亚熟妇人妻AV在线外遇 | 欧美日韩人成综合在线播放| 亚洲精品美女一区二区| 中文字幕无码av波多野吉衣| 伊人春色激情综合激情网| 精品av综合导航| 国产精品女生自拍第一区| 精品无码国产污污污免费| 亚洲国产精品综合久久2007| 亚洲日韩国产精品第一页一区| 国产成人乱色伦区| 男人和女人高潮做爰视频| 无码内射中文字幕岛国片| 欧美人成精品网站播放| 亚洲Av综合日韩精品久久久| 国内精品大秀视频日韩精品| 亚洲a∨无码无在线观看| 日日爽日日操| 国产精品福利一区二区久久| 国产成人精品三级在线影院| 亚洲色丰满少妇高潮18p| 久热久热中文字幕综合激情| 日韩中文字幕高清有码| 深夜免费av在线观看| 成人精品色一区二区三区| 亚洲 制服 丝袜 无码| 亚洲美免无码中文字幕在线| 亚洲少妇人妻无码视频| 在线a级毛片免费视频| 国产精品任我爽爆在线播放6080| 国产美女直播亚洲一区色| 人人入人人爱| 在线高清免费不卡全码| 日本中文字幕有码在线视频| 亚洲精品美女一区二区| 国产成人精品手机在线观看| 成人国产一区二区三区精品| 亚洲丰满熟女一区二区v| 蜜臀午夜一区二区在线播放|