Oracle RMAN篇(三)—— RMAN 維護與管理

一、 RMAN常用配置選項

1. 備份優化

優化備份開啓後,會跳過以前備份過的文件,只讀表空間和offline的表空間也會跳過。

CONFIGURE BACKUP OPTIMIZATION OFF; # default

打開備份優化:
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;

關閉備份優化:
RMAN> CONFIGURE BACKUP OPTIMIZATION OFF;

更改回默認值:
RMAN> CONFIGURE BACKUP OPTIMIZATION CLEAR;

 

2. 設置IO設備類型

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

使用磁盤設備:
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;

使用磁帶設備:
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO SBT;

更改回默認值:
RMAN> CONFIGURE DEFAULT DEVICE TYPE CLEAR;

將備份文件存儲到指定路徑,如 e:\backup

configure channel device type disk format 'e:\backupb\%d_db_%u';
#後面的%d_db_%u是存儲格式

 

3. 自動備份控制文件及spfile

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

打開自動備份控制文件:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

關閉自動備份控制文件:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP OFF;

更改回默認值:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP CLEAR;
  • 指定自動備份控制文件的格式和路徑
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

修改備份路徑
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/oracle/%F';

更改回默認值:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;
  • 配置控制文件的快照位置

在備份期間,將產生一個控制文件的快照,用於控制文件的讀一致性。

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/10.2.0/db_1/dbs/snapcf_orcl.f'; # default

 

4. 設置備份文件冗餘度

  • 數據文件
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

設置備份數據文件冗餘度:
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO n;

更改回默認值:
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK CLEAR;
  • 歸檔日誌
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

設置備份歸檔日誌文件冗餘度:
RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO n;

更改回默認值:
RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK CLEAR;

 

5. 設置備份最大大小(超過會失敗)

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

設置備份文件最大大小:
RMAN> CONFIGURE MAXSETSIZE TO 1G | 1000M | 1000000K | unlimited;

更改回默認值:
RMAN> CONFIGURE MAXSETSIZE CLEAR;

 

 6. 排除選項 exclude

指定users表空間不備份到備份集中,對只讀表空間很有用

configure exclude for tablespace 'users'; 
configrue exclude clear;

 

7. 設置備份加密

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

打開備份加密:
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;

關閉備份加密:
RMAN> CONFIGURE ENCRYPTION FOR DATABASE OFF;

更改回默認值:
RMAN> CONFIGURE ENCRYPTION FOR DATABASE CLEAR;

設置加密算法
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

 

8. 其它選項 auxiliary

CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oracle/auxfiles/aux_1.f';
CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oracle/auxfiles/aux_2.f';
CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oracle/auxfiles/aux_3.f';
CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oracle/auxfiles/aux_4.f';
CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 3 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR;

 

FORMAT字符串格式化

使用FORMAT參數時可使用的各種替換變量,未指定則默認使用%U爲備份片段命名,如下所示:

  • %a:Oracle數據庫的activation ID即RESETLOG_ID。
  • %c:備份片段的複製數(從1開始編號,最大不超過256)。
  • %d:Oracle數據庫名稱。
  • %D:當前時間中的日,格式爲DD。
  • %e:歸檔序號。
  • %f:絕對文件編號。
  • %F:基於"DBID+時間"確定的唯一名稱,格式的形式爲c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 爲該數據庫的DBID,YYYYMMDD爲日期,QQ是一個1~256的序列。
  • %h:歸檔日誌線程號。
  • %I:Oracle數據庫的DBID。
  • %M:當前時間中的月,格式爲MM。
  • %N:表空間名稱。
  • %n:數據庫名稱,並且會在右側用x字符進行填充,使其保持長度爲8。比如數據庫名JSSBOOK,則生成的名稱則是JSSBOOKx。
  • %p:備份集中備份片段的編號,從1開始。
  • %s:備份集號。
  • %t:備份集時間戳。
  • %T:當前時間的年月日格式(YYYYMMDD)
  • %Y:當前時間中的年,格式爲YYYY。
  • %u:是一個由備份集編號和建立時間壓縮後組成的8字符名稱。利用%u可以爲每個備份集生成一個唯一的名稱。
  • %U:默認是%u_%p_%c的簡寫形式,利用它可以爲每一個備份片段(即磁盤文件)生成一個唯一名稱,這是最常用的命名方式,執行不同備份操作時,生成的規則也不同,如下所示:
生成備份片段時,%U=%u_%p_%c;
生成數據文件鏡像複製時,%U=data-D-%d_id-%I_TS-%N_FNO-%f_%u;
生成歸檔文件鏡像複製時,%U=arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u;
生成控制文件鏡像複製時,%U=cf-D_%d-id-%I_%u。

 

二、 性能調整

 

1. 並行信道操作

爲備份分配多個信道可以實現備份的並行化,可以通過parallelism參數來指定同時"自動"創建多少個通道。

  • 如果備份到磁帶,並行信道數不應超出磁帶中帶機(驅動數)的數量;
  • 如果備份到磁盤,並行信道數不應超出磁盤子系統(輸出設備跨幾塊磁盤)的數量

使用configure配置

--配置並行度爲2
RMAN> configure device type disk parallelism 2;

--清除並行度參數 ,恢復到默認值
RMAN> configure device type disk clear;

設置備份並自動壓縮:
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;

備份時指定並行度爲4

run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

在run命令塊中指定ALLOCATE CHANNEL會覆蓋parallelism參數配置,執行備份命令時會以你設置的channel爲準,而不管configure中配置了多少個並行通道。

 

2. RMAN多路複用

多路複用允許使用單個RMAN信道在備份期間並行讀取數據文件,並將這些數據文件內容寫入同一個備份集片。因此,一個備份集片可能包含許多不同數據文件的內容。多路複用級別爲min{ filesperset , maxopenfiles}。

  • Filesperset

每個備份集最多可包含的數據文件個數,默認值爲min{ 64,輸入文件數/分配信道數 }。參數值在執行backup命令時確定,也可顯示指定:

Backup database Filesperset 4;
  • Maxopenfiles

確定rman能並行讀取的數據文件個數,默認值爲8。該參數在分配信道時確定。

Configure channel 1 device type disk Maxopenfiles 3 format '/u01/back/%U';

如果設置Filesperset=6Maxopenfiles=3parallelism=1,創建一個備份集,此時每個備份集最多仍可包含6個數據文件,但在只能同時並行備份3個數據文件。

 

3. 控制RMAN操作整體影響

控制備份時間或減少RMAN備份對其他進程的整體IO影響,RMAN提供了backup命令的duration參數。可以使用MINIMIZE LOAD最小化備份數據庫所需的IO負載,也可以使用MINIMIZE TIME儘快運行備份。使用默認的minimize time 參數的另一個特性是,RMAN 將區分備份的數據文件的優先級。最近備份的數據文件具有較低的優先級,而較早備份的數據文件具有較高的優先級。

Backup duration 00:30 minimize time database; #半個小時

Backup duration 10:00 minimize load database; #10個小時

Backup duration 0:50 partial database; #默認是minimize time

partial參數可以指示RMAN如何處理超出backup duration時間限制的備份。

  • 如果不設置,運行時間超過指定的持續時間,RMAN將取消備份。
  • 如果設置,備份因爲超出duration參數設置時間而終止時RMAN不會作爲失敗的備份進行處理。因此,run代碼塊中的剩餘命令將繼續執行。
  • 無論partial 參數的設置是什麼,即使整個備份過程沒有完成,Oracle也會認爲成功完成的備份集是可用的。

 

4. 限制rman備份速度

RMAN默認使用所有可用的IO帶寬來進行磁盤讀寫,但有時可能會對別的業務系統造成影響,需要限制IO速度。

allocate channel或configure channel的RATE選項可以設置RMAN每秒最大讀速率,例如以下語句設置爲 1MB/s:

CONFIGURE CHANNEL DEVICE TYPE sbt RATE 1M;
--或者
configure channel device type disk rate 1M;
--或者
allocate channel c1 device type disk rate 20M;

 

三、 交叉驗證RMAN備份

Crosscheck命令用來校驗控制文件或恢復目錄中的rman信息是否與備份介質上實際的物理備份集片相同。

檢查結果有以下兩種狀態:

  • A(AVAILABLE,可用):RMAN認定該項存在於備份介質上
  • X(EXPIRED,過期):這個備份集片存在於rman目錄(控制文件或恢復目錄),但並不物理存在於備份介質上

1. 校驗各類備份集

校驗類型

命令

校驗所有備份集

RMAN> crosscheck backup;

校驗所有數據文件的備份集

RMAN> crosscheck backup of database; 

校驗特定表空間的備份集

RMAN> crosscheck backup of tablespace users;

校驗特定數據文件的備份集

RMAN> crosscheck backup of datafile 4; 

校驗控制文件的備份集

RMAN> crosscheck backup of controlfile; 

校驗SPFILE的備份集

RMAN> crosscheck backup of archivelog sequence 3; 

校驗所有映像副本

RMAN> crosscheck copy; 

校驗所有數據文件的映像副本

RMAN> crosscheck copy of database; 

校驗特定表空間的映像副本

RMAN> crosscheck copy of tablespace users; 

校驗特定數據文件的映像副本

RMAN> crosscheck copy of datafile 6; 

校驗歸檔日誌的映像副本

RMAN> crosscheck copy of archivelog sequence 4; 

校驗控制文件的映像副本

RMAN> crosscheck copy of controlfile;

 

2. 校驗歸檔日誌備份

還可以基於很多標準校驗歸檔日誌備份,把time換成scn或者sequence也行

校驗標準

命令

校驗所有歸檔

RMAN> crosscheck archivelog all

Like參數

RMAN> crosscheck archivelog like '%22%';

範圍參數-from time

RMAN> crosscheck archivelog from time="to_date('2008-5-20','yyyy-mm-dd')";

範圍參數-until time

RMAN> crosscheck archivelog until time="to_date('2008-5-20','yyyy-mm-dd')";

範圍參數-from time until time

RMAN> crosscheck archivelog from time="to_date('2008-5-20','yyyy-mm-dd')" until time="to_date('2008-5-23','yyyy-mm-dd')";

範圍參數-time between and

RMAN> crosscheck archivelog time between "to_date('2008-5-20','yyyy-mm-dd')" and "to_date('2008-5-23','yyyy-mm-dd')";

如果是手工rm了歸檔日誌,Rman會檢測到日誌缺失,從而無法執行備份。此時需要執行crosscheck並刪除過期日誌,之後Rman可以恢復正常。

rman target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;

 

四、 備份驗證

1. Restore…preview

該命令可幫助確定還原數據庫時需要哪些數據文件,以及能否將數據庫恢復到一致的時間點。需要的IO最小,也不會檢查確認備份集片真正存在於磁盤上或是否受損,僅基於rman目錄中包含的備份集片給出報告。

常用命令(在普通的restore命令後加preview即可):

Restore database preview;
Restore tablespace user preview;
Restore datafile 1 preview;
Restore archivelog all preview;
Restore controlfile preview;

 

2. Restore…validatecheck logical

檢查介質上備份集映像的物理和邏輯損壞,其中Restore…validate檢查物理損壞,check logical檢查邏輯損壞。

注意以下命令運行會消耗與普通還原等量資源

Restore database validate check logical;
Restore tablespace user validate check logical;
Restore datafile 1 validate check logical;
Restore archivelog all validate check logical;
Restore controlfile validate check logical;

 

3. Validate命令

Restore database validate逐塊檢查備份,而validate命令檢查備份頭,只檢查物理損壞,如果同時也想檢查邏輯損壞,應該加上check logical選項。

validate命令完成檢查後,將填充v$database_block_corruption視圖。另外,該命令不會檢查塊與塊之間的損壞。

Validate datafile 3;
Validate tablespace user;
Validate corruption list;
Validate database include current controlfile plus archivelog;
Validate backupset 50;
Validate recover area;

 

五、 備份保留策略

備份策略是管理備份與副本以及指定它們在備份介質上的保留時間的方法。

分爲兩種,兩種策略是互斥的,感覺類似於FRA可以按空間保留也可以按時間保留:

  • 基於恢復窗口的保留策略
  • 基於冗餘數量的保留策略

1. 基於恢復窗口的保留策略

基於想要數據庫恢復到的最近日期定製。

對於在NOCATALOG下創建的備份,RMAN的備份集信息都是保存在目標端控制文件中,這部分信息受制於初始化參數:CONTROL_FILE_RECORD_KEEP_TIME。這個參數用來指定記錄在控制文件中的最少保存時間,以天爲單位,默認爲7。

對於基於時間的備份保留策略,一般建議CONTROL_FILE_RECORD_ KEEP_TIME不小於在RMAN中設置的備份保留時間。

Configure retention policy to recovery window of 7 days;

2. 基於冗餘數量的保留策略

會從最新備份開始保留x個數據庫備份

CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

3. 取消備份保留策略

RMAN> CONFIGURE RETENTION POLICY TO NONE;

4. 更改回默認值

RMAN> CONFIGURE RETENTION POLICY CLEAR;

 

六、 歸檔日誌保留策略

歸檔日誌刪除策略自動應用於FRA中的歸檔日誌。若未使用FRA,可運行list obsolete命令列出根據策略應當刪除的文件,運行Delete obsolete命令實際刪除。

 

1. 默認歸檔保留策略(使用FRA

  • 歸檔已備份到log_archive_dest_n定義的遠程目標

還需滿足以下兩個條件之一:

  • 至少已在磁盤或磁帶上備份過該歸檔一次
  • 根據FRA建立的備份保留策略,歸檔日誌文件已過時

 

2. 定義歸檔保留策略

使用FRA時,可用configure archivelog deletion policy命令配置保留策略。以下兩種備份策略如果都配置,需要兩個條件都滿足時纔會刪除歸檔日誌。

  • 已向dg庫傳輸或應用歸檔日誌
  • 已在設備上將歸檔備份了n次

① 已向dg庫傳輸或應用歸檔日誌

這個很常用,爲的是避免主庫歸檔還沒傳到從庫就被刪除,或者從庫歸檔還沒應用就被刪除,導致主從中斷。但設置之後如果主從同步有問題,主從庫歸檔將都無法自動刪除,可能撐爆空間。

-- 主庫
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY;
-- 從庫
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED on ALL STANDBY;
  • 包含ALL參數:相應標準將應用於所有備庫(12c開始必須設置)
  • 不包含ALL參數:相應標準只應用於所有“MANDATORY的歸檔日誌目標”,即
alter system set log_archive_dest_1 ="LOCATION=c:\orcl1122\guidang1\ mandatory";
-- 設置mandatory後必須歸檔到指定路徑後,redolog纔可重用

② 已在設備上將歸檔備份了n次

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO backed up 2 times to device type disk;

③ 清除歸檔保留策略

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;

 

3. 保留策略的維護

當備份或副本滿足保留策略標準而變得過期時會發生什麼?這取決於你用的是FRA還是手動備份區。

  • 使用FRA

RMAN最終會基於空間需求(默認80%)從FRA刪除備份集片或歸檔,可通過v$recover_file_dest視圖的space_reclaimable列確定過期的備份(可刪除的備份)所佔用的FRA空間量。

  • 非FRA

可以利用report obsolete;確定rman已將哪些備份標記爲過時,並利用delete obsolete;刪除,通常需要自己配置刪除腳本或使用第三方備份軟件控制刪除。

 

七、 Change與Delete命令

1. Change命令

修改爲特定備份指定的保存窗口,允許用戶修改備份狀態。當備份集存儲在FRA時,一些change命令將無效。

  • 修改備份爲永久保存並保存備份相關的日誌,保證總能將備份恢復到當前時間點
change backupset 31 keep forever logs;
  • 設置備份過期的新日期,將備份多保存7天,7天后將刪除
change backupset 32 keep until time 'sysdate + 7' logs;
  • 將備份集設置爲unavailable,標記爲unavailable的備份集不參與crosscheck
change backupset 33 unavailable;
  • 帶delete參數的change命令將刪除備份集,從備份介質、控制文件或恢復目錄中刪除。
change backupset 117,118 delete;
change backuppiece 1304 delete;
change archivelog until logseq =544 delete;

 

2. Delete命令

執行delete命令時,關聯的rman備份記錄將從控制文件或恢復目錄中刪除。

可刪除基於保留標準被標記爲過時的任何備份

Delete expired;
Delete obsolete;

Delete命令默認會要求用戶確認刪除指令,可使用noprompt選項避免確認

Delete noprompt obsolete;

若未使用FRA,並要物理刪除與備份關聯的文件,將需要使用force參數

Delete noprompt obsolete force;

使用rman運行腳本

Rman target sys/sys cmdfile=run_backup.cmd
#或者
RMAN>@run_backup.cmd

 

八、 list與report命令

1. list命令

List命令是一種在控制文件或恢復目錄中查詢備份歷史信息的方法。

  • 列出化身
List incarnation of database;

--ResetSCN和Reset Time列爲創建數據庫化身的時間
--Status列表示化身狀態:
--  PARENT: 舊化身
--  CURRENT: 當前化身,可以看到DB恢復到了哪個時間點
--  ORPHAN: 孤兒化身(在resetlogs命令後又進行了恢復)
  • 列出概要信息
List backup summary;  -- 包含歸檔備份信息

--KEY: 備份集鍵
--TY(類型): 備份的類型,B表示備份
--LV(級別):A表示歸檔備份、F表示全備、0和1表示增備級別
--S(狀態):A表示可用、U表示不可用、E表示過期
--Pieces:備份片數目
--Copies:副本數目

List backup of database summary;

List expired backup of archivelog all summary;
  • 按文件類型列出備份
List backup by file;

  • 列出詳細備份信息:備份集、鏡像備份信息(可能過於詳細)
List backup
  • 列出適合恢復的備份
rman>List recoverable backup of database;
  • 列出到期的備份信息
rman>List expired backup;
rman>list expired backup of datafile 3;
rman>list expired backup of archivelog all;
  • 按表空間名和數據文件號列出備份
rman>list backup of tablespace users;
rman>list backup of datafile 3;
  • 列出歸檔日誌備份
rman>list archivelog all;
  • 列出控制文件和服務器參數文件備份
rman>list backup of controlfile;
  • 列出還原點
RMAN> list restore point all;

 

2. Report命令

用於判斷數據庫的當前可恢復狀態和提供數據庫備份的特定信息

  • 報告最近未被備份的數據文件
Report need backup days=1;
  • 報告備份冗餘或恢復窗口
Report need backup redundancy=2;
Report need backup recovery window of 2 days;
  • 報告數據文件不可恢復操作
Report unrecoverable;
  • 報告數據庫模式
Report schema;
  • 報告過期的備份
Report obsolete;

 

九、 備份狀態及信息查詢

1. 主要相關視圖

  • V$RMAN_STATUS:查詢rman備份狀態,可以看見在RMAN裏執行的操作,其中最主要的列是OPERATION和status。 

Operation的值有:rman、backup、list、report
Status的值有:running、running with warnings、running with errors、completed、completed with warnings、completed with errors、failed
  • V$RMAN_OUTPUT:查看RMAN的輸出,記錄RMAN生成的信息。內存中的視圖,不會記錄到控制文件,最多37278行
  • V$RMAN_BACKUP_JOB_DETAILS:爲每個備份提供更詳細的信息。 
  • V$SESSION_LONGOPS與V$SESSION:在備份、還原操作期間可查看已運行時間並預估完成時間
  • V$ACTIVE_SESSION_HISTORY:查看rman歷史信息,如等待事件等
  • V$BACKUP_ASYNC_IO(更常用)與V$BACKUP_SYNC_IO:查看RMAN異步和同步備份操作詳細信息,其中最有用的是type列爲"aggregate"的記錄中的effective_bytes_per_second列,該列表示備份、恢復對象每秒執行的字節數,應與磁盤讀寫速率相近,否則應該檢查備份進程問題。

 

2. 常用sql

查看備份失敗的記錄

SELECT
* 
FROM
    V$RMAN_STATUS 
WHERE
    START_TIME >= TO_DATE ( & START_TIME, 'YYYY-MM-DD HH24:MI:SS' ) 
    AND END_TIME <= TO_DATE ( & END_TIME, 'YYYY-MM-DD HH24:MI:SS' ) 
    AND OPERATION = 'BACKUP' 
    AND STATUS != 'COMPLETED' 
    AND STATUS NOT LIKE 'RUNNING%';

查看備份成功的記錄

SELECT
* 
FROM
    V$RMAN_STATUS 
WHERE
    START_TIME >= TO_DATE ( & START_TIME, 'YYYY-MM-DD HH24:MI:SS' ) 
    AND END_TIME <= TO_DATE ( & END_TIME, 'YYYY-MM-DD HH24:MI:SS' ) 
    AND OPERATION = 'BACKUP' 
    AND STATUS = 'COMPLETED';

查看所有備份集詳細信息

SELECT
A.RECID "BACKUP SET",
A.SET_STAMP,
DECODE (
B.INCREMENTAL_LEVEL,
'',
DECODE ( BACKUP_TYPE, 'L', 'Archivelog', 'Full' ),
1,
'Incr-1級',
0,
'Incr-0級',
B.INCREMENTAL_LEVEL 
) "Type LV",
B.CONTROLFILE_INCLUDED "包含CTL",
DECODE ( A.STATUS, 'A', 'AVAILABLE', 'D', 'DELETED', 'X', 'EXPIRED', 'ERROR' ) "STATUS",
A.DEVICE_TYPE "Device Type",
A.START_TIME "Start Time",
A.COMPLETION_TIME "Completion Time",
A.ELAPSED_SECONDS "Elapsed Seconds",
A.BYTES / 1024 / 1024 / 1024 "Size(G)",
A.COMPRESSED,
A.TAG "Tag",
A.HANDLE "Path" 
FROM
    GV$BACKUP_PIECE A,
    GV$BACKUP_SET B 
WHERE
    A.SET_STAMP = B.SET_STAMP 
    AND A.DELETED = 'NO' 
ORDER BY
    A.COMPLETION_TIME DESC;

查找某個備份集中包含數據文件 

SELECT DISTINCT
c.file #,A.SET_STAMP, D.NAME, C.CHECKPOINT_CHANGE#, C.CHECKPOINT_TIME
FROM
    V$BACKUP_DATAFILE C,
    V$BACKUP_PIECE A,
    V$DATAFILE D 
WHERE
    A.SET_STAMP = C.SET_STAMP 
    AND D.FILE # = C.FILE#
    AND A.DELETED = 'NO' 
    AND c.set_stamp =& set_stamp 
ORDER BY
    C.FILE #;

查詢某個備份集中控制文件 

SELECT DISTINCT
    A.SET_STAMP,
    D.NAME,
    C.CHECKPOINT_CHANGE #,
    C.CHECKPOINT_TIME 
FROM
    V$BACKUP_DATAFILE C,
    V$BACKUP_PIECE A,
    V$CONTROLFILE D 
WHERE
    A.SET_STAMP = C.SET_STAMP 
    AND C.FILE # = 0
    AND A.DELETED = 'NO' 
    AND C.SET_STAMP = & SET_STAMP;

查看某個備份集中歸檔日誌

SELECT DISTINCT
B.SET_STAMP,
B.THREAD #,
B.SEQUENCE #,
B.FIRST_TIME,
B.FIRST_CHANGE #,
B.NEXT_TIME,
B.NEXT_CHANGE #
FROM
    V$BACKUP_REDOLOG B,
    V$BACKUP_PIECE A 
WHERE
    A.SET_STAMP = B.SET_STAMP 
    AND A.DELETED = 'NO' 
    AND B.SET_STAMP = & SET_STAMP 
ORDER BY
    THREAD #, SEQUENCE#;

查看某個備份集 SPFILE 

SELECT DISTINCT
    A.SET_STAMP,
    B.COMPLETION_TIME,
    HANDLE 
FROM
    V$BACKUP_SPFILE B,
    V$BACKUP_PIECE A 
WHERE
    A.SET_STAMP = B.SET_STAMP 
    AND A.DELETED = 'NO' 
    AND B.SET_STAMP = & SET_STAMP;

查看 RMAN的配置信息

SELECT NAME,VALUE FROM V$RMAN_CONFIGURATION;

查詢30天內RMAN備份的詳細情況

SELECT SESSION_KEY, INPUT_TYPE, STATUS,
       TO_CHAR(START_TIME,'yyyy-mm-dd hh24:mi') start_time,
       TO_CHAR(END_TIME,'yyyy-mm-dd hh24:mi')   end_time,
       ELAPSED_SECONDS,
       INPUT_BYTES_PER_SEC_DISPLAY in_sec,
       OUTPUT_BYTES_PER_SEC_DISPLAY out_sec,
       COMPRESSION_RATIO,
       INPUT_BYTES_DISPLAY in_size,
       OUTPUT_BYTES_DISPLAY out_size                   
FROM V$RMAN_BACKUP_JOB_DETAILS
where start_time>=sysdate-30;

查詢rman備份進度及預估剩餘時間

select inst_id,sid,serial#,opname,COMPLETE,
trunc(((to_char(last_update_time,'dd')-to_char(start_time,'dd'))*60*24+(to_char(last_update_time,'hh24')-to_char(start_time,'hh24'))*60 +(to_char(last_update_time,'mi')-to_char(start_time,'mi')))*(100-complete)/complete) min from
(
SELECT inst_id,
sid,
serial#,
opname,
ROUND(SOFAR / TOTALWORK * 100, 2) COMPLETE,
LAST_UPDATE_TIME,
START_TIME
FROM gV$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
--AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK
) t;

查看各文件備份時間及速率

SELECT device_type device,TYPE,filename,
to_char(open_time,'yyyymmdd hh24:mi:ss') OPEN,
to_char(close_time,'yyyymmdd hh24:mi:ss') CLOSE,
elapsed_time elapse,effective_bytes_per_second e_bytes
FROM v$backup_async_io
WHERE close_time>SYSDATE-1
ORDER BY close_time

查看各文件備份IO及長等待比率

SELECT filename,ready,short_waits,long_waits,io_count,long_waits/io_count,
FROM v$backup_async_io
  • IO_COUNT:IO總數 
  • READY:buffer立即可用的異步IO調用數
  • SHORT_WAITS:請求buffer但不能立即獲得,經過簡短的非阻塞方式輪詢後變爲可用的次數
  • LONG_WAITS:請求buffer不能獲得,需經過阻塞等待,等待IO設備的次數。應該重點關注,LONG_WAITS/IO_COUNT比較高時表明IO方式存在瓶頸

 

參考:《Oracle RMAN備份與恢復》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章