在Oracle Data Guard环境中的RMAN备份和还原
Oracle Data Guard中的數據庫通過初始化參數文件中的DB_UNIQUE_NAME參數來唯一鑒別。為了讓RMAN在Data Guard環境中正常工作,使用相同DBID的數據庫必須擁有唯一的DB_UNIQUE_NAME名稱。
在Data Guard環境中使用RMAN,必須要配置一個恢復目錄(recovery catalog)。恢復目錄存儲所有主備數據庫的元數據(metadata)。
1.關于在Oracle Data Guard配置中的RMAN文件管理
RMAN使用恢復目錄來跟蹤在Oracle Data Guard環境中的所有數據庫文件的文件名稱。
恢復目錄是一個數據庫模式,RMAN使用它來存儲關于一個或多個Oracle數據庫的元數據。恢復目錄(recovery catalog)還會記錄在線redo日志,備redo日志,臨時文件,歸檔日志文件,備份集和映像拷貝等文件創建的位置。
1.1. Oracle Data Guard環境中備份的可交換性
RMAN命令使用恢復目錄元數據(recovery catalog metadata)透明地運行在Data Guard的不同物理數據庫之間。例如,可以在一個物理備數據庫上備份一個表空間,然后在主數據庫上還原和恢復。同樣的,也可以在主數據庫上備份一個表空間,然后在物理備數據庫上還原和恢復。
注意:邏輯備數據庫的備份不能用在主數據庫上,因為邏輯備數據庫的DBID與主數據庫不同,不屬于相同的數據庫。
備控制文件和主控制文件的備份也可以交換。例如,可以在主數據庫上還原備控制文件,也可以在物理備數據庫上還原主控制文件。可以交換意味著可以將控制文件的備份卸載到Data Guard的其中一個數據庫上。RMAN在還原和恢復數據庫的時候自動更新數據庫的文件名稱。
1.2. Oracle Data Guard環境中備份的關聯性
RMAN使用恢復目錄(recovery catalog)讓每個數據庫文件或備份文件與DB_UNIQUE_NAME關聯來跟蹤Oracle Data Guard環境中的所有數據庫文件。
創建文件的數據庫與文件關聯。例如,如果RMAN使用唯一的名稱standby1備份數據庫,那么standby1就會與備份關聯。備份保持與創建它的數據庫關聯,除非使用CHANGE … RESET DB_UNIQUE_NAME命令將備份與其他數據庫關聯。
1.3. Oracle Data Guard環境中備份的可訪問性
備份的可訪問性與關聯性不同。缺省情況下,在Oracle Data Guard環境中,恢復目錄認為磁盤備份只能被關聯的數據庫訪問,而在一個數據庫上創建的磁帶備份則可以被任何數據庫訪問。
可以使用以下的RMAN命令覆蓋默認的行為:
SET BACKUP FILES FOR DEVICE TYPE device_specifier TO [NOTACCESSIBLE |
ACCESSIBLE]
可訪問性設置是在會話級別,這意味著在RMAN會話斷開后,備份的關聯性復原為缺省的行為。
如果備份文件沒有與任何數據庫關聯,那么在恢復目錄的視圖中描述它的行的SITE_KEY列的值為null。缺省情況下,RMAN將SITE_KEY為null的文件與連接為TARGET的數據庫關聯。
RMAN命令如BACKUP,RESTORE和CROSSSCHECK在任何可訪問的備份上工作。例如,RECOVER COPY操作,RMAN認為與數據庫關聯的映像拷貝才可用來恢復。RMAN認為在磁盤和磁帶上的增量備份才可以用來恢復映像拷貝。在數據庫恢復中,RMAN認為只有與數據庫相關聯的磁盤備份和所有的磁帶備份文件才可以用來還原。
為了闡述備份可訪問性的差異,假設數據庫prod和standby1位于不同的主機上。RMAN在生產主機prod上備份數據文件1到/prmhost/disk1/df1.dbf和磁帶。RMAN在備主機standby1上備份數據文件1到/sbyhost/disk2/df1.dbf和磁帶。如果RMAN連接到數據庫prod,那么你不能使用RMAN命令與位于備主機的備份/sbyhost/disk2/df1.dbf一起來執行操作。然而,RMAN認為在standby1上做的磁帶備份可以用來還原。
注:可以將備份從備機傳輸到主機或從主機傳輸到備機,作為TARGET連接到這臺主機上的目標數據庫,然后使用CATALOG命令來登記(catalog)備份。在文件被目標數據庫登記(catalog)后,文件就與目標數據庫關聯。
2.關于在Oracle Data Guard配置中的RMAN配置
在Oracle Data Guard配置中,備份控制文件,數據文件和歸檔日志的程序可以卸載(offload)到備系統,因此最小化備份對生產系統的影響。
這些備份可以用來恢復主或備數據庫。
RMAN使用初始化參數DB_UNIQUE_NAME來區別一個數據庫和其他數據站點。因此,在Oracle Data Guard配置中,維護DB_UNQIUE_NAME的唯一性是非常重要的。
只有主數據庫必須使用RMAN REGISTER DATABASE命令明確地注冊。在RMAN連接到恢復目錄和作為target連接到主數據庫后執行這個操作。
為了簡化RMAN備份和恢復的持續使用,可以為Oracle Data Guard環境中的每個主數據庫和物理備數據庫設置一些持久的配置設置。這些設置控制RMAN行為的各個方面。例如,可以配置備份保留策略,備份的缺省目標到磁帶或磁盤,缺省的備份設備類型等等。
可以使用CONFIGURE命令和FOR DB_UNIQUE_NAME子語句來為某個數據庫創建一個持久的配置,而不用作為TARGET連接到備數據庫或主數據庫。例如,可以連接RMAN到恢復目錄,運行SET DBID命令,然后為一個物理備數據庫在它創建前建立配置,因此當數據庫創建時,RMAN配置會應用。
例如,在連接到恢復目錄之后,可以在RMAN提示符中使用以下命令來為DBID是1625818158的BOSTON數據庫設置缺省的設備類型為SBT。RMAN SET DBID命令只有在沒有作為target連接到數據庫時才要求:
SET DBID 1625818158;
CONFIGURE DEFAULT DEVICE TYPE TO SBT FOR DB_UNIQUE_NAME BOSTON;
當作為TARGET連接到目標數據庫進行恢復目錄(recovery catalog)重新同步時,RMAN會更新數據庫的控制文件。如果使用數據庫的FOR DB_UNIQUE_NAME子句時卻沒有連接到目標數據庫,這時RMAN只會在恢復目錄中更改配置。
3.建議的RMAN和Oracle Database設置
配置假設
下面的配置做如下假設:
1)備數據庫是物理備數據庫,備份只在備數據庫上執行;
2)RMAN恢復目錄是必需的,這樣在其中一個數據庫服務器的備份就可以還原到另外一臺數據庫服務器。只使用控制文件來作為RMAN倉庫是不夠的,因為主數據庫不知道備數據庫上執行的備份信息。
RMAN恢復目錄在中央位置中組織備份歷史和其他恢復相關的元數據。恢復目錄被配置在數據庫中和維護備份元數據。恢復目錄沒有控制文件那樣的空間限制,可以存儲更多關于備份的歷史數據。
恢復目錄服務器,在Oracle Data Guard配置中建議與主備站點物理上分開,因為在兩個站點中的任意一個的災難都不會影響恢復最近的備份的能力。
3)配置中的所有數據庫使用Oracle 11.1或更新的版本
4)Oracle Secure Backup軟件或第三方介質管理軟件與RMAN一起配置來備份到磁帶。
3.1. 在主備數據庫上的Oracle數據庫配置
在Oracle Data Guard環境中的每個主備數據庫上,建議這些數據庫配置。
1)為每個數據庫配置快速恢復區域(恢復區域對于數據庫是本地的)。
快速恢復區域是一個在文件系統或Oracle ASM磁盤組上的單個的存儲位置,恢復需要的所有文件都存儲其中。這些文件包含控制文件,歸檔日志文件,在線redo日志,閃回日志,和RMAN備份。當在快速恢復區域創建新的備份和歸檔日志時,舊文件(超出保存期范圍,或已經備份到第三級的存儲)會自動被刪除來為它們騰出空間。另外,可以設置通知來提示DBA快速恢復區域的空間消耗在接近它預先定義的限制。DBA可以做出行動,例如增加恢復區域的空間限制,增加磁盤硬件,或縮短保存期。
設置初始化參數來配置快速恢復區域:
DB_RECOVERY_FILE_DEST =
DB_RECOVERY_FILE_DEST_SIZE =
示例:
db_recovery_file_dest = +RECO
db_recovery_file_dest_size = 30G
2)使用服務器參數文件(SPFILE),這樣就可以被備份在備份中保存實例的參數。
3)在主備數據庫上啟用閃回數據庫。
當閃回數據庫啟用時,Oracle數據庫在快速恢復區域中維護閃回日志。這些日志可以用來回滾數據庫到一個早前的時間點,從而不需要完整的還原。
3.2. 主數據庫上的RMAN配置
為了簡化RMAN的持續使用,可以為Oracle Data Guard環境中的數據庫設置一些持久的配置設置。
這些設置控制RMAN行為的各個方面。例如,可以配置備份保留策略,備份的缺省目標到磁帶或磁盤,缺省的備份設備類型等等。可以使用CONFIGURE命令設置和更改RMAN配置。建議在主數據庫上進行下面的RMAN配置:
1)連接RMAN到主數據庫和恢復目錄;
2)為數據庫配置保留策略為n天:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF DAYS;
這個配置會保存必要的備份來執行數據庫恢復到指定的天數范圍內的任意時間點。
使用DELETE OBSOLETE命令來刪除任何不需要的備份(根據設置的保留策略)來執行在指定的天數范圍內的恢復。
3)使用CONFIGURE ARCHIVELOG DELETION POLICY指定何時歸檔日志可以被刪除。例如,在確保歸檔日志已經被傳輸到所有目的地后刪除它們,使用以下配置:
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY;
確保歸檔日志已經被在所有備目的地應用后刪除它們,使用以下配置:
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
4)為主數據庫和所有備數據庫配置連接字符串,這樣RMAN在使用命令RESYNC CATALOG FROM DB_UNIQUE_NAME可以遠程連接和執行同步。當連接到target實例時,必須提供網絡服務名稱。這個要求即使在同步來源的其他數據庫實例在本地主機上也適用。target和遠程實例必須使用相同的SYSDBA(或SYSBACKUP)密碼,這意味著兩上實例必須已經有密碼文件。可以使用一個單一的密碼來創建密碼文件,這樣就可以使用該密碼文件啟動所有數據庫實例。例如,如果連接到備數據庫Boston的TNS別名是boston_conn_str,可以使用以下命令來為Boston數據庫站點配置連接標識符:
RMAN> CONFIGURE DB_UNIQUE_NAME BOSTON CONNECT IDENTIFIER ‘boston_conn_str’;
注意’boston_conn_str’不包含用戶名和密碼。它只包含可以來從任何數據庫站點連接到boston數據庫站點的Oracle網絡服務名。
在為所有備數據庫配置好連接標識符后,可以使用LIST DB_UNIQUE_NAME OF DATABASE來確認備數據庫列表。
3.3. 執行備份的備數據庫的RMAN配置
這些RMAN配置建議在執行備份的備數據庫上配置。
1)作為target連接RMAN到備數據庫(備份執行的地方),和連接到恢復目錄。
2)啟用自動備份控制文件和服務器參數文件:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
3)跳過備份已經存在含有相同檢查點的有效備份的數據文件
CONFIGURE BACKUP OPTIMIZATION ON;
4)配置磁帶通道按照介質管理軟件的要求來創建備份
CONFIGURE CHANNEL DEVICE TYPE SBT PARMS ‘’;
5)由于歸檔日志在備數據庫上備份,Oracle建議為日志刪除策略配置BACKED UP選項:
CONFIGURE ARCHIVELOG DELETION POLICY BACKED UP n TIMES TO DEVICE TYPE SBT;
3.4. 不執行備份的備數據庫的RMAN配置
這些RMAN配置建議在不執行備份的備數據庫上配置。
1)作為target連接RMAN到備數據庫,和連接到恢復目錄。
2)啟用一旦歸檔日志應用到備數據庫,自動刪除它們(當層疊或far sync實例功能在使用時,這個也應用到所有的終端數據庫。)
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
4.備份步驟
備份服務器參數文件
所有備份操作都可以卸載到一臺備數據庫,除了SPFILE備份外。SPFILE的備份只能夠還原到備份的源數據庫。
對于沒有備份的數據庫,Oracle建議至少備份SPFILE到一個已知的本地磁盤位置。如果SPFILE備份需要進一步備份到磁帶,可以拷貝它們到已經配置備份到磁帶的數據庫站點。這時可以使用以下RMAN命令登記(catalog)SPFILE備份到數據庫:
CATALOG START WITH ‘<SPFILE backup directory>’;
然后備份SPFILE備份到磁帶:
BACKUP BACKUPSET ALL;
當SPFILE需要還原到某個數據庫時,相應的SPFILE備份從磁盤或磁帶還原。
4.1.使用磁盤作為磁帶備份的緩存
備數據庫的快速恢復區域可以為磁帶備份充當磁盤緩存。
磁盤作為備份的主存儲來使用,磁帶提供長期的歸檔存儲。增量磁帶備份每天做一次,全量磁帶備份每周做一次。執行這些備份的命令在下面的部分描述。
4.1.1. 使用磁盤作為緩存的每日磁帶備份命令
當選定備份策略時,Oracle建議利用每日的增量備份。
數據文件的映像拷貝可以使用最近的增量備份向前滾動,因此一直提供最新的數據文件映像拷貝。RMAN使用合成的映像拷貝來做介質恢復,正如它使用在SCN時的全映像拷貝一樣,不需要花費資源每天執行數據庫的全映像拷貝。額外的優勢是恢復的時間減少了,因為映像拷貝會使用最近的塊更改來更新,需要更少的redo日志來將數據庫恢復到當前的狀態。
為了執行每日增量備份,在第一天執行數據庫的全備份,在第二天執行增量備份。歸檔redo日志可以使用來恢復數據庫到兩天的任意時間點。對于第三天和向前的天數,前一天的增量備份會與數據文件的拷貝合并,執行當天的增量備份,允許快速恢復到最后一天前的任意時間點。Redo日志可以用來恢復數據庫到當天的任意時間點。
執行每日備份的腳本像如下一樣(如果快速恢復區域不是用來存儲日志,最后一行“DELETE ARCHIVELOG ALL”才需要):
RESYNC CATALOG FROM DB_UNIQUE_NAME ALL;
RECOVER COPY OF DATABASE WITH TAG ‘OSS’;
BACKUP DEVICE TYPE DISK INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG ‘OSS’
DATABASE;
BACKUP DEVICE TYPE DISK DATAFILECOPY ALL NOT BACKED UP AT ANY SCN;
BACKUP DEVICE TYPE SBT ARCHIVELOG ALL;
BACKUP BACKUPSET ALL;
DELETE ARCHIVELOG ALL;
備控制文件會在備份操作的結果中自動備份,因為已啟用控制文件的自動備份。
腳本中的每個命令的說明如下:
1)RESYNC CATALOG FROM DB_UNIQUE_NAME ALL
從Oracle Data Guard設置中的所有其他數據庫站點(主和其它備數據庫)同步信息到恢復目錄。為了命令執行,RMAN必須使用Oracle網絡服務連接到target,所有數據庫必須使用相同的密碼文件。
2)RECOVER COPY OF DATABASE WITH TAG ‘OSS’
通過應用前一天執行的級別1的增量備份,向前滾動級別0的數據庫拷貝。如示例中的腳本所示,前一天的級別1增量標記為OSS。增量備份由命令BACKUP DEVICE TYPE DISK … DATABASE生成。第一天這個命令執行時不存在向前滾動,因為還沒有增量級別1的備份。級別0的增量備份使用BACKUP DEVICE TYPE DISK … DATABASE命令創建。在第二天也沒有向前滾動,因為只有級別0的增量備份。標記為OSS的級別1的增量由命令BACKUP DEVICE TYPE DISK … DATABASE創建。在第三天和接下來的天數,使用前一天創建的標記為OSS的級別1的增量執行向前滾動。
3)BACKUP DEVICE TYPE DISK INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH
TAG ‘OSS’ DATABASE
創建一個新的級別1的增量備份。第一天這個命令運行時,一個基本的數據文件拷貝會被創建。在第二天和接下來的天數,這是級別1的增量備份。
4)BACKUP DEVICE TYPE DISK DATAFILECOPY ALL NOT BACKED UP AT ANY SCN
只備份沒有備份過的數據文件。
5)BACKUP DEVICE TYPE SBT ARCHIVELOG ALL
根據配置的刪除策略備份歸檔日志到磁帶
6)BACKUP BACKUPSET ALL
備份任何作為增量備份創建結果創建的備份集
7)DELETE ARCHIVELOG ALL
根據由CONFIGURE ARCHIVELOG DELETION POLICY設置的日志刪除策略來刪除歸檔日志。如果歸檔日志在快速恢復區域,當需要更多磁盤空間時,它們會自動被刪除。因此,只有明確想每天刪除日志時才需要使用這個命令。
4.1.2. 使用磁盤作為緩存的每周磁帶備份命令
為了備份所有恢復相關的文件到磁帶,每周使用一次命令RMAN BACKUP RECOVERY FILES。
這確保所有當前在磁盤上的增量備份,映像拷貝,和歸檔日志備份被備份到磁帶。
4.2. 執行直接備份到磁帶
Oracle介質管理層(MML)API讓第三方介質管理軟件與RMAN和硬件一起工作,允許備份到順序介質設備如磁帶機。
介質管理器處理裝載,卸載和標記順序的介質如磁帶。必須安裝Oracle Secure Backup或第三方介質管理軟件來使用RMAN和順序介質設備。
采取以下步驟來執行直接備份到磁帶,缺省的情況下:
1)連接RMAN到備數據庫(作為target數據庫)和恢復目錄
2)執行以下的CONFIGURE命令:
CONFIGURE DEFAULT DEVICE TYPE TO SBT;
在這個場景中,在備數據庫上每周做一次全備份,每天做一次增量備份。
4.2.1. 每日直接備份到磁帶的命令
執行每日直接備份到磁帶的RMAN命令從Oracle Data Guard環境中的所有其他數據庫重新同步信息。
采取下面的步驟來執行每日直接備份到磁帶:
1)連接RMAN到備數據庫(作為target數據庫)和恢復目錄
2)執行以下的RMAN命令:
RESYNC CATALOG FROM DB_UNIQUE_NAME ALL;
BACKUP AS BACKUPSET INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG;
DELETE ARCHIVELOG ALL;
這些命令也創建數據庫的級別1的增量備份,包含所有歸檔日志。腳本在第一天運行時,如果級別0的備份沒有找到,級別0的備份就會創建。
只有所有歸檔日志文件不在快速恢復區域,命令DELETE ARCHIVELOG ALL才是必要的。
4.2.2. 每周直接備份到磁帶的命令
每周的一天,執行直接到磁帶的周備份。
采取以下步驟:
1)連接RMAN到備數據庫(作為target數據庫)和恢復目錄。
2)執行以下RMAN命令:
RESYNC CATALOG FROM DB_UNIQUE_NAME ALL;
BACKUP AS BACKUPSET INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;
DELETE ARCHIVELOG ALL;
這些命令從Oracle Data Guard環境中的所有其他數據庫重新同步信息,和創建包含所有歸檔日志的級別0的數據庫備份。
只有所有歸檔日志文件不在快速恢復區域,命令DELETE ARCHIVELOG ALL才是必要的。
5.在Oracle Data Guard環境中注冊和取消注冊數據庫
只有主數據庫必須使用RMAN REGISTER DATABASE命令明確地注冊。在RMAN連接到恢復目錄和作為target連接到主數據庫后執行這個操作。
當連接到一個備數據庫時或使用CONFIGURE DB_UNIQUE_NAME來配置連接標識符時,一個新的備數據庫會自動被注冊到恢復目錄。
可以使用UNREGISTER DB_UNIQUE_NAME命令取消注冊關于指定的備數據庫的信息。當備數據庫從Oracle Data Guard環境中徹底地移除時,在連接到相同Oracle Data Guard環境中的另外的數據庫以后,在恢復目錄中的移除的數據庫信息也會被移除。與取消注冊的數據庫相關聯的備份仍然可以被其他數據庫使用。可以使用命令CHANGE BACKUP RESET
DB_UNIQUE_NAME關聯這些備份到其他存在的數據庫。
當使用命令UNREGISTER DB_UNIQUE_NAME和選項INCLUDING BACKUPS時,所有與取消注冊數據庫關聯的備份文件的元數據也從恢復目錄中取消注冊。
6.在Oracle Data Guard環境中報告
使用RMAN的LIST,REPORT,和SHOW命令與子語句FOR DB_UNIQUE_NAME一起查看關于某個特定數據庫的信息。
例如,在連接到恢復目錄后,可以使用下面的命令顯示DBID是1625818158的數據庫的信息和列出Oracle Data Guard環境中的數據庫。SET ID命令只有在沒有作為TARGET連接到數據庫時才需要。最后的3個命令列出歸檔日志,數據庫文件名稱,和DB_UNIQUE_NAME是BOSTON的數據庫RMAN配置信息。
SET DBID 1625818158;
LIST DB_UNIQUE_NAME OF DATABASE;
LIST ARCHIVELOG ALL FOR DB_UNIQUE_NAME BOSTON;
REPORT SCHEMA FOR DB_UNIQUE_NAME BOSTON;
SHOW ALL FOR DB_UNIQUE_NAME BOSTON;
7.在Oracle Data Guard環境中執行備份維護
Oracle Data Guard環境中的文件(數據文件,歸檔日志,恢復片,映像拷貝,和代理拷貝)通過使用DB_UNIQUE_NAME參數與數據庫關聯。
因此,在Oracle Data Guard環境中為每個數據庫提供的DB_UNIQUE_NAME值是唯一的,這是非常重要的。這個信息連同文件共享屬性一起,用來在各種RMAN操作中確定哪些文件可以被訪問。
文件共享屬性規定在磁盤上的文件只可以在與它們關聯的數據庫上訪問,而在磁帶上的文件認為可以被所有數據庫訪問。RMAN命令例如BACKUP和 RESTORE,同其它維護命令一樣,按照這個假設工作。例如,在數據庫的映像拷貝向前滾動的操作中,只有與數據庫關聯的映像拷貝才向前滾動。與數據庫關聯的在磁盤上的增量備份和在磁帶上的增量備份用來向前滾動映像拷貝。類似地,在恢復操作中,只有與數據庫關聯的磁盤備份和磁帶上的文件會被視為備份源。
7.1. 更改恢復目錄的元數據
RMAN的CHANGE命令可以與各種操作對象一起用來更改恢復目錄中的元數據。
例如:
1)更改文件的關聯從一個備數據庫到另外一個數據庫
使用CHANGE命令和RESET DB_UNIQUE_NAME選項一起來更改文件的關聯性,從一個數據庫到Oracle Data Guard環境中的另外一個數據庫。當磁盤備份或歸檔日志從一個數據庫被傳輸到另外一個數據庫,你想在傳輸到的數據庫上使用它們時,CHANGE命令是有用的。CHANGE命令也可以更改文件的關聯性從一個數據庫到另外一個數據庫,而不用直接連接到其中一個數據庫,使用FOR DB_UNIQUE_NAME和RESET DB_UNIQUE_NAME TO選項即可。
2)更改數據庫的初始化參數DB_UNIQUE_NAME
如果數據庫的DB_UNIQUE_NAME初始化參數的值進行了更改,那么相同的更改必須在Oracle Data Guard環境中進行。RMAN恢復目錄,在連接到數據庫實例后,知道DB_UNIQUE_NAME的舊值和新值。為了合并恢復目錄模式中的舊值和新值的信息,必須使用RMAN CHANGE DB_UNIQUE_NAME命令。如果數據庫的DB_UNIQUE_NAME初始化參數的值進行了更改,相同的更改必須在RMAN中進行,這樣它就會覺察到新的DB_UNIQUE_NAME。例如,執行以下步驟來更改數據庫BOSTON_A的DB_UNIQUE_NAME到BOSTON_B:
a. 在初始化參數文件或SQL中,更改初始化參數DB_UNIQUE_NAME從BOSTON_A到 BOSTON_B。
b. 在RMAN中,作為target連接到Oracle Data Guard環境中的任何一個數據庫和連接到恢復目錄。然后執行以下CHANGE命令:
CHANGE DB_UNIQUE_NAME FROM BOSTON_A TO BOSTON_B;
3)使備份不可用或刪除它們的元數據
使用CHANGE命令選項例如AVAILABLE,UNAVAILABLE,KEEP,和UNCATALOG來使備份對還原和恢復可用或不可用,和保留和刪除它們的元數據。
7.2. 刪除歸檔日志或備份
使用RMAN的DELETE命令刪除備份集,映像拷貝,歸檔日志或代理拷貝。
為了只刪除與指定數據庫相關的文件,必須讓FOR DB_UNIQUE_NAME選項和DELETE命令一起使用。
與當前target數據庫關聯的所有成功被刪除文件(或與任何已知的數據庫關聯的文件)的元數據也被刪除。如果文件不能被成功刪除,可以使用FORCE選項來移除文件的元數據。
當與另外一個數據庫關聯的文件成功被刪除時,它在恢復目錄中的元數據也被刪除。任何與其它數據庫關聯的文件,和不能成功被刪除的文件,與讓你在與文件相關聯的數據庫(文件使用數據庫分組)上執行相同操作的指令一起,列在DELETE命令完成的輸出中。FORCE選項不能用來覆蓋這種行為。如果你確認刪除不能刪除的文件的元數據不會導致問題,可以使用CHANGE RESET DB_UNIQUE_NAME命令來更改文件與數據庫的關聯關系的元數據和使用DELETE命令與FORCE選項來刪除文件的元數據。
7.3. 驗證恢復目錄元數據
使用CROSSCHECK命令來驗證和更新恢復目錄模式中的文件狀態。
與當前target數據庫關聯的所有文件(或任何不與數據庫關聯的文件)的元數據,根據CROSSCHECK操作的結果被標記為AVAILABLE或EXPIRED。
如果與另外一個數據庫關聯的文件被成功檢驗,它在恢復目錄的元數據也更改為AVAILABLE。任何與其它數據庫關聯的文件,和不能成功檢驗的文件,與讓你在與文件相關聯的數據庫(文件使用站點分組)上執行相同操作的指令一起,列在CROSSCHECK命令完成的輸出中。如果你確認配置和仍然想更改不可用的文件的狀態元數據,可以使用CHANGE RESET DB_UNIQUE_NAME命令來更改文件與數據庫的關聯關系的元數據和執行CROSSCHECK命令來更新狀態元數據到EXPIRED。
8.Oracle Data Guard環境中的恢復場景
8.1. 在主或備數據庫上恢復丟失的文件
可以通過連接到含有要求文件的物理備數據庫,經過網絡來還原和恢復文件。
當想還原主數據庫丟失的數據文件,控制文件或表空間時,使用物理備數據庫上相應的文件是很有用的。也可以使用相同的步驟通過使用主數據庫來還原物理備數據庫上的文件。
注:在Oracle數據庫12c版本之前,為了恢復主數據庫丟失的文件,使用RMAN恢復目錄,和RMAN BACKUP,CATALOG DATAFILE,和SWITCH DATAFILE命令。為了恢復備數據庫丟失的文件,使用RESTORE和RECOVER命令。從Oracle數據庫12c版本開始,這些方法不再是必要的。如果需要使用它們的信息,參考Oracle數據庫11g文檔。
8.2. 恢復丟失的在線redo日志文件
如果當前活動組的所有在線日志成員或還沒有歸檔的非活動組丟失,那么必須fail over到備數據庫。
8.3. 主數據庫的不完整恢復
主數據庫的不完整恢復一般是在比如當數據庫邏輯損壞(被用戶或應用程序)或當表空間或數據文件意外從數據庫刪除的情況時做。
取決于備數據庫實例上的當前數據庫檢查點SCN,可以使用以下過程中的一個來執行主數據庫不完整的恢復。所有過程按優先排序,從花費最少時間的過程開始。
8.3.1. 使用閃回數據庫
當閃回數據庫功能在主數據庫上啟用時,使用閃回數據庫是推薦的步驟,沒有數據庫文件丟失,恢復時間點大于最舊的閃回SCN或最舊的閃回時間。參考“閃回物理備數據庫到指定時間點”章節進行恢復。
8.3.2. 使用備數據庫實例
當備數據庫在期望的不完整恢復時間的后面和閃回數據庫沒有在主備數據庫上啟用時,這是推薦的步驟。
1)恢復備數據庫到期望的時間點。確保在執行以下命令前停止管理redo進程(MPR):
RECOVER DATABASE UNTIL TIME ‘time’
或者,不完整的恢復時間可以使用SCN或日志序列號來指定:
RECOVER DATABASE UNTIL SCN ‘incomplete recovery SCN’;
RECOVER DATABASE UNTIL LOGSEQ ‘incomplete recovery log sequence number’ THREAD
‘thread number’;
2)以只讀模式打開備數據庫來驗證數據庫的狀態。
如果狀態不是期望的那樣,使用LogMiner工具來查看歸檔redo日志文件,找到不完整恢復期望的正確的目標時間或SCN。
或者,可以開始恢復備數據庫到已知的在目標時間之前的時間點,然后以只讀模式打開數據庫來檢查數據的狀態。重復這個過程直到數據庫的狀態證明是正確的。如果恢復數據庫太遠(超過錯誤發生時的SCN),可以返回到更早的SCN。
3)使用SQL ALTER DATABASE ACTIVATE STANDBY DATABASE語句來激活備數據庫。這將轉換備數據庫到主數據庫,創建一個新的resetlogs分支,和打開數據庫。
8.3.3. 使用主數據庫實例
如果所有的備數據庫實例已經恢復到超過期望的時間點和備數據庫功能沒有在主備數據庫上啟用,那么這是唯一的選項。
使用以下步驟來在主數據庫上執行不完整的恢復。
1)使用LogMiner或其他方式來確認數據庫的所有數據是好的時間點或SCN
2)使用時間點或SCN,執行以下RMAN命令來做不完整的恢復和使用RESETLOGS選項來打開數據庫(在連接到catalog數據庫和在MOUNT狀態的主數據庫實例后):
RUN
{
SET UNTIL TIME ‘time’;
RESTORE DATABASE;
RECOVER DATABASE;
}
ALTER DATABASE OPEN RESETLOGS;
在這個過程后,所有備數據庫實例必須在Oracle Data Guard環境中重建。
8.4. 在主數據庫TSPITR或表空間插入后在備數據庫上需要的操作
在RMAN表空間時間點恢復(tablespace point-in-time recovery)在主數據庫上執行之后,
恢復的數據文件有一個新的SCN(system change number),因此在主數據庫上像新數據文件一樣被對待。
這些數據文件不能自動在備數據庫上創建。類似地,當新插入的表空間添加到主數據庫時,數據文件在主數據庫上像新數據文件一樣被對待。
當Redo Apply進程遇到這些新文件的創建時,備數據庫上的管理redo進程(managed redo process,MPR)會停止。這些要求的新數據文件必須拷貝和恢復到備數據庫。可以使用備份或直接從主數據庫拷貝來完成。例如,拷貝屬于執行過RMAN時間點恢復的表空間的所有文件,可以使用以下命令:
RMAN> RESTORE TABLESPACE <tbs_name1, tbs_name2> FROM SERVICE
磁盤通道的數量根據RMAN配置來分配。因此,如果執行了CONFIGURE DEVICE TYPE DISK PARALLELISM 4,那么4個磁盤通道會用來從主數據庫拉取文件。
當新的數據文件在備數據庫上可用時,重啟MRP來繼續應用日志。
9.額外的備份情況
可以為其他配置修改備份步驟,比如當備數據庫和主數據庫不能共享備份文件;備數據庫實例只用來遠程歸檔redo日志文件;或備數據庫文件名稱與主數據庫不同。
9.1. 備數據庫地理上太遠而不能共享備份
如果備數據庫互相之間離得很遠,那么在它們上的備份可能不容易被主系統或其它備系統訪問。
在所有系統上執行數據庫的完整備份來執行恢復操作。快速恢復區域可以駐留在主備系統的本地,它不需要在主備數據庫上相同。
在這個場景中,仍然可以使用上一章節中描述的一般的策略,包含以下例外:
1)由RMAN創建的備份文件必須使用本地系統名稱標記,RESTORE操作時標記必須用來限制RMAN選擇在相同主機上取得的備份。換句話說,當創建備份時BACKUP命令必須使用TAG系統名稱選項;RESTORE命令必須使用FROM TAG系統名稱選項;RECOVER命令必須使用FROM TAG系統名稱和ARCHIVELOG TAG系統名稱選項。
2)備站點的災難恢復:
a. 使用與備數據庫之前操作相同的參數文件以NONMOUNT模式啟動備數據庫實例。
b. 在主實例上使用SQL語句ALTER DATABASE CREATE STANDBY CONTROLFILE AS filename創建備控制文件,使用創建的控制文件來掛載備數據庫實例。
f. 執行以下RMAN命令來還原和恢復數據庫文件:
RESTORE DATABASE FROM TAG ‘system name’;
RECOVER DATABASE FROM TAG ‘system name’ ARCHIVELOG TAG ‘system name’;
g. 重啟Redo Apply。
備實例獲取剩余的歸檔redo日志文件。
9.2. 備數據庫與主數據庫的文件名稱不同
從Oracle數據庫11g開始,恢復目錄可以從每個備數據庫站點重新同步文件名稱。
然而,如果數據庫文件名稱在主備數據庫上不同,從來沒有重新同步過,那么使用的RESTORE和RECOVER命令會有一點不同。為了獲取備數據庫實際的數據文件名稱,查詢視圖V$DATAFILE和為數據庫的所有數據文件指定SET NEWNAME選項:
RUN
{
SET NEWNAME FOR DATAFILE 1 TO ‘existing file location for file#1 from V$DATAFILE’;
SET NEWNAME FOR DATAFILE 2 TO ‘existing file location for file#2 from V$DATAFILE’;
……
SET NEWNAME FOR DATAFILE n TO ‘existing file location for file#n from V$DATAFILE’;
RESTORE {DATAFILE <n,m,…> | TABLESPACE tbs_name_1, 2, …| DATABASE;
SWITCH DATAFILE ALL;
RECOVER DATABASE {NOREDO};
}
類似地,使用RMAN DUPLICATE命令的SET NEWNAME選項在創建備數據庫的過程中來指定新的文件名稱。或可以設置LOG_FILE_NAME_CONVERT和DB_FILE_NAME_CONVERT參數。
10.通過網絡還原和恢復文件
從Oracle數據庫12c開始,RMAN讓你可以通過網絡連接到包含必需的文件的物理備數據庫來還原和恢復文件。
可以還原整個數據庫,數據文件,控制文件,spfile,或表空間。通過網絡還原文件在需要同步主備數據庫的場景中是非常有用的。
RMAN通過網絡從物理備數據庫還原數據庫文件,使用RESTORE命令的子語句FROM SERVICE。子語句提供從哪里還原文件的物理備數據庫的服務名稱。在還原操作中,RMAN在物理備數據庫上創建需要還原的文件的備份集,然后通過網絡傳輸這些備份集到目標數據庫。
注:在Oracle數據庫12c以前的版本中,使用RMAN BACKUP INCREMENTAL FROM SCN命令來在主數據庫上創建從備數據庫當前SCN開始的備份,然后用來在時間上向前滾動備數據庫。
11.使用命令向前滾動備數據庫
從Oracle數據庫18c開始,可以使用RMAN命令RECOVER STANDBY DATABASE通過網絡刷新備數據庫。
RECOVER STANDBY DATABASE命令重啟備數據庫實例,從主數據庫刷新控制文件,自動重命名數據文件,臨時文件和在線日志。它還原添加到主數據庫的新數據文件和恢復備數據庫到當前時間。
當使用RECOVER STANDBY DATABASE命令刷新備數據庫時,指定FROM SERVICE子語句或者NOREDO子語句。FROM SERVICE子語句指定主數據庫的名稱。NOREDO子語句指定備份應該被使用來刷新,允許備數據庫向前滾動到指定的時間或SCN。
在嘗試與主數據庫同步前,必須手動在備數據庫上停止MRP進程。
下面的示例使用RECOVER STANDBY DATABASE命令。它顯示可選的PFILE子語句來為備數據庫指定參數文件(當spfile不可用時使用)。
RECOVER STANDBY DATABASE FROM SERVICE service_name PFILE=pfile_location;
來源:《Oracle Database Backup and Recovery User’s Guide,19c》
總結
以上是生活随笔為你收集整理的在Oracle Data Guard环境中的RMAN备份和还原的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c 中空格的asc码表_泰格豪雅卡莱拉系
- 下一篇: 运筹学_大M法_week4