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