冷備份是資料庫檔案的物理備份,通常在資料庫通過一個shutdown normal或shutdown immediate 命令正常關閉後進行。當資料庫關閉時,其使用的各個檔案都可以進行備份。這些檔案構成一個資料庫關閉時的一個完整映像。
冷備份通常要備份以下檔案:
所有資料檔案
所有控制檔案
所有聯機重做日誌
初始化參數檔案initsid.ora(可選)
先執行以下SQL語句查看所有需要備份的檔案:
複製代碼 代碼如下:
SVRMGR> select * from v$datafile;
SVRMGR> select * from v$controlfile;
SVRMGR> select * from v$logfile;
記錄下所有的這些檔案的路徑和檔案名稱,同時連同初始化參數檔案一起備份到disk或tape。
資料庫在shutdown後,如何離線備份?
離線備份直接把物理檔案拷貝到一個位置就可以了,如果要在備份的位置啟動資料庫,寫一個新的init檔案,修改control檔案的位置,再執行下代碼
複製代碼 代碼如下:
SQL> startup mount
ORACLE instance started.
Total System Global Area 57124108 bytes
Fixed Size 70924 bytes
Variable Size 40198144 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database mounted.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: 'F:ORACLEORADATALHGSYSTEM01.DBF'
startup restrict 不行,因為控制檔案中log,data檔案位置沒有修改,無法open資料庫,需要啟動到mount狀態,修改之後再open.
物理備份的內容不需要做恢複
離線備份的注意事項
完全離線備份,又名冷備份。冷備份的存在是為了保護現場,防止我們恢複失敗時可以從頭開始。
我們知道,資料檔案是oracle向os預留的磁碟空間,如果我們規劃資料庫時,申請了50g,一開始oracle
可能只用了100M,我們冷備時所需的有效資料就更少了,或許只有5M,但我們還是得備份50g。
這便是冷備的缺點。
進行冷備時可能出現備份不全或備份了垃圾資料的狀況。所以,我們務必以資料庫看到的為準。
通常,冷備的主要對象是datafile,controlfile和redo log file。我們可以藉助幾個視圖來瞧瞧
他們匿於何處。
於資料檔案:
複製代碼 代碼如下:
[sql]
SQL> select file_name from dba_data_files;
www.jb51.net
FILE_NAME
------------------------------------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_8050fkdh_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_8050fk3w_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_8050fkc6_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_8050fk2z_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_example_8050jhm7_.dbf
於控制檔案:
[sql]
SQL> select name from v$controlfile;
NAME
------------------------------------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/controlfile/o1_mf_8050hgfp_.ctl
/u01/app/oracle/flash_recovery_area/ORCL/controlfile/o1_mf_8050hgqh_.ctl
於記錄檔:
[html]
SQL> select member from v$logfile;
MEMBER
------------------------------------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_3_8050hq4s_.log
/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_3_8050hs2h_.log
/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_2_8050hm84_.log
/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_2_8050ho5o_.log
/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_8050hhn1_.log
/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_1_8050hkdv_.log
為了縮短備份時間和節省磁碟空間,通常,我們可以做如下微調:
1)查看當前被oracle 啟用的undo,這個undo將作為冷備的一員。
複製代碼 代碼如下:
[html]
SQL> show parameter undo
www.jb51.net
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
2)對於temp臨時檔案,我們可以不必備份,因為,oracle在開機時,不會檢查臨時檔案。
3)對於控制檔案,存在多路鏡像,我們可以只備份其中之一。
完成了上面的幾點友情提醒後,我們就可以開始把執行個體給關了,開始作冷備。
[sql]
shutdown immediate