Oracle 聯機備份 離線備份 物理備份 恢復

迎著太陽走向遠方發表於2017-03-27
1.備份
指的是擁有資料庫檔案的有效副本,可以將資料庫恢復到初始狀態。在oralce資料庫中,存在多種可以用來實現資料庫檔案備份的方法。

2.恢復
指的是將資料庫返回到需要的狀態,在某些狀態下,資料的一些資料可能丟失或者破壞,那麼DBA就需要將資料庫重新設定或恢復到以前的某個時刻,這個時刻的資料是完整的正確的。

3.使用者管理的備份和恢復是指不使用備份和恢復工具,只是通過作業系統的命令或者SQL語句進行操作

4.備份的分類
邏輯備份物理備份
匯出方式離線備份(冷備份)聯機備份(熱備份)
優點能夠針對物件進行備份:能夠通過跨平臺實施備份並遷移資料庫,而不需要關閉資料庫備份和恢復迅速,容易達到低維護,高安全性,執行效率高備份時間短:備份是資料庫仍可用,可達到秒級恢復,對於幾乎所有資料物件都可以恢復
缺點匯出方式並不能保證介質失效,僅僅是邏輯上的備份只能提供的到某一時間點的恢復,不能按表和使用者恢復,必須關閉資料庫實現過程比較複雜,需要較大的空間存放歸檔檔案,操作時候不允許失敗,否則恢復不能進行
時機一般使用者有規律的日常備份資料庫可以暫時關閉,或者需要和聯機備份配合使用資料訪問量小,需要實現表空間或者資料庫檔案級的備份,或者選喲更高精確備份時


5.物理備份
是將資料庫的資料檔案,重做日誌檔案和控制檔案等,在作業系統中進行復制,這些備份也稱作“檔案系統備份”因為涉及到使用作業系統檔案目錄。
物理備份可以實現資料庫的完整備份,但是資料庫必須執行在歸檔模式下。
可以使用RMAN實用程式來執行所有的物理備份。


6.物理備份的種類
1.完全資料離線備份:使用shutdown命令正常關閉資料時(也就是說不是由於資料庫例項失效而關閉)會發生一致的離線備份。完全資料庫離線備份是對資料中的全部資料檔案,日誌檔案,控制檔案。在資料庫關閉的情況下進行作業系統備份
2.部分資料庫離線備份:可以在資料庫關閉和執行時進行,將部分表空間切換到離線狀態後,將對應的資料檔案進行備份。
3.部分資料聯機備份:聯機備份是在資料庫正常執行時進行的,備份期間不會影響使用者使用。部分資料庫聯機備份包括部分表空間、控制檔案、資料檔案和歸檔日誌檔案的備份,與完全資料庫離線備份相比,減少了備份的工作量。


7.物理備份的口令
檔案型別備份命令示例
資料檔案 作業系統命令 COPY c:\datafile1.dbf d:\datafile1.dbf,表示將目錄c:\的datafile1.dbf檔案複製到d:\目錄下
日誌檔案作業系統命令COPY c:\logfile1.log d:\logfile1.log,表示將目錄c:\的logfile1.log檔案複製到目錄d:\下
控制檔案SQL命令ALTER DATABASE BACKUP CONTROLFILE TO confile1.ctl
初始化引數檔案SQL命令CREATE PFILE SIDinit.ora FROM SPFLE
資料庫邏輯物件(表、索引等)Export命令Export system/password


8.完全資料庫離線備份
sqlplus-->conn sys/dba as sysdba //登入
select file_name,bytes form dba_data_files; //oracle所有的資料檔案
select member from v$logfile; //oralce 的日誌檔案
select name from v$controlfile; //oracle 的控制檔案
shutdown immediate;//關閉資料庫
win+r  cmd
copy E:\app\admin|oradata\control01.ctl e:\app\backup\contro01.ctl //複製上面查詢出來的所有資料檔案,日誌檔案,控制檔案。 
startup //啟動資料庫例項
//完畢


9.部分資料庫離線備份
//注意1:不能將system表空間執行這種操作。由於system表空間包含資料庫的字典,而資料庫儲存了與資料庫物件有關的所有資訊。如果system表空間離線,那麼將無法識別任何資料物件,如 表,索引等
//注意2:模式物件不能跨表空間儲存。例如:表 table1儲存在tablespace1中,但是該表的一個索引儲存在tablespace2中。如果表空間tablespace2被設定為離線,沒有對錶空間tablespace1進行離線設定。這時候,使用者對錶table1執行查詢,並且需要索引時候,就發生了異常。要避免上述錯誤,可以將tablespac1也設定成離線狀態 或 對錶 tabel1不進行任何DML操作。
select tablespace_name from dba_tablespaces; //oralce 所有的表空間 --不能system哦
//對其中的某個tablespace進行備份
select tablespace_name,file_name from dba_data_file where tablespace_name='TESTSPACE'; // 顯示這個表空間的資料檔案
alter TABLESPACE testspace OFFLINE; //使 testpace表空 離線
win+r cmd  copy file_name  tofilename; //備份 上面表空間中的資料檔案 file_name 上面查詢出來的
alter TABLESPACE testspace online;


10.部分資料庫的聯機備份
//聯機備份是在資料庫開啟的狀態下進行的,在進行聯機備份的同時,資料庫仍然可以訪問,使用者有可能對資料進行修改和刪除等操作,從而使得資料庫檔案之間存在不同步。在備份檔案複製回資料庫時,需要實施資料庫恢復,所以這種方式只可以在歸檔模式下使用,在複製回備份檔案後,必須使用歸檔日誌進行資料庫恢復。在進行部分資料庫聯機備份時,可以對一個指定表空間的所有資料檔案進行備份,也可以對錶空間中的某一個資料檔案進行備份。
archive log list; //設定日誌模式為 歸檔模式
alter TABLESPACE testspace begin backup; //將開始執行備份操作
select a.file#,a.checkpoint_change#,b.file_Name form b$datafile a,dba_data_files b where a.filed#=b.file_id; //可以看出 tablesapce下的所有資料檔案 的檢測點號為停止狀態,其他檔案的檢測點好為正在進行的
shutdown immediate;//此步驟 不需要。如果此時關閉資料庫 會報錯 無法關閉, 檔案xx設定了聯機備份。
win+r cmd copy file_name tofilename; //對tablespace的所有資料檔案進行備份
alter TABLESPACE testspace end backup;//結束聯機備份。 中間間隔時間最好短,對資料庫效能有影響。

11.使用者管理的完全恢復機制
使用者管理的完全恢復是指當資料檔案出現介質失敗時,使用作業系統命令轉儲資料檔案,並使用SQL恢復命令執行重做日誌和歸檔日誌,最終將資料檔案恢復到失敗點之前的狀態。對資料庫進行完全恢復大致分為以下兩個步驟:
(1)當發生介質故障後,利用備份檔案來修復損壞或丟失的資料檔案。
(2)修復資料檔案後,因為被修復的資料檔案與其他資料檔案相比要
“舊”,所以這時資料庫中的資料檔案並不同步(檔案頭部資訊中的檢查點號
SCN不同)。由於資料檔案之間不一致,資料庫仍然無法開啟,這時就需
要通過SQL命令,使用歸檔日誌對資料庫進行恢復。
完全資料庫恢復的命令如下:
RECOVER DATABASE;//用於恢復資料庫的多個資料檔案,該命令只能在MOUNT狀態下使用。
RECOVER TABLESPACE;//用於恢復一個或多個表空間的所有資料檔案,該命令只能在OPEN狀態下執行。
RECOVER DATAFILE;//用於恢復一個或多個資料檔案,該命令可以在MOUNT狀態和OPEN狀態下執行。
//同時,可以指定資料檔案的名稱和資料檔案的編號。例如:
recover datafile 4;
//也可以在RECOVER命令中指定歸檔日誌位置,如下:recover from 'f:\oracle11g\orcl0025_069817.001' datafile 4;
//也可以在RECOVER命令中指定自動應用歸檔日誌,如下:
recover automatic datafile 4;

12.不完全恢復機制
1.基於時間的恢復,也可以稱為時間點恢復,它將資料庫中已經提交的事務恢復到某個時間點為止。基於時間的不完全恢復過程中,對資料庫檔案應用日誌記錄時,將以時間為標記。

//例如,當使用者執行了某個錯誤操作後,立即意識到該操作是錯誤的,並及時通知了DBA,則DBA根據使用者指定的時間,將資料庫恢復到該時間之前的狀態。
基於時間的不完全恢復使用的語句如下:
RECOVER DATABASE UNTIL TIME time;
如果控制檔案是利用備份修改的,那麼必須在RECOVER語句中使用
USING BACKUP CONTROLFILE子句,如下:
RECOVER DATABASE UNTIL TIME time USING BACKUP CONTROLFILE;
例如:recover database until time '2009-07-10 10:35:58';

2.基於撤銷的不完全恢復:在進行基於撤銷的不完全恢復過程中,DBA需要對恢復過程進行控制,在某一個恢復點可撤銷指定的操作。
//例如:當一個或多個聯機日誌檔案由於介質故障被破壞,不能實施完全資料庫恢復時,可以進行基於撤銷的恢復,將資料庫恢復到最近的、未破壞時的日誌檔案後中止恢復過程,資料庫將從這一點開始重新執行。
基於撤銷的恢復的使用語句如下:
RECOVER DATABASE UNTIL CANCEL; 
例如:recover database until cancel;

3.基於更改的恢復:最準確的恢復是基於更改的恢復,這種恢復方式使用SCN號資訊。如果DBA確定引發錯誤的事務分配的SCN號後,可以將資料庫恢復到該錯誤之間的事務。
基於更改的不完全恢復使用的語句如下:
RECOVER DATABASE UNTIL CHANGE scn_number;
例如:recover database until change 1074811;

相關文章