俄羅斯服務器本來有自動清理歸檔日誌腳本的
—exdp方式、(個人認爲很不嚴謹) 我之前也不清楚、一直沒有出問題、 也沒來找我、
前些天找到我、歸檔日誌不自動備份清理了、 導致歸檔日誌寫滿、數據庫無法登陸、
現在只能是運維人員手工清理、 讓我查下原因、解決下
大概查了下、 問題原因是因爲root密碼過期、 之前的腳本是掛在root下的、通過crontab定時執行、 root密碼過期導致crontab失效、 我拿出的解決方案是重置下root密碼、 因爲甲方涉及到密碼問題流程比較繁瑣、 不是很樂意、問我有沒有別的辦法、
那隻能改到oracle用戶下咯、再換成rman備份、、、、
腳本如下:
#zyz
#backupscript
source /home/oracle/.bash_profile_hrt
export BACK_DATE=`date +%Y%m%d`
export BACKUP_PATH=/data/spi_bak/rman
echo `mkdir -p ${BACKUP_PATH}/${BACK_DATE}`
rman target / msglog=${BACKUP_PATH}/${BACK_DATE}/bak_0_$BACK_DATE.log << EOF
run
{
allocate channel ch1 device type disk; #分配通道
allocate channel ch2 device type disk;
sql 'alter system archive log current'; #歸檔當前日誌
backup database format '${BACKUP_PATH}/${BACK_DATE}/data_%s.bak';
backup format '${BACKUP_PATH}/${BACK_DATE}/conbak_%s.bak' current controlfile;
backup spfile format ='${BACKUP_PATH}/${BACK_DATE}/spfile_%s.bak';
crosscheck backup;
crosscheck archivelog all;
sql 'alter system archive log current';
backup archivelog all format '${BACKUP_PATH}/${BACK_DATE}/arch_%s.bak' delete all input;
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt backup of database completed before 'sysdate -1';
delete noprompt archivelog all;
delete noprompt backup of archivelog all completed before 'sysdate -1';
release channel ch1;
release channel ch2;
}
exit;
EOF
$ crontab -e
10 3 * * * /data/spi_bak/script/zback.sh
$ crontab -l
這裏說下exdp(導入導出方式)備份和RMAN備份方式的區別、 exdp導入導出、 設置定時任務、把整個用戶導出作爲備份(因爲我們這個項目就用一個用戶)
這種方法有什麼弊端呢、 定時任務設置每天早上8點備份、 當數據庫在2號早上7點出問題了、 我們手裏就只有1號早上8點的備份、從1號早上8點到2號早上7點這段時間的數據就是個很大的問題、
用RMAN呢、 如果出問題了、 就可以用歸檔日誌、去把這段時間的數據找回來、 大概就是這樣、
還有一個就是rman備份會壓縮、相比較於exdp備出來的文件應該是小的、具體的壓縮效果沒有特別注意過、 但是能節省下服務器資源嘛、