国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Windows平臺下Oracle數據庫備份腳本

tomorrowwu / 2496人閱讀

摘要:以下腳本是我在項目工作中使用的備份腳本,腳本都是自己寫的。簡介此套腳本可以實現對數據庫實現全備份和增量備份。綜合以上兩種利弊,比較好的方式是在出現丟失備份或的情況下,通知管理員處置,手工處理之后備份腳本運行恢復正常。

以下腳本是我在項目工作中使用的備份腳本,腳本都是自己寫的。但在使用過程中,感覺還有提供空間,我這個人有點懶,所以想用將腳本“開源”出來的方式督促自己完善這一套腳本。大家如果對此腳本有什么建議,隨時可以提出來大家一起提高。

簡介

此套腳本可以實現對oracle數據庫實現全備份和增量備份。主要由rman_level0.cmd和rman_level1.cmd組成。
其中,rman_level0.cmd引用rman_level0.rcv作為rman命令輸入,rman_level1.cmd引用rman_level1.rcv作為rman命令輸入。

此套腳本使用的目錄結構如下:

其中,

archlog 存放歸檔日志備份

cntrfile 控制文件備份

data 數據庫文件備份

log 備份日志

scripts 備份腳本相關

腳本內容

全備腳本

rman_level0.bat

rman target / CMDFILE "D:ackup
man_backupscripts
man_level0.rcv" LOG D:ackup
man_backuploglevel0_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log

rman_level0.rcv

run {
      sql "alter system archive log current";
      allocate channel c1 type disk;
      backup as compressed backupset
      incremental level 0
      format "D:ackup
man_backupdatalevel0_%T_%t_s%s_p%p" database
      plus archivelog format "D:ackup
man_backuparchlogarchlog_%T_t%t_s%s_p%p" delete input;
      backup format "D:ackup
man_backupcntrfilecontrolfile_%T_s%s_p%p" current controlfile;
      release channel c1;
      crosscheck backup;
      delete noprompt obsolete;
      crosscheck archivelog all;
}
exit;

增量備份腳本

rman_level1.cmd

rman target / CMDFILE "D:ackup
man_backupscripts
man_level1.rcv" LOG D:ackup
man_backuploglevel1_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log

rman_level1.rcv

run {
      sql "alter system archive log current";
      allocate channel c1 type disk;
      backup as compressed backupset
      incremental level 1
      format "D:ackup
man_backupdatalevel1_%T_%t_s%s_p%p" database
      plus archivelog format "D:ackup
man_backuparchlogarchlog_%T_t%t_s%s_p%p" delete input;
      backup format "D:ackup
man_backupcntrfilecontrolfile_%T_s%s_p%p" current controlfile;
      release channel c1;
      crosscheck backup;
      delete noprompt obsolete;
      crosscheck archivelog all;
}
exit;
存在的問題及解決

rman log中日期字符串的問題

目前日期字符串是使用從date和time命令的輸出中截取需要的字符,組成需要的字符串。

第1種情況,當time在0-9時之間時,字符串輸出如下:

C:UsersYangJia>echo %date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%t
ime:~6,2%
20140119_ 10802

第2中情況,當time在10-23之間時,字符串輸出如下:

C:UsersYangJia>echo %date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%t
ime:~6,2%
20140119_230953

這個時候問題就出現了,當運行腳本時屬于第一種情況,腳本會認為LOG參數在"_"之后就結束了,導致最終生成的日志文件名出現不完整的情況。
解決此問題有兩個思路,一是將多出來的空格去掉,二是讓cmd認為腳本并不是從空格處就結束 了。
以下針對兩種思路給出方法:

第一種思路:
將log文件名使用%filename%變量替換,設置%filename%變量之前,對日期格式進行判斷,然后設置%filename%內容:

set logfile=level0_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log
if "%time:~0,1%" == " " ^
set logfile=level0_%date:~0,4%%date:~5,2%%date:~8,2%_0%time:~1,1%%time:~3,2%%time:~6,2%.log

這部分解決有參考http://stackoverflow.com/questions/1192476/windows-batch-script-format-date-and-time

rman中刪除無效備份和archivelog的考慮

rman中刪除無效(expired)備份和archivelog的方式一般步驟是:
1. crosscheck backup &crosscheck archivelog all
2. delete expired backup;
3. delete expired archivelog;

如果將以上操作加入到腳本中,無效(expired)備份和archivelog會被自動清理掉,這樣可能就會在不知情的情況下導致丟失recovery window中的片段,導致recovery window不完整。

如果不加入備份腳本,在有無效(expired)備份和歸檔日志的情況下,就會出現備份archivelog失敗導致整個備份腳本運行失敗,可能會導致歸檔日志不能自動清除將磁盤空間占滿。

綜合以上兩種利弊,比較好的方式是:在出現丟失備份或archivelog的情況下,通知管理員處置,手工處理之后備份腳本運行恢復正常。即使真的有archivelog丟失,在管理員已知曉的情況下,可以規避對恢復窗口的影響。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/8683.html

相關文章

發表評論

0條評論

tomorrowwu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<