首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Linux 環境下 Oracle 物理備份自動化腳本實戰

     編輯:Oracle 資料庫基礎

目標與原則

本文示範如何在 Linux 上透過 Shell 腳本實現 Oracle 資料庫的全自動冷備份(關機備份),並自動產生帶時間戳的壓縮備份檔,同時保存關鍵資料庫參數供日後恢復參考。

前置條件

  • 以 oracle 系統用戶登入 Linux。
  • 確保 $ORACLE_HOME、$ORACLE_SID 等環境變數已正確設定。
  • 備份目標磁碟空間充足(最終僅保留壓縮檔,但過程需暫存原始檔)。

核心腳本模組

1. 參數收集腳本 database.script

在 SQL*Plus 中執行,將關鍵中繼資料匯出至 database.parm,並動態產生檔案複製腳本 backup.sh。

spool database.parm
select * from v$parameter;
select * from props$;
select * from v$datafile;
select * from v$controlfile;
select * from v$logfile;
spool off

spool backup.sh
select 'cp '||name||' backup/' from v$datafile;
select 'cp '||name||' backup/' from v$controlfile;
select 'cp '||member||' backup/' from v$logfile;
spool off

shutdown immediate
exit

2. 檔案複製與整理腳本 alterbackup.sh

過濾 backup.sh 中的有效 cp 指令,賦予執行權限並執行,同時補充參數檔備份。

echo "開始複製資料檔、控制檔、日誌檔至 backup 目錄"
cat backup.sh | grep '^cp /' > c.sh
rm backup.sh
mv c.sh backup.sh
chmod +x backup.sh
. backup.sh

# 手動加入參數檔備份(路徑依實際安裝調整)
cp /u01/app/oracle/admin/orcl/pfile/initorcl.ora backup/initorcl.ora

3. 資料庫啟動腳本 startup.script

spool StartStatus.readme
startup
spool off
exit

4. 壓縮打包腳本 gzip.sh

thedate=`date +%Y.%m.%d.%H.%M`
outfile=$thedate
tar -cvf backup${outfile}.tar backup/*
gzip backup${outfile}.tar
rm -rf backup

5. 總控腳本 begin.sh

echo "開始自動物理備份..."
mkdir backup
sqlplus / as sysdba @database.script
. alterbackup.sh
sqlplus / as sysdba @startup.script
. gzip.sh
echo "備份完成,請檢查 backup.tar.gz"

部署與排程

  1. 將所有 .sh 腳本賦予執行權限:chmod +x *.sh
  2. 測試執行 . begin.sh 驗證流程無誤。
  3. 編輯 crontab 實現定時自動備份,例如每天凌晨 2 點:
    0 2 * * * /home/oracle/scripts/begin.sh >> /home/oracle/logs/backup_`date +\%Y\%m\%d`.log 2>&1

關鍵提醒

  • 冷備份要求資料庫關閉,業務允許停機窗口是前提。
  • database.parm 保存了控制檔、資料檔、日誌檔路徑等關鍵資訊,異地備份時務必一同保存。
  • 參數檔路徑可能為符號連結,務必用 ls -l 確認實體路徑後寫入 alterbackup.sh。
  • 若採用 RMAN 熱備份可避免停機,但冷備份腳本簡單可靠,適合中小型環境或輔助備份策略。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved