天天看點

冷備份與冷恢複(續)

冷備份一般是運作在noarchiving log 模式,一般需要備份的檔案是資料檔案和控制檔案。備份方式就是關閉資料庫,使資料庫中的資料處在一緻狀态,然後對相關檔案進行實體拷貝。

在dba_data_files中查找資料檔案,在v$controlfile中查找控制檔案。

備份好之後打開資料庫即可。

 當然在noarchiving log模式下,也隻能進行脫機恢複(即冷恢複),雖然這種方法會丢失資料(重做日志裡的檔案沒有備份,每次循環寫的時候都會把沒有備份的檔案進行備份),但是操作很簡單友善。恢複時隻需要把資料庫關閉,然後将備份的檔案拷貝到原來的位置即可(這樣的恢複就像恢複作業系統一樣,在備份之後的資料都将不複存在)

rem 冷備份的腳本舉例

rem 登入

conn system/admin as sysdba

rem 關閉資料庫

shutdown immediate

rem 實體拷貝需要備份的檔案(這裡隻拷貝了兩個)

host copy E:\oracle\product\10.2.0\oradata\orcl\control01.ctl e:\backup_test\

host copy E:\oracle\product\10.2.0\oradata\orcl\users01.dbf  e:\backup_test\

rem 拷貝完之後重新開機

startup

恢複時關閉資料庫然後把相應檔案複制到相應目錄即可,但是有時候會出現硬碟損壞的情況,這個時候源目錄肯定就不能用了,是以,這個時候就要把備份檔案拷貝到另外一個硬碟上,最好在上面建立一個一樣的目錄。然後把資料庫啟動到mount狀态,用alter  datababse 指令修改控制檔案,使損壞的檔案目錄指定到另外一個地方。

例如:alter database rename file 'E:\oracle\product\10.2.0\oradata\orcl\users01.dbf' to 'F:\oracle\product\10.2.0\oradata\orcl\users01.dbf'

然後修改資料庫狀态到打開狀态

把上面這段代碼寫成一個腳本檔案放在一個目錄下,之後在sql*plus下(不要登入),用@指令執行那個檔案,這樣就可以進行自動的冷備份了。