講真,年初好好地做一次備份的有效性校驗吧。今天分享一些常用的校驗有效性的方法。文章來(lái)自官方文檔翻譯。
1、RMAN校驗
RMAN校驗的主要目的是檢驗壞塊和丟失的文件,數據庫一般會(huì )阻止可能導致失效的備份文件或者損壞的還原文件的操作。
RMAN校驗主要會(huì )進(jìn)行以下操作:
在恢復或還原數據文件的過(guò)程中阻止對其進(jìn)行訪(fǎng)問(wèn)
針對一個(gè)數據文件每次只允許一個(gè)還原操作
確保增量備份的有序性
將存儲信息存放在備份文件中以便可以檢查文件損壞
在每次讀寫(xiě)塊的時(shí)候都做檢查,使得壞塊及時(shí)被發(fā)現
>關(guān)于校驗和與壞塊
所謂壞塊指的是塊中的數據改變了,跟Oracle預期想要查找的數據不同,壞塊產(chǎn)生的原因包含但不局限于以下幾種:
磁盤(pán)和磁盤(pán)控制器故障
內存故障
Oracle數據庫軟件的缺陷
DB_BLOCK_CHECKSUM是一個(gè)數據庫初始化參數,用于控制數據庫(而非備份)中的數據文件和聯(lián)機重做日志文件中的塊的校驗和的寫(xiě)入。 如果DB_BLOCK_CHECKSUM是Typical的,那么數據庫在正常操作期間計算每個(gè)塊的校驗和,并在寫(xiě)入磁盤(pán)之前將其存儲在塊頭中。 當數據庫稍后從磁盤(pán)讀取塊時(shí),會(huì )重新計算校驗和并與存儲的值進(jìn)行比較。 如果值不匹配,則塊已損壞。
默認情況下,BACKUP命令計算每個(gè)塊的校驗和,并將其存儲在備份中。 BACKUP命令忽略DB_BLOCK_CHECKSUM的值,因為此初始化參數適用于數據庫中的數據文件,而不是備份。
>認識物理和邏輯壞塊
在物理壞塊(介質(zhì)損壞)中,數據庫根本無(wú)法識別該塊:校驗和無(wú)效,塊包含全零,或塊頭和塊尾不匹配。
默認情況下,BACKUP命令計算每個(gè)塊的校驗和,并將其存儲在備份中。 如果指定NOCHECKSUM選項,則創(chuàng )建備份時(shí),RMAN不會(huì )執行塊的校驗和。
在邏輯壞塊中,塊的內容在邏輯上不一致。 邏輯壞塊的示例包括行或索引條目的損壞。 如果RMAN檢測到邏輯損壞,則會(huì )將該塊記錄在告警日志和服務(wù)器會(huì )話(huà)跟蹤文件中。
默認情況下,RMAN不檢查邏輯損壞。 但是,如果在BACKUP命令上指定CHECK LOGICAL,則RMAN會(huì )對數據和索引塊進(jìn)行邏輯損壞(例如行片或索引條目的損壞)進(jìn)行測試,并將其記錄在位于自動(dòng)診斷信息庫(ADR)中的告警日志中, 如果在備份或恢復文件時(shí)使用具有以下配置的RMAN,則它會(huì )檢測可能檢測到的所有類(lèi)型的塊損壞:
在數據庫的初始化參數文件中,設置DB_BLOCK_CHECKSUM = typical,以便數據庫自動(dòng)計算數據文件校驗和(不用于備份,而是用于數據庫使用的數據文件)
不要在BACKUP命令之前使用SET MAXCORRUPT,因為RMAN不會(huì )容忍任何未標記的塊損壞。
在BACKUP命令中,不要指定NO CHECKSUM選項,方便RMAN在寫(xiě)入備份時(shí)計算校驗和
在BACKUP和RESTORE命令中,指定CHECK LOGICAL選項,使得RMAN能夠檢查邏輯和物理?yè)p壞
>RMAN備份中的壞塊限制
可以通過(guò)SET MAXCORRUPT 命令限制在RMAN備份的一個(gè)文件中的未標記的壞塊的總數。默認值為0,表示Oracle不允許備份文件中存在任何未標記的塊損壞。
如果在備份期間RMAN遇到未標記的損壞塊時(shí)超過(guò)MAXCORRUPT限制,則RMAN終止備份。 否則,RMAN將新檢測到的損壞塊寫(xiě)入備份,并使用特殊標頭指示該塊已標記為已損壞。 可以使用VALIDATE命令確定哪些塊被標記為已損壞,并找到任何未標記的已損壞塊。
缺陷:
因為RMAN允許在備份中標記損壞的塊,并且可以指示RMAN允許未標記的損壞塊在備份中被標記為損壞(當使用MAXCORRUPT時(shí)),可以恢復具有被標記為損壞的塊,因此 如果備份此恢復的數據文件(假設沒(méi)有發(fā)生新的損壞),即使沒(méi)有設置MAXCORRUPT,備份也會(huì )成功。 這是因為先前標記的損壞不會(huì )阻止RMAN完成備份。
>壞塊的檢測
Oracle數據庫支持對數據庫壞塊的監控、檢測和修復。該技術(shù)取決于損壞是塊間損壞還是塊內損壞。 在塊內損壞中,損壞發(fā)生在塊本身內。 這種損壞可以是物理的或邏輯的。 而塊間損壞只能是邏輯的。
例如,V$DATABASE_BLOCK_CORRUPTION視圖記錄intrablock損壞,而自動(dòng)診斷信息庫(ADR)跟蹤所有類(lèi)型的損壞。 下表總結了數據庫如何處理不同類(lèi)型的數據塊損壞。
2、使用VALIDATE命令檢查壞塊
可以使用VALIDATE命令手動(dòng)檢查數據庫文件中的物理和邏輯損壞。 此命令執行與BACKUP VALIDATE相同類(lèi)型的檢查,但VALIDATE可檢查更大的對象選擇。 例如:
可以使用VALIDATE DATAFILE ... BLOCK命令驗證單個(gè)塊。
如果指定要驗證的備份片段的副本號,請運行VALIDATE FROM COPY NUMBER命令。
當驗證整個(gè)文件時(shí),RMAN檢查每個(gè)輸入文件塊。 如果備份驗證發(fā)現先前未標記的損壞塊,則RMAN將使用描述損壞的行更新V$ DATABASE_BLOCK_CORRUPTION視圖。
若懷疑備份集中的一個(gè)或多個(gè)備份塊丟失或已損壞時(shí),可以使用VALIDATE BACKUPSET。 此命令檢查備份集中的每個(gè)塊,以確保備份可以還原。 如果RMAN發(fā)現塊損壞,則它發(fā)出錯誤并終止驗證。 使用命令VALIDATE BACKUPSET可以選擇要檢查的備份,而RESTORE命令的VALIDATE選項允許RMAN選擇。
>使用VALIDATE命令進(jìn)行有效性校驗的案例
1、打開(kāi)RMAN并連接到目標數據庫
2、根據需求執行不同的VALIDATE命令
例如:如果要校驗所有的數據文件和控制文件(如果有使用參數文件的話(huà)也包含),則在RMAN中執行以下命令:
RMAN> VALIDATE DATABASE;
也可以校驗制定的備份集,使用如下命令:
以下示例說(shuō)明如何檢查數據文件中的各個(gè)數據塊是否損壞。
RMAN> VALIDATE DATAFILE 1 BLOCK 10; Starting validate at 17-AUG-13using channel ORA_DISK_1channel ORA_DISK_1: starting validation of datafilechannel ORA_DISK_1: specifying datafile(s) for validationinput datafile file number=00001 name=/disk1/oracle/dbs/tbs_01.fchannel ORA_DISK_1: validation complete, elapsed time: 00:00:01List of Datafiles=================File Status Marked Corrupt Empty Blocks Blocks Examined High SCN---- ------ -------------- ------------ --------------- ----------1 OK 0 2 127 481907 File Name: /disk1/oracle/dbs/tbs_01.f Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 36 Index 0 31 Other 0 58Finished validate at 17-AUG-13>并行的數據文件校驗
如果驗證大數據文件,RMAN可以通過(guò)將文件劃分為多個(gè)部分并行處理每個(gè)部分。 如果配置或分配多個(gè)通道,并且希望通道進(jìn)行并行驗證,則指定VALIDATE命令的SECTION SIZE參數。
如果指定的段大小大于文件的大小,則RMAN不會(huì )創(chuàng )建文件段。 如果指定的小段大小將產(chǎn)生超過(guò)256個(gè)段,則RMAN將段大小增加到導致正好256個(gè)段的值。
并行校驗的實(shí)現過(guò)程如下:
1、打開(kāi)RMAN并連接到目標數據庫,目標數據庫必須是mount或者open狀態(tài) 。
2、執行包含section size參數的VALIDATE命令:以下命令設置了兩個(gè)Channel校驗一個(gè)大數據文件,分區大小設置為1200MB。
RUN{ ALLOCATE CHANNEL c1 DEVICE TYPE DISK; ALLOCATE CHANNEL c2 DEVICE TYPE DISK; VALIDATE DATAFILE 1 SECTION SIZE 1200M;}3、使用BACKUP VALIDATE 校驗數據文件
可以使用BACKUP VALIDATE命令執行以下操作:
檢查數據文件的物理或者邏輯壞塊
確保所有的數據庫文件都存在并且存放在正確的位置
當運行BACKUP VALIDATE時(shí),RMAN讀取要完整備份的文件,與在實(shí)際備份過(guò)程中一樣。 但是,RMAN實(shí)際上不會(huì )生成任何備份集或映像副本。
注意
不能將BACKUPSET,MAXCORRUPT或PROXY參數與BACKUP VALIDATE一起使用。 要驗證特定的備份集,需要運行VALIDATE命令
以下是使用BACKUP VALIDATE命令校驗的示例:
1、打開(kāi)RMAN并連接到目標數據庫和恢復的catalog數據庫(如果有的話(huà))
2、執行BACKUP VALIDATE命令
例如:校驗所有數據庫文件和歸檔日志文件能夠被正常備份的語(yǔ)句如下,該語(yǔ)句僅用于校驗物理壞塊。
如果要校驗邏輯壞塊,則使用上述命令的以下變體:
在前面的示例中,RMAN客戶(hù)端顯示的輸出與真正備份文件時(shí)的輸出相同。 如果RMAN無(wú)法備份一個(gè)或多個(gè)文件,那么它會(huì )發(fā)出錯誤消息。 例如,RMAN可能會(huì )顯示類(lèi)似以下內容的輸出:
RMAN-00571: ========================================RMAN-00569: ====== ERROR MESSAGE STACK FOLLOWS =====RMAN-00571: ========================================RMAN-03002: failure of backup command at 08/29/2013 14:33:47ORA-19625: error identifying file /oracle/oradata/trgt/arch/archive1_6.dbfORA-27037: unable to obtain file statusSVR4 Error: 2: No such file or directoryAdditional information: 34、還原備份之前校驗其有效性
可以運行RESTORE ... VALIDATE來(lái)測試RMAN是否可以從備份恢復特定文件或一組文件。 RMAN選擇要使用的備份。
使用 該命令數據庫必須mount或者open。 在驗證數據文件的還原時(shí),不必使數據文件脫機,因為數據文件的備份驗證僅讀取備份,并且不會(huì )影響生產(chǎn)數據文件。
在驗證磁盤(pán)或磁帶上的文件時(shí),RMAN讀取備份片段或映像副本中的所有塊。 RMAN還驗證異地備份, 驗證與真正的恢復操作相同,除了RMAN不寫(xiě)入輸出文件。
RMAN還允許指定要驗證的備份片段的副本號。
示例如下:
1、執行具有VALIDATE參數的RESTORE命令。以下語(yǔ)句校驗所有數據庫文件包含歸檔日志的還原
如果沒(méi)有看到RMAN錯誤棧,則跳過(guò)后續步驟。 缺少錯誤消息意味著(zhù)RMAN已經(jīng)確認它可以在真正的恢復和恢復期間成功使用這些備份。
如果在輸出和RMAN-06026消息中看到錯誤,請查找問(wèn)題的原因。 如果可能,阻止RMAN驗證備份并重試驗證的問(wèn)題。
以下錯誤表示RMAN無(wú)法從可用備份還原一個(gè)或多個(gè)指定的文件:
RMAN-06026: some targets not found - aborting restore以下示例輸出顯示RMAN在讀取指定備份時(shí)遇到問(wèn)題:
RMAN-03009: failure of restore command on c1 channel at 12-DEC-12 23:22:30ORA-19505: failed to identify file "oracle/dbs/1fafv9gl_1_1"ORA-27037: unable to obtain file statusSVR4 Error: 2: No such file or directoryAdditional information: 35、CDB和PDB的校驗
RMAN能夠驗證多租戶(hù)下CDB和PDB, 可以選擇為要為CDB和PDB驗證的備份片段指定副本號。
本章中的所有過(guò)程都適用于CDB,其差異在以下部分中描述:
>檢查整個(gè)CDB
驗證CDB的步驟與用于驗證非CDB的步驟類(lèi)似。 唯一的區別是,您必須以通用SYSBACKUP或SYSDBA權限作為公共用戶(hù)連接到根。 然后,使用VALIDATE DATABASE和RESTORE DATABASE VALIDATE命令。
以下命令在連接到根時(shí)驗證整個(gè)CDB:
VALIDATE DATABASE;The following command validates the root:
VALIDATE DATABASE ROOT;>校驗PDB
使用以下方式可以校驗PDB的有效性
連接到根目錄并使用VALIDATE PLUGGABLE DATABASE或RESTORE PLUGGABLE DATABASE VALIDATE命令, 能夠驗證一個(gè)或多個(gè)PDB。
以下命令在連接到根時(shí)驗證PDB hr_pdb和sales_pdb。
VALIDATE PLUGGABLE DATABASE hr_pdb, sales_pdb;連接到PDB并使用VALIDATE DATABASE和RESTORE DATABASE VALIDATE命令僅驗證一個(gè)PDB。 此處使用的命令與您將用于非CDB的命令相同。
以下命令在連接到PDB時(shí)驗證數據庫的還原。
RESTORE DATABASE VALIDATE;以上就是今天要分享的關(guān)于備份的有效性檢查。更多內容請訪(fǎng)問(wèn)官方文檔。如有疑問(wèn)歡迎加入云和恩墨大講堂與專(zhuān)家交流探討。
2017,一起進(jìn)步。
如何加入"云和恩墨大講堂"微信群
聯(lián)系客服