盡管很多時候數據庫系統運行緩慢,但對數據庫數據的丟失而言,顯然后者損失的代價是不言而喻的。因此DBA至少在保證數據不丟失的情況下來提高系統的性能是最起碼的要求
聯機數據庫備份
一旦數據庫運行在archivelog方式,在打開并對用戶可用時就可以進行備份。這一特性允許連續運轉的數據庫可以歸檔并能保證其恢復性。聯機熱備份應該安排在用戶活動最少的時間段進行。
聯機熱備份包括三個過程,即逐個表空間地備份數據文件、備份歸檔重做日志文件和備份控制文件。
1. 逐個表空間地備份數據文件
該過程又可以分為四個步驟,即查詢表空間包括哪些數據文件、設置表空間為備份狀態、備份表空間的數據文件、將表空間恢復到正常狀態。
(1) 查詢表空間包括哪些數據文件
執行命令select tablespace_name,file_name from dba_data_files可以獲得系統中所有數據文件以及其歸屬的表空間。
(2) 設置表空間為備份狀態
執行命令alter tablespace tablespace_name begin backup將表空間tablespace_name設置為備份狀態。
(3) 備份表空間的數據文件
執行操作系統的文件備份命令將表空間的數據文件備份。
(4) 將表空間恢復到正常狀態
執行命令alter tablespace tablespace_name end backup將表空間tablespace_name恢復到正常狀態。
2. 備份歸檔重做日志文件
該過程又可以分為三個步驟,即暫停歸檔進程ARCH、備份歸檔重做日志文件。
(1) 暫停歸檔進程ARCH
執行命令archive log stop暫停歸檔進程ARCH。
(2) 記錄歸檔目標目錄中已歸檔日志文件的列表
可以查詢V$LOG動態字典視圖。如果日志已完全歸檔, V$LOG的archived列將含有YES值。可以從V$LOG選擇最高的歸檔日志(使用sequence#列)并將其用作備份文件清單的基礎。例如,如果V$LOG表明sequence#2334是最后一個被歸檔的日志文件,就可以成功地備份歸檔重做日志目標目錄中所有序號在2334以下的文件。如果試圖備份2335,可以在操作系統級成功備份,但由于這個文件還沒有完全歸檔,這個備份可能只寫入一半,因而在恢復操作期間不可能有用。
(3) 重新啟動歸檔進程ARCH
執行命令archive log start啟動歸檔進程ARCH。
(4) 備份歸檔重做日志文件
執行操作系統的文件備份命令備份歸檔重作日志文件。
(5) 從歸檔目標目錄中刪除已經備份的歸檔日志文件
3. 備份控制文件
執行命令alter database backup controlfile to destinantion/control.bak進行在線備份控制文件。也可以執行alter database backup controlfile to trace將create controlfile的命令寫入到數據庫的跟蹤文件中
聯機熱備份失敗后,如何打開數據庫
因為表空間還處在熱備份狀態。
模擬現象及解決方法:
先將數據庫設置為歸檔模式
復制代碼 代碼如下:
C:>svrmgrl
svrmgrl>connect internal
svrmgrl>alter tablespace 表空間名 begin backup;
--表空間熱備模式沒結束就強行關閉數據庫,造成錯誤
svrmgrl>shutdown abort
svrmgrl>startup mount
--將此表空間的數據文件在沒打開數據庫時置成end backup模式
svrmgrl>alter database datafile '表空間的數據文件名' end backup;
--或執行表空間介質恢復
svrmgrl>recover tablespace 表空間名;
svrmgrl>alter database open;
您可能感興趣的文章:- asp.net 數據庫備份還原(sqlserver+access)
- 批處理寫的 oracle 數據庫備份還原工具
- mysql數據庫備份及恢復命令 mysqldump,source的用法
- Linux中Oracle數據庫備份
- c實現linux下的數據庫備份