RMAN說,我能備份(8)--RMAN常用命令續

junsansi發表於2010-01-28

塗抹ORACLE試閱章節:第8章-Rman說,我能備份

8.4.4 報表顯示——REPORT命令

  REPORT 命令主要是用於當前備份資訊的分析,如哪些備份已經過期,哪些檔案該備份,哪些備份不可用,哪些備份可以刪除之類的。

  REPORT 命令特別提供了一個SCHEMA關鍵字,可以用來檢視資料庫的模式資訊(注意此模式非使用者的模式喲),比如某個時間段的資料庫結構,不過,使用這些功能的前提就是必須首先擁有足夠的備份,不然使用REPORT命令得出的結果恐怕也滿足不了你的需求啊。

  • 檢視7天前資料庫的模式:
    RMAN> REPORT SCHEMA AT TIME  ' SYSDATE-7 ' ;

  注意,檢視模式資訊必須連線到catalog資料庫。

  • 檢視所有需要備份的檔案:
    RMAN> REPORT NEED BACKUP; 
  • 檢視指定表空間是否需要備份:
    RMAN> REPORT NEED BACKUP TABLESPACE SYSTEM;
  • 檢視過期備份:
    RMAN> REPORT OBSOLETE;

8.4.5 執行檢查——CROSSCHECK命令

  CROSSCHECK 命令用來檢查備份或歸檔物理檔案的狀態,如果物理檔案存在,並且控制檔案(或恢復目錄)中有匹配記錄,則標記該物件的狀態為 AVAILABLE (有效),如果檔案已經不存在了,則標記該物件狀態為 EXPIRED (無效)。

  CROSSCHECK 命令並不會主動刪除檔案(也確實沒有這個功能),它只是修改控制檔案中對應記錄的狀態標誌,因此如果想刪除那些 EXPIRED 的記錄,還是得手動通過 DELETE EXPIRED 命令進行。

  檢查所有歸檔檔案:

    RMAN> CROSSCHECK ARCHIVELOG ALL;

    提示:

    當作業系統環境變數NLS_LANG指定為中文SIMPLIFIED CHINESE_CHINA時,執行CROSSCHECK命令檢查歸檔,如果結果顯示“對歸檔日誌的驗證失敗”,但你又確定該檔案存在,彆著急,這其實是Oracle 10g版本中的一個bug,驗證歸檔檔案顯示的結果是反著的,如果顯示驗證失敗說明驗證是成功的,反倒是提示驗證成功的話你就要小心了,說明驗證失敗了。 這不是CROSSCHECK命令自身的問題,而是Oracle中英文翻譯的問題,設定NLS_LANG為AMERICAN_AMERICA,在英文環境下檢查顯示一切正常。

  檢查所有備份集:

    RMAN> CROSSCHECK BACKUP;

8.4.6 修改狀態——CHANGE命令

  CHANGE 命令可以用來修改備份檔案或歸檔檔案的狀態,不是指物理檔案,而是這些檔案在控制檔案(或恢復目錄)中對應記錄的狀態,狀態有兩種: AVAILABLE (可用)和 UNAVAILABLE (不可用)。

  例如,修改指定備份集狀態為 UNAVAILABLE :

    RMAN> CHANGE BACKUPSET  n  UNAVAILABLE;

  注意,n 為備份集序號,指定的備份集必須確實存在,不然執行會報錯。

  修改指定表空間的備份集為 UNAVAILABLE :

    RMAN> CHANGE BACKUP OF TABLESPACE USERS UNAVAILABLE;

  修改指定歸檔檔案狀態為 UNAVAILABLE :

    RMAN>  CHANGE ARCHIVELOG LOGSEQ =n  UNAVAILABLE;

  提示,這裡的n為歸檔檔案序號,可以通過 LIST ARCHIVELOG ALL 或查詢 V$ARCHIVED_LOG 獲取。當然你也可以指定歸檔檔案詳細路徑。

  如果將指定物件狀態修改為可用,執行上述命令時將關鍵字 UNAVAILABLE 改為 AVAILABLE 即可,這裡不做演示了。

  另外,與CROSSCHECK命令不同,CHANGE命令附帶了 DELETE 子句,配合使用能夠在修改記錄狀態的同時直接刪除物理檔案,功能那是相當彪悍,例如,刪除某個歸檔檔案:

    RMAN>  CHANGE ARCHIVELOG LOGSEQ =n  DELETE ;

  又見到n,這個n是指啥俺先不說,讓你猜,猜對了俺就告訴你。

8.4.7 綜述

  前面介紹了很多命令(即使介紹的幾個也沒有完全展開,只介紹了該命令的一些常用功能),其實RMAN中的命令遠不止這幾個(最最重要的BACKUP命令和RESTORE命令都沒介紹哪,沒錯,俺是成心的),可呼叫引數也遠不止這些。你是不是已經覺著命令太多,而且每個命令又有太多呼叫引數,完全記不住?老實說,俺也記不全,不過俺有超級必殺技,命令再多也不怕。悄悄告訴你,俺的祕技就是完全不用記,別倒別倒,俺不準備教你學太極,俺剛才的話還沒說完。俺的意思是說,記不住不要緊,只要注意看RMAN的提示資訊就好了。

  比如想檢視已經備份的歸檔,只記得要用LIST命令檢視,後面應該加什麼引數全忘了,沒關係,那就先執行LIST命令好了:

    RMAN> LIST;

    RMAN-01009: syntax error: found ";": expecting one of: " all, archivelog, backup, backuppiece, backupset, backed, completed, copy, controlfilecopy, datafilecopy, device, expired, global, incarnation, like, proxy, recoverable, script, tag "

  你看,返回了一堆的資訊,提示你語法錯誤,只能支援上述加粗顯示的那些關鍵字。

  根據提示資訊,隱約記得應該是BACKUP關鍵字,那就敲上BACKUP試試看:

    RMAN> LIST BACKUP OF;

    RMAN-01009: syntax error: found ";": expecting one of: " archivelog, controlfile, database, datafile, spfile, tablespace "

  哈哈,又報錯了啊, en ,提示越來越清楚了,加引數 ARCHIVELOG 再試試:

    RMAN> LIST BACKUP OF ARCHIVELOG ;

    RMAN-01009: syntax error: found ";": expecting one of: " all, from, high, like, logseq, low, scn, sequence, time, until "

  OK ,基本明瞭,我們的目的是要檢視所有備份的歸檔,最後再加引數ALL就好了:

    RMAN> LIST BACKUP OF ARCHIVELOG ALL;

    ...

  結果顯示出來了吧,目標實現,竣工!

  如果你連RMAN中有哪些命令都忘記了,沒關係,隨便輸入個字母再按Enter鍵試試:

    RMAN-01009: syntax error: found "identifier": expecting one of: "allocate, alter, backup, beginline, blockrecover, catalog, change, connect, copy, convert, create, crosscheck, configure, duplicate, debug, delete, drop, exit, endinline, flashback, host, {, library, list, mount, open, print, quit, recover, register, release, replace, report, renormalize, reset, restore, resync, rman, run, rpctest, set, setlimit, sql, switch, spool, startup, shutdown, send, show, test, transport, upgrade, unregister, validate"

  雖然又報出了RMAN-01009錯誤,但是你看,RMAN中支援的命令是不是也都列出來了呢?這個示例告訴我們,出錯也不全是壞事喲。嘿嘿,自己躲牆角偷偷樂去吧,旁人俺都不告訴他的。

  不過如果次次輸入都報錯就顯得太不專業了,因此偷偷用就好,如果你的工作時刻被領導關注著,那俺還是建議你務必要牢記一些常用命令。

=================================================

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-626221/,如需轉載,請註明出處,否則將追究法律責任。

相關文章