冷備份一般是運作在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下(不要登入),用@指令執行那個檔案,這樣就可以進行自動的冷備份了。