RMAN備份相關的動態效能檢視

RAYSUNNNY發表於2014-01-04
1.  RMAN備份相關的動態效能檢視


雖然使用LIST、REPORT等RMAN命令時也能顯示備份資訊,不過使用那些命令後看到的都是結果,而通過Oracle資料庫中的一些動態效能檢視,不僅僅能夠看到備份資訊,甚至還能在備份過程中監控備份進度,檢視當前進行的操作等。

提 示

什麼是動態效能檢視?

可以將其理解成由Oracle提供的存在於記憶體中的虛擬檢視。這批檢視由Oracle的後臺程式自行維護,訪問的時候與普通表或檢視一樣,但使用者只能讀取而無法插入、修改或刪除這些檢視中的內容。這一系列檢視在資料庫調優方面具有重要的、不可替代的作用,而且功能完善、數量龐大。關於動態效能檢視的全面介紹超出本書內容,感興趣的朋友請參考相關書籍或閱讀官方文件,本小節中僅介紹部分與RMAN備份恢復相關的常用動態效能檢視。

1.1  V$ARCHIVED_LOG檢視

本檢視包含了歸檔重做日誌檔案的資訊,如歸檔檔案的名稱、歸檔路徑等。該檢視中資料來自於控制檔案,一般是當一個Online Redologs完成歸檔後,就會在控制檔案中插入一條記錄,如果歸檔目錄有多個的話,則同時插入對應數量的記錄(當然路徑肯定不同),另外當通過RMAN恢復歸檔檔案或複製歸檔檔案時,也會插入對應的記錄。

通過DESC命令檢視可以看到該檢視包括的列有很多:

點選(此處)摺疊或開啟

  1. SQL> DESC V$ARCHIVED_LOG
  2.  Name Null? Type
  3.  -----------------------------------------------------------
  4.  RECID NUMBER
  5.  STAMP NUMBER
  6.  NAME VARCHAR2(513)
  7.  DEST_ID NUMBER
  8.  THREAD# NUMBER
  9.  SEQUENCE# NUMBER
  10.  RESETLOGS_CHANGE# NUMBER
  11.  RESETLOGS_TIME DATE
  12.  RESETLOGS_ID NUMBER
  13.  FIRST_CHANGE# NUMBER
  14.  FIRST_TIME DATE
  15.  NEXT_CHANGE# NUMBER
  16.  NEXT_TIME DATE
  17.  BLOCKS NUMBER
  18.  BLOCK_SIZE NUMBER
  19.  CREATOR VARCHAR2(7)
  20.  REGISTRAR VARCHAR2(7)
  21.  STANDBY_DEST VARCHAR2(3)
  22.  ARCHIVED VARCHAR2(3)
  23.  APPLIED VARCHAR2(3)
  24.  DELETED VARCHAR2(3)
  25.  STATUS VARCHAR2(1)
  26.  COMPLETION_TIME DATE
  27.  DICTIONARY_BEGIN VARCHAR2(3)
  28.  DICTIONARY_END VARCHAR2(3)
  29.  END_OF_REDO VARCHAR2(3)
  30.  BACKUP_COUNT NUMBER
  31.  ARCHIVAL_THREAD# NUMBER
  32.  ACTIVATION# NUMBER
  33.  IS_RECOVERY_DEST_FILE VARCHAR2(3)
  34.  COMPRESSED VARCHAR2(3)
  35.  FAL VARCHAR2(3)
  36.  END_OF_REDO_TYPE VARCHAR2(10)


一般情況下並不是每一列都需要關注,通常你需要看下列欄位的值:

NAME:記錄歸檔檔案路徑和名稱。

THREAD#:歸檔執行緒號,RAC環境下適用。

SEQUENCE#:歸檔檔案序號。

FIRST_TIME:等同於建立時間。

CREATOR:該條記錄的建立者(告訴你究竟是哪個程式乾的)。

APPLIED:是否被應用,Data Guard環境下適用。

STATUS:該條記錄的狀態。

其中,CREATOR列標識該條記錄的建立者,有下列幾個值:

ARCH:表示由歸檔程式建立。

FGRD:表示由前臺程式建立。

RMAN:表示由RMAN建立。

SRMN:表示由Standby端的RMAN建立。

LGWR:表示由Logwriter程式建立。

STATUS列標識該條記錄的狀態,有下列幾個值:

A:指正常歸檔狀態。

D:指該記錄指向的歸檔檔案已被刪除。

U:指該記錄指向的歸檔已不存用。

X:指該條記錄失效,通常是當你在RMAN中執行了CROSSCHECK ARCHIVELOG後有可能出現。

其他欄位理解起來比較簡單,按照字面意義理解即可。

1.2  V$BACKUP_SET檢視

V$BACKUP_SET檢視中顯示當前建立的備份集資訊,該檢視比較簡單,通過DESC命令檢視結構:

點選(此處)摺疊或開啟

  1. SQL> DESC V$BACKUP_SET;
  2.  Name Null? Type
  3.  ------------------------------------------------
  4.  RECID NUMBER
  5.  STAMP NUMBER
  6.  SET_STAMP NUMBER
  7.  SET_COUNT NUMBER
  8.  BACKUP_TYPE VARCHAR2(1)
  9.  CONTROLFILE_INCLUDED VARCHAR2(3)
  10.  INCREMENTAL_LEVEL NUMBER
  11.  PIECES NUMBER
  12.  START_TIME DATE
  13.  COMPLETION_TIME DATE
  14.  ELAPSED_SECONDS NUMBER
  15.  BLOCK_SIZE NUMBER
  16.  INPUT_FILE_SCAN_ONLY VARCHAR2(3)
  17.  KEEP VARCHAR2(3)
  18.  KEEP_UNTIL DATE
  19.  KEEP_OPTIONS VARCHAR2(10)


該檢視檢視的資訊與RMAN中命令LIST BACKUP類似,只不過表示形式不同。其中BACKUP_TYPE列標記該備份集中包含的檔案型別,有下列幾個值:

L:表示包含歸檔重做日誌檔案;

D:表示資料檔案完全備份;

I:表示增量備份。

還有一個常用的關聯檢視V$BACKUP_SET_DETAILS,該檢視除了包含V$BACKUP_SET中的資料外,還額外記錄了備份集的詳細資訊,比如備份集大小、備份集所在裝置等。額外的列也都比較簡單,用字面意義理解列定義即可。另外還有一個顯示所有備份集統計資訊的檢視V$BACKUP_SET_SUMMARY,該檢視中只有一條記錄(統計自所有備份集的資料),不過並不常用,這裡就不介紹了。

1.3  V$BACKUP_PIECE檢視

V$BACKUP_PIECE中顯示備份片段的資訊,通過SET_STAMP列可以與V$BACKUP_SET.SET_STAMP檢視關聯,從而獲得備份集的資訊。

使用DESC命令檢視該檢視,會發現列還是有點兒多的:

點選(此處)摺疊或開啟

  1. SQL> DESC V$BACKUP_PIECE;
  2.  Name Null? Type
  3.  -------------------------------------------------
  4.  RECID NUMBER
  5.  STAMP NUMBER
  6.  SET_STAMP NUMBER
  7.  SET_COUNT NUMBER
  8.  PIECE# NUMBER
  9.  COPY# NUMBER
  10.  DEVICE_TYPE VARCHAR2(17)
  11.  HANDLE VARCHAR2(513)
  12.  COMMENTS VARCHAR2(64)
  13.  MEDIA VARCHAR2(65)
  14.  MEDIA_POOL NUMBER
  15.  CONCUR VARCHAR2(3)
  16.  TAG VARCHAR2(32)
  17.  STATUS VARCHAR2(1)
  18.  START_TIME DATE
  19.  COMPLETION_TIME DATE
  20.  ELAPSED_SECONDS NUMBER
  21.  DELETED VARCHAR2(3)
  22.  BYTES NUMBER
  23.  IS_RECOVERY_DEST_FILE VARCHAR2(3)
  24.  RMAN_STATUS_RECID NUMBER
  25.  RMAN_STATUS_STAMP NUMBER
  26.  COMPRESSED VARCHAR2(3)


不過通常情況下需要我們關注的並不多,如下所示:

SET_STAMP:用來關聯V$BACKUP_SET列。

PIECE#:該備份片段在對應備份集中的序號,預設是從1開始。

DEVICE_TYPE:備份片段對應檔案儲存的裝置型別。

HANDLE:備份片段對應的檔案。

STATUS:備份片段狀態,有三個狀態值:A(可用);D(已刪除);或X(檔案存在)。

BYTES:該備份片段大小。

與V$BACKUP_SET一樣,V$BACKUP_PIECE也有一個對應的記錄詳細資訊的檢視V$BACKUP_PIECE_DETAILS,該檢視中除了包含V$BACKUP_PIECE中的列外,還提供了一些額外的資訊。

1.4  V$BACKUP_CORRUPTION檢視

這個檢視中記錄了備份集中發現的損壞的資料塊,通常是當你在RMAN中執行了BACKUP VALIDATE命令對備份集進行檢查後,如果發現有操作的資料塊,就會向該檢視中插入記錄。注意不包括控制檔案或歸檔檔案,因為這兩類檔案都是獨立個體,一旦損壞就表示徹底完蛋,不可修復,不像資料塊,就算某個資料塊壞了也沒關係,還可以用其他備份集中匹配的資料進行修復。

通過DESC檢視:

  1. SQL> DESC V$BACKUP_CORRUPTION;
  2.  Name Null? Type
  3.  ----------------------------------------------
  4.  RECID NUMBER
  5.  STAMP NUMBER
  6.  SET_STAMP NUMBER
  7.  SET_COUNT NUMBER
  8.  PIECE# NUMBER
  9.  FILE# NUMBER
  10.  BLOCK# NUMBER
  11.  BLOCKS NUMBER
  12.  CORRUPTION_CHANGE# NUMBER
  13.  MARKED_CORRUPT VARCHAR2(3)
  14.  CORRUPTION_TYPE VARCHAR2(9)


該檢視的列定義都比較簡單,字面意義理解即可,就不過多描述了。

1.5  V$SESSION檢視和V$PROCESS檢視

不僅僅侷限於RMAN,在整個資料庫執行過程中V$SESSION和V$PROCESS都是非常重要並且常用的檢視。

1.V$SESSION檢視對應"會話"資訊

每一個連線到Oracle資料庫的會話都能在該檢視中對應一條記錄,根據該檢視中的資訊可以查詢該會話使用的使用者,正在執行或者剛剛執行的SQL語句,連線者的資訊等。

V$SESSION檢視中的列很多,常用到的會有如下幾列:

SID:會話的標識,具有唯一性,通常要對某個會話進行分析前,首先就需要獲得該會話的SID。

SERIAL#:會話的序號。

PADDR:會話所屬程式的地址,關聯V$PROCESS檢視即可查到該會話的所屬程式,然後再通過V$PROCESS檢視得到對應的作業系統程式號(Windows對應的是執行緒號)。

USERNAME:建立該會話的使用者名稱。

CLIENT_INFO:還記得SET COMMAND ID命令嗎?該命令設定的值就會在V$SESSION.CLIENT_INFO中體現。

OSUSER:客戶端作業系統的使用者名稱。

MACHINE:客戶端的機器名。

TERMINAL:客戶端執行的終端名。

PROGRAM:客戶端執行的程式名。

SQL_ADDRESS:執行SQL的地址。

SQL_HASH_VALUE:執行SQL的HASH值,與SQL_ADDRESS關聯查詢其他SQL相關檢視後即可查詢會話當前正在執行的SQL語句。

EVENT:當前會話的等待事件。

例如:已知設定的client_info值,查詢會話的相關資訊:

  1. SELECT SID, OSUSER, USERNAME, MACHINE, PROCESS  
  2.   FROM V$SESSION WHERE client_info like '%id=rman%'

2.V$PROCESS檢視對應"連線"資訊

V$PROCESS檢視中的一條記錄對應作業系統中的一個程式(Windows中為執行緒),該檢視中的SPID即作業系統中的程式號,通過該檢視就可以將Oracle中的會話、連線與作業系統中的程式關聯起來。

例如:通過下列SQL語句,通過關聯查詢V$PROCESS和V$SESSION獲得執行RMAN操作的程式的SID與SPID資訊:

  1. SELECT S.SID, S.SERIAL#, P.SPID, S.CLIENT_INFO  
  2.   FROM V$PROCESS P, V$SESSION S  
  3.  WHERE P.ADDR = S.PADDR  
  4.    AND CLIENT_INFO LIKE '%id=rman%' 

1.6  V$SESSION_LONGOPS檢視

V$SESSION_LONGOPS檢視本意是記錄Oracle資料庫中執行時間超過6秒的操作,由於RMAN備份操作涉及大量I/O讀寫,多數情況下肯定會超過6秒,因此通過該檢視查詢RMAN操作正合適。

該檢視中的列並不是很多,需要我們關注的主要有下列幾個:

SID:會話的標識,具有唯一性,通常要對某個會話進行分析前,首先就需要獲得該會話的SID。

SERIAL#:會話的序號。

OPNAME:操作描述資訊,如RMAN: full datafile backup或RMAN: full datafile restore。

SOFAR:已完成的工作量。

TOTALWORK:要完成的工作總量。

MESSAGE:當前操作的統計資訊。

SQL_ADDRESS:執行SQL的地址。

SQL_HASH_VALUE:執行SQL的HASH值,與SQL_ADDRESS關聯查詢其他SQL相關檢視後即可查詢會話當前正在執行的SQL語句。

可以通過如下SQL語句獲得正在進行的映象複製操作的狀態資訊:

點選(此處)摺疊或開啟

  1. SELECT SID,
  2.        SERIAL#,
  3.        CONTEXT,
  4.        SOFAR,
  5.        TOTALWORK,
  6.        ROUND(SOFAR / TOTALWORK * 100, 2) \"%_COMPLETE\"
  7.   FROM V$SESSION_LONGOPS
  8.  WHERE OPNAME LIKE \'RMAN:%\'
  9.    AND OPNAME NOT LIKE \'%aggregate%\'
  10.    AND TOTALWORK != 0
  11.    AND SOFAR <> TOTALWORK;

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

相關文章