Oracle總覆盤(3)—— 高階管理
一、RMAN概述
RMAN屬於物理備份,區別於邏輯備份(資料泵)。RMAN可以做到基於時間點的恢復,恢復到指定的時刻,而邏輯備份無法實現。
RMAN中的備份資訊,都是從控制檔案中讀取的。
歸檔模式下,RMAN既可以冷備,也可以熱備;非歸檔模式下,RMAN只能冷備。
二、在歸檔和非歸檔模式下備份資料庫,一致性備份與非一致性備份的概念
1、一致性備份
資料庫一致性備份是指關閉了資料庫後備份所有資料檔案和控制檔案的方法。
當使用SHUTDOWN 命令正常關閉了資料庫之後,所有資料庫檔案的當前SCN 值完全一致,所以關閉後的資料庫備份被稱為資料庫一致性備份或者冷備份。
資料庫一致性備份既適用於ARCHIVELOG 也適用於NOARCHIVELOG
2、非一致性備份
資料庫非一致性備份是指在OPEN 狀態下備份資料庫所有資料檔案和控制檔案的方法。
因為在OPEN 狀態下資料庫內容隨時都會改變,從而導致不同資料庫檔案的當前SCN值完全不同,所以開啟時的資料庫備份被稱為資料庫非一致性備份。進行資料庫一致性備份會中斷業務操作。而資料庫非一致性備份不會影響業務操作,因此建議你在實際環境中應該使用資料庫非一致性備份。
資料庫非一致性備份只適用於ARCHIVELOG模式
三、list和report命令
3.1 常用的list命令
list backup或list backupset # 列出所有備份資訊
list backupset of datafile 1 # 列出包含資料檔案datafile 1的備份資訊
list backupset of tablespace users # 列出包含users表空間的備份資訊
list backupset 8 # 單獨檢視編號為8的備份集;
list backup tag 'xxxxxx' # 檢視標籤為xxx的備份集資訊
list archivelog all # 檢視歸檔備份資訊
3.2 常用的report命令
report命令用於判斷資料庫的當前可恢復狀態和提供資料庫備份的特定資訊。
- 檢視資料庫的組成結構——report schema
- 報告需要備份的檔案——report need backup
- 在那些檔案上執行了不可恢復的操作——report unrecoverable
- 檢視三天未備份的檔案:report need backup days 3;
- 檢視備份次數少於2次的檔案:report need backup redundancy 2;
- 列出需要備份的表空間:report need backup tablespace;
- 列出system表空間需要備份的檔案:report need backup tablespace system;
- 列出違反保留策略的備份集:report obsolete; (使用show all檢視保留策略)
四、backup命令與備份示例
4.0 備份集與備份片
備份集是Oracle預設的備份型別。把資料檔案中已經使用過的資料塊備份到一個或多個檔案中,這樣的檔案叫做“備份片”,所有備份出來的檔案組合成為“備份集”。
備份集與備份片的關係類似於表空間與資料檔案的關係,備份集是一個邏輯概念,將備份片(物理檔案)邏輯地組織在一起。
4.1 冷備
冷備份可以是shutdown狀態下基於作業系統的cp等命令的拷貝備份,也可以是處於mount狀態下的基於rman工具的備份。
1. 停機cp
1.獲取資料檔案路徑:select FILE_NAME from dba_data_files; 或 select NAME from v$dbfile;
2.獲取控制檔案路徑:select NAME from v$controlfile
3.查詢日誌檔案路徑:select MEMBER from v$logfile;
4.查詢引數檔案路徑:show parameter spfile;
5.shutdown immediate;
6.複製四類檔案即備份成功。
2.RMAN冷備(非歸檔模式下的備份)
①確定當前模式:非歸檔
select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
② 進入RMAN備份資料庫
rman target /
backup database
報錯:cannot backup or copy active file in NOARCHIVELOG mode;無法在非歸檔模式下備份資料庫;
此時資料庫處於open狀態,需要將資料庫置為mount狀態;因為在非歸檔模式下,RMAN只能進行冷備。
shutdown immediate;
startup mount;
③ 備份到指定的位置
backup tag 'full_db_bk' format '/data/backup/db_%U' database;
4.2 熱備(歸檔模式下備份資料庫)
全庫備份:open狀態下可以直接執行backup database 命令
backup format '/data/backup/hot_db_bk' database;
執行全庫備份+歸檔日誌檔案備份
backup format '/data/backup/hot_db_bk_%U' database plus archivelog;
遇到問題:expected archived log not found, loss of archived log compromises recoverability
原因:之前手動刪除過歸檔日誌檔案,但是controlfile中還記錄著歸檔日誌資訊,oracle還會去找這些歸檔日誌檔案,因此就會報錯。
解決方法:使控制檔案中的歸檔日誌資訊和實際物理檔案資訊保持一致;
1. crosscheck archivelog all; 此命令用來檢查控制檔案和實際物理檔案資訊的差異。
2. delete expired archivelog all; 刪除無效的歸檔日誌資訊,使檢查控制檔案和實際物理檔案資訊同步。
9.1備份引數檔案
backup spfile;
9.2 備份控制檔案
backup current controlfile;
自動備份控制檔案:自動備份開啟時,會在把資料檔案,日誌檔案,控制檔案,spfile等等都備份完了後,再自動備份一遍當前的控制檔案。
1. 開啟自動備份ctl檔案
CONFIGURE CONTROLFILE AUTOBACKUP ON;
2. 設定自動備份的儲存位置
configure controlfile autobackup format for device type disk to '/u01/backup/ctl_%F';
3. 清空設定
configure controlfile autobackup format for device type disk clear;
9.3備份歸檔日誌
backup archivelog all;
backup archivelog all delete all input; -- 會在完成備份後自動刪除歸檔目錄中已備份的歸檔日誌(即會產生一個歸檔日誌的備份檔案,但是歸檔日誌會被刪除)
9.4使用映像副本
映象副本與手工OS Copy備份資料檔案類似,是一個數據檔案生成一個映象副本檔案(資料庫資料檔案、歸檔重做日誌或者控制檔案的精確副本),不同的是這個過程由RMAN完成,RMAN複製的時候也是一個數據塊一個數據塊(Oacle block)的複製,同時預設檢測資料塊是否出現物理損壞(預設不會進行邏輯損壞檢查,需要手工啟動),且不需要將表空間置為begin backup狀態,和備份集型別不同在於生成的映象副本中包含使用過的資料塊,也包含從來沒有用過的資料塊 。
使用印象副本備份庫 backup as copy database;
備份單獨的資料檔案到指定路徑 backup as copy datafile 4 format '/u01/backup/user01.bak'