河南省新鄉市電信局
靳雲旭
當我們使用一個數據庫時
總希望數據庫的內容是可靠的
正確的但由於計算機系統的故障(包括機器故障
介質故障
誤操作等)
數據庫有時也可能遭到破壞
這時如何盡快恢復數據就成為當務之急
如果平時對數據庫做了備份
那麼此時恢復數據就顯得很容易
由此可見
做好數據庫的備份是多麼的重要下面筆者就以ORACLE
為例
來講述一下數據庫的備份和恢復
ORACLE 數據庫有三種標准的備份方法
它們分別為導出/導入(EXPORT/IMPORT)
冷備份
熱備份
導出備份是一種邏輯備份
冷備份和熱備份是物理備份
一
導出/導入(Export/Import)
利用Export可將數據從數據庫中提取出來利用Import則可將提取出來的數據送回Oracle數據庫中去
簡單導出數據(Export)和導入數據(Import)
Oracle支持三種類型的輸出
(
)表方式(T方式)將指定表的數據導出
(
)用戶方式(U方式)將指定用戶的所有對象及數據導出
(
)全庫方式(Full方式)
將數據庫中的所有對象導出
數據導出(Import)的過程是數據導入(Export)的逆過程
它們的數據流向不同
增量導出/導入
增量導出是一種常用的數據備份方法
它只能對整個數據庫來實施並且必須作為SYSTEM來導出
在進行此種導出時
系統不要求回答任何問題
導出文件名缺省為export
dmp
如果不希望自己的輸出文件定名為export
dmp
必須在命令行中指出要用的文件名
增量導出包括三個類型
(
)
完全
增量導出(Complete)
即備份整個數據庫
比如
$exp system/manager inctype=complete file=
dmp
(
)
增量型
增量導出
備份上一次備份後改變的數據
比如
$exp system/manager inctype=incremental file=
dmp
(
)
累計型
增量導出(Cumulative)
累計型導出方式只是導出自上次
完全
導出之後數據庫中變化了的信息
比如
$exp system/manager inctype=cumulative file=
dmp
數據庫管理員可以排定一個備份日程表
用數據導出的三個不同方式合理高效地完成
比如數據庫的備份任務可作如下安排
星期一
完全導出(A)
星期二
增量導出(B)
星期三
增量導出(C)
星期四
增量導出(D)
星期五
累計導出(E)
星期六
增量導出(F)
星期日
增量導出(G)
如果在星期日
數據庫遭到意外破壞
數據庫管理員可按以下步驟來恢復數據庫
第一步
用命令CREATE DATABASE重新生成數據庫結構
第二步
創建一個足夠大的附加回段
第三步
完全增量導入A
$imp system
/manager inctype= RECTORE FULL=Y FILE=A
第四步
累計增量導入E
$imp system/manager inctype= RECTORE FULL=Y FILE =E
第五步
最近增量導入F
$imp system/manager inctype=RESTORE FULL=Y FILE=F
二
冷備份
冷備份發生在數據庫已經正常關閉的情況下
當正常關閉時會提供給我們一個完整的數據庫
冷備份是將關鍵性文件拷貝到另外位置的一種說法
對於備份Oracle信息而言
冷備份是最快和最安全的方法
冷備份的優點是
.是非常快速的備份方法(只需拷貝文件)
.容易歸檔(簡單拷貝即可)
.容易恢復到某個時間點上(只需將文件再拷貝回去)
.能與歸檔方法相結合
作數據庫
最新狀態
的恢復
.低度維護
高度安全
但冷備份也有如下不足
.單獨使用時
只能提供到
某一時間點上
的恢復
.在實施備份的全過程中數據庫必須要作備份而不能作其它工作
也就是說
在冷備份過程中數據庫必須是關閉狀態
.若磁盤空間有限
只能拷貝到磁帶等其它外部存儲設備上
速度會很慢
.不能按表或按用戶恢復
如果可能的話(主要看效率)
應將信息備份到磁盤上
然後啟動數據庫(使用戶可以工作)並將所備份的信息拷貝到磁帶上(拷貝的同時
數據庫也可以工作)
冷備份中必須拷貝的文件包括
.所有數據文件
.所有控制文件
.所有聯機REDO LOG文件
.Init
ora文件(可選)
值得注意的是冷備份必須在數據庫關閉的情況下進行
當數據庫處於打開狀態時
執行數據庫文件系統備份是無效的
下面是做冷備份的完整例子
(
) 關閉數據庫 $sqldba lmode=y
SQLDBA >connect internal;
SQLDBA >shutdown normal;
(
) 用拷貝命令備份全部的時間文件
重做日志文件
控制文件
初始化參數文件
SQLDBA >! cp < file > < backup directory >
(
) 重啟Oracle數據庫
$sqldba lmode=y
SQLDBA >connect internal;
SQLDBA >startup;
三
熱備份
熱備份是在數據庫運行的情況下
采用archivelog mode方式備份數據的方法
所以如果你有昨天夜裡的一個冷備份而且又有今天的熱備份文件
在發生問題時
就可以利用這些資料恢復更多的信息
熱備份要求數據庫在Archivelog方式下操作
並需要大量的檔案空間
一旦數據庫運行在archivelog狀態下
就可以做備份了
熱備份的命令文件由三部分組成
.數據文件一個表空間一個表空間地備份
(
)設置表空間為備份狀態
(
)備份表空間的數據文件
(
)恢復表空間為正常狀態
.備份歸檔log文件
(
)臨時停止歸檔進程
(
)log下那些在archive redo log目標目錄中的文件
(
)重新啟動archive進程
(
)備份歸檔的redo log 文件
.用alter database backup controlfile命令來備份拷貝文件
熱備份的優點是
.可在表空間或數據文件級備份
備份時間短
.備份時數據庫仍可使用
.可達到秒級恢復(恢復到某一時間點上)
.可對幾乎所有數據庫實體作恢復
.恢復是快速的在大多數情況下在數據庫仍工作時恢復
熱備份的不足是
.不能出錯
否則後果嚴重
.若熱備份不成功
所得結果不可用於時間點的恢復
.因難於維護
所以要特別仔細小心
不允許
以失敗而告終
From:http://tw.wingwit.com/Article/program/Oracle/201311/18818.html