本文詳細介紹如何正確搭建Oracle exp備份機,適用於Oracle 10.1版本環境。假設生產服務器IP為129.1.9.90,備份機IP規劃為129.1.9.91。
修改$ORACLE_HOME/network/admin/tnsnames.ora,添加生產數據庫連接描述:
JMYBJS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 129.1.9.90)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = jmybJS)
)
)
在D盤創建存放導出文件和日志的目錄:
d:\backup\dmp -- 存放.dmp導出文件
d:\backup\log -- 存放導出日志
使用VBScript編寫自動化備份腳本,實現每日全量導出,文件名包含日期標識:
' Nightly Bulk copy export for the customers table&view
' Write output to clarentYYMMDD.txt and errors to ERRYYMMDD.txt
Dim outfile, aa, bb, stroption1, stroption2, A, B, C, strsql
Set ws = WScript.CreateObject("WScript.shell")
A = CInt(Month(DateAdd("d", 0, Date())))
B = CInt(Day(DateAdd("d", 0, Date())))
C = CInt(Year(DateAdd("d", 0, Date())))
If A < 10 Then aa = CStr(0) + CStr(A) Else aa = CStr(A)
If B < 10 Then bb = CStr(0) + CStr(B) Else bb = CStr(B)
outfile = CStr(C) + aa + bb
stroption1 = "D:\Oracle_bf\product\10.1.0\Db_1\BIN\exp system/******@jmybJS " & _
"full=y buffer=900000 file=d:\backup\dmp\jmybJS" + outfile + " " & _
"log=d:\backup\log\jmybJS" + outfile + ".log"
strsql = stroption1
ret = ws.Run(strsql)
注意:腳本中system密碼部分以******隱藏,實際使用時需替換為真實密碼。
同樣使用VBScript,計算30天前的日期並刪除對應導出文件:
' 計算30天前的日期
A = CInt(Month(DateAdd("d", -30, Date())))
B = CInt(Day(DateAdd("d", -30, Date())))
C = CInt(Year(DateAdd("d", -30, Date())))
If A < 10 Then aa = CStr(0) + CStr(A) Else aa = CStr(A)
If B < 10 Then bb = CStr(0) + CStr(B) Else bb = CStr(B)
outfile = CStr(C) + aa + bb
stroption1 = "C:\Windows\system32\Delete d:\backup\dmp\jmybJS" + outfile + ".dmp"
strsql = stroption1
ret = ws.Run(strsql)
關鍵點:Windows Server 2003預設無delete.exe,需從其他系統複製到system32目錄下方可正常執行刪除操作。
將備份腳本和清理腳本分別加入Windows任務排程器,設定每日自動執行時間(建議備份在凌晨低峰期,清理在備份完成後)。
通過以上步驟,可建立一套自動化、可維護的Oracle exp備份機制,實現每日全量備份與30天留存策略,滿足數據災備基本需求。生產環境建議結合RMAN增量備份,構建多層次備份體系。