Oracle資料庫的備份方法-冷備份(轉)

BSDLite發表於2007-08-16
Oracle資料庫的備份方法-冷備份(轉)[@more@]冷備份是Oracle最簡單的一種備份;執行冷備份前必須關閉資料庫;然後使用作業系統實用工具或者第三方工具備份所有相關的資料庫檔案。
能簡單快速地備份。能簡單快速地恢復。執行簡單。
必須關閉資料庫。

不能進行點恢復。

熱備份
熱備份是當資料庫正在執行時進行資料備份的過程。執行熱備份的前提是:資料庫執行在可歸檔日誌模式。適用於24X7不間斷執行的關鍵應用系統。
備份時資料庫可以是開啟的。熱備份可以用來進行點恢復。初始化引數檔案、歸檔日誌在資料庫正常執行時是關閉的,可用作業系統命令複製。
執行過程複雜。由於資料庫不間斷執行,測試比較困難。不能用作業系統實用工具複製開啟的檔案。必須使用Oracle提供的ocopy工具來複製開啟的檔案。熱備份可能造成CPU、I/O過載,應在資料庫不太忙時進行。

Export匯出資料庫物件
冷備份和熱備份都備份物理資料庫檔案,因而被稱為物理備份。而export備份的是資料庫物件,因此被稱為邏輯備份。
能執行物件或者行恢復。備份和恢復速度更快。能夠跨作業系統平臺遷移資料庫。資料庫可一直執行。
export並不是冷備份和熱備份的替代工具。冷、熱備份可保護介質失效。export備份可保護使用者或應用錯誤。


3、冷備份方案的實施
3.1 冷備份資料庫的步驟
(1)關閉資料庫;
(2)備份所有相關的資料庫檔案:初始化引數檔案、控制檔案(可用select name from v$controlfile;列出所有控制檔案)、資料檔案(可用select name from v$datafile;列出所有資料檔案)、Redo日誌(可用select member from v$logfile;列出所有redo日誌檔案)、歸檔的Redo日誌(可用select sequence#,first_time from v$loghist;列出所有歸檔redo日誌檔案的順序號和產生時間)。
3.2 冷備份資料庫的指令碼檔案coldbak.cmd
rem Oracle資料庫冷備份指令碼檔名coldbak.cmd
rem 用於Windows NT/2000 平臺,已經過嚴密的測試,大家可以試驗!!!
rem 該指令碼執行後,在c: emp目錄中產生db_restrict.sql、db_shut.sql、db_start.sql、
rem cold.sql、cold.cmd等5個指令碼檔案,冷備份的核心命令在cold.cmd中。
rem 設定SID
set oracle_sid=tmq
rem 設定初始化引數檔案
set my_pfile=e:oracleora81databaseinittmq.ora
set my_ifile=E:OracleADMIN mqpfileinit.ora
rem 設定歸檔日誌目錄
set my_archive_dir=E:OracleORADATA mqarchive
rem 設定internal帳戶的密碼
set my_password=oracle
rem 建立臨時目錄
mkdir c: emp
set my_temp=c: emp
rem 建立備份目錄,該目錄必須有足夠大的空間用於存放資料庫的備份檔案
mkdir e:ackup
set my_bakdir=e:ackup
rem ==== (1) create script file db_restrict.sql=====
echo connect internal/%my_password%; > %my_temp%db_restrict.sql
echo shutdown immediate; >> %my_temp%db_restrict.sql
echo startup restrict pfile=%my_pfile%; >>%my_temp%db_restrict.sql
echo exit >> %my_temp%db_restrict.sql
rem ==== (2) create script file db_shut.sql =====
echo connect internal/%my_password%; >%my_temp%db_shut.sql
echo shutdown immediate; >>%my_temp%db_shut.sql
echo exit >>%my_temp%db_shut.sql
rem ==== (3) create script file db_start.sql =====
echo connect internal/%my_password%; >%my_temp%db_start.sql
echo startup pfile=%my_pfile%; >>%my_temp%db_start.sql
echo exit >>%my_temp%db_start.sql
svrmgrl @%my_temp%db_restrict.sql
rem ==== (4) create script file cold.sql =====
echo set heading off; >%my_temp%cold.sql
echo set feedback off; >>%my_temp%cold.sql
echo spool %my_temp%cold.cmd; >>%my_temp%cold.sql
echo 在這裡設計冷備份的命令,備份控制檔案、資料檔案和日誌檔案
echo select 'copy ' ^|^| name ^|^| ' %my_bakdir%' from v$controlfile; >>%my_temp%cold.sql
echo select 'copy ' ^|^| member ^|^| ' %my_bakdir%' from v$logfile; >>%my_temp%cold.sql
echo select 'copy ' ^|^| file_name ^|^| ' %my_bakdir%' from dba_data_files; >>%my_temp%cold.sql
echo spool off; >>%my_temp%cold.sql
echo exit >>%my_temp%cold.sql
rem ===== (5) run cold.sql to genrate cold.cmd ========
sqlplus internal/%my_password% @%my_temp%cold.sql
echo 在這裡設計冷備份的命令,備份引數檔案、歸檔日誌檔案
echo. >> %my_temp%cold.cmd
echo copy %my_pfile% %my_bakdir% >> %my_temp%cold.cmd
echo copy %my_ifile% %my_bakdir% >> %my_temp%cold.cmd
echo. >> %my_temp%cold.cmd
echo copy %my_archive_dir%*.* %my_bakdir% >> %my_temp%cold.cmd
rem ===== shut down database ========
svrmgrl @%my_temp%db_shut.sql
rem ====== run cold.cmd to perform the cold backup 開始執行冷備份 ======
call %my_temp%cold.cmd
rem ====== start up the database =======
svrmgrl @%my_temp%db_start.sql
echo ===== the cold backup is completed!!! ======

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-962366/,如需轉載,請註明出處,否則將追究法律責任。

相關文章