【Oracle指令碼】-很不錯的Windows下資料庫備份EXP指令碼
------------開始---------------
@echo off
::--------------------------------------------------
::匯出資料庫,保留25天的備份
::--------------------------------------------------
::***********************獲得25天以前的日期*******************************
::定義N天(N<=28)前的日期
set N=7
::定義今天的日期
set CURRENT_DATE=%date:~0,4%%date:~5,2%%date:~8,2%
::定義獲得年的標示
set CURRENT_YEAR=%date:~0,4%
::定義去年的標示
set /a LAST_YEAR=%CURRENT_YEAR%-1
::定義獲得月的標示
set SIGNMONTH=%date:~5,1%
if %SIGNMONTH% EQU 0 (set CURRENT_MONTH=%date:~6,1%) else (set CURRENT_MONTH=%date:~5,2%)
::定義上個月的標示
if %CURRENT_MONTH% GTR 1 (
set /a LAST_MONTH=%CURRENT_MONTH%-1) else (
set /a LAST_MONTH=12)
::定義獲得天的標示
set SIGN=%date:~8,1%
if %SIGN% EQU 0 (set CURRENT_DAY=%date:~9,1%) else ( set CURRENT_DAY=%date:~8,2%)
::判斷是否閏年:0表示非閏年,1表示閏年
set /a CONDITION1=%CURRENT_YEAR%%%4
set /a CONDITION2=%CURRENT_YEAR%%%400
set /a CONDITION3=%CURRENT_YEAR%%%100
if %CONDITION1% EQU 0 (
if %CONDITION2% EQU 0 (
set /a LEAP_YEAR_CHECK=1
) else if %CONDITION3% NEQ 0 (
set /a LEAP_YEAR_CHECK=1) else (
set /a LEAP_YEAR_CHECK=0)) else (
set /a LEAP_YEAR_CHECK=0)
::定義上個月的天數,如果是閏年,則2月份是29天,否則為28天
set LAST_MONTH_DAYS=0
if %LAST_MONTH% EQU 1 (set /a LAST_MONTH_DAYS=31)
if %LAST_MONTH% EQU 3 (set /a LAST_MONTH_DAYS=31)
if %LAST_MONTH% EQU 5 (set /a LAST_MONTH_DAYS=31)
if %LAST_MONTH% EQU 7 (set /a LAST_MONTH_DAYS=31)
if %LAST_MONTH% EQU 8 (set /a LAST_MONTH_DAYS=31)
if %LAST_MONTH% EQU 10 (set /a LAST_MONTH_DAYS=31)
if %LAST_MONTH% EQU 12 (set /a LAST_MONTH_DAYS=31)
if %LAST_MONTH% EQU 4 (set /a LAST_MONTH_DAYS=30)
if %LAST_MONTH% EQU 6 (set /a LAST_MONTH_DAYS=30)
if %LAST_MONTH% EQU 9 (set /a LAST_MONTH_DAYS=30)
if %LAST_MONTH% EQU 11 (set /a LAST_MONTH_DAYS=30)
if %LAST_MONTH% EQU 2 (if %LEAP_YEAR_CHECK% EQU 0 (set /a LAST_MONTH_DAYS=28) else (set /a LAST_MONTH_DAYS=29))
if %LAST_MONTH_DAYS% EQU 0 (goto END)
::定義最終的年
set BEFORE_YEAR=0
::定義最終的月
set BEFORE_MONTH=0
::定義最終的天
set BEFORE_DAY=0
::定義距離今天N天前的日期
set BN_DAYS_AGO=0
::*********************變數定義完成**********************************
::如果今天天數大於N
if %CURRENT_DAY% GTR %N% (
set /a BEFORE_YEAR=%CURRENT_YEAR%)&(
set /a BEFORE_MONTH=%CURRENT_MONTH%)&(
set /a BEFORE_DAY=%CURRENT_DAY%-%N%
) else if %CURRENT_MONTH% NEQ 1 (
set /a BEFORE_YEAR=%CURRENT_YEAR%)&(
set /a BEFORE_MONTH=%LAST_MONTH%)&(
set /a BEFORE_DAY=%LAST_MONTH_DAYS%-%N%+%CURRENT_DAY%
) else (
set /a BEFORE_YEAR=%LAST_YEAR%)&(
set /a BEFORE_MONTH=%LAST_MONTH%)&(
set /a BEFORE_DAY=%LAST_MONTH_DAYS%-%N%+%CURRENT_DAY%)
if %BEFORE_MONTH% LSS 10 (set BEFORE_MONTH=0%BEFORE_MONTH%)
if %BEFORE_DAY% LSS 10 (set BEFORE_DAY=0%BEFORE_DAY%)
set /a BN_DAYS_AGO=%BEFORE_YEAR%%BEFORE_MONTH%%BEFORE_DAY%
::echo %BN_DAYS_AGO%
:END exit 0
::**************************獲得25天以前的日期*******************************
set today=%date:~0,10%
set before7=%BN_DAYS_AGO%
echo ******************************************************************** >> expsjsb.log
echo %today% %time:~0,8%: Starting. >> expsjsb.log
set timedir=%date:~0,4%%date:~5,2%%date:~8,2%
md D:\backup\%timedir%
if %ERRORLEVEL%==0 (echo %today% %time:~0,8%: 建立目錄D:\backup\%timedir%成功。>> expsjsb.log)&(goto NEXT)
if %ERRORLEVEL%==1 (echo %today% %time:~0,8%: 建立目錄D:\backup\%timedir%失敗或目錄已經存在。>> expsjsb.log)&(goto END)
:NEXT
echo %today% %time:~0,8%: 開始匯出資料檔案. >> expsjsb.log
exp system/system full=y file=E:\dmp\%timedir%\evsjsb%timedir%.dmp log=E:\dmp\%timedir%\evsjsb%timedir%.log
if %ERRORLEVEL%==0 (echo %today% %time:~0,8%: 資料匯出成功。>> expsjsb.log)&(goto SUC)
if %ERRORLEVEL%==1 (echo %today% %time:~0,8%: 資料匯出失敗。>> expsjsb.log)&(goto END)
:SUC
echo %today% %time:~0,8%: 刪除25天前的備份。>> expsjsb.log
if exist E:\dmp\%before7% GOTO EXIST
if not exist E:\dmp\%before7% GOTO NOEXIST
:EXIST
echo %today% %time:~0,8%: Delete the directory E:\dmp\%before7%. >> expsjsb.log
rd /s /q E:\dmp\%before25%
GOTO END
:NOEXIST
echo %today% %time:~0,8%: The directory E:\dmp\%before7% is not exist. >> expsjsb.log
GOTO END
:END
echo %today% %time:~0,8%: Quit. >> expsjsb.log
echo ******************************************************************** >> expsjsb.log
@echo on
-----------結束--------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/645199/viewspace-680932/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- windows下oracle資料庫的exp自動備份指令碼WindowsOracle資料庫指令碼
- windows下自動備份指令碼(exp)Windows指令碼
- EXP的備份指令碼指令碼
- windows 下的Oracle 冷備份指令碼WindowsOracle指令碼
- MySQL:Windows下分庫備份指令碼MySqlWindows指令碼
- 資料庫備份指令碼資料庫指令碼
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- Oracle多例項資料庫備份指令碼Oracle資料庫指令碼
- windows建exp備份指令碼時的小插曲Windows指令碼
- Windows下RMAN備份指令碼Windows指令碼
- oracle資料庫資料備份成文字的指令碼Oracle資料庫指令碼
- 資料庫全備份指令碼資料庫指令碼
- MySQL資料庫備份的shell指令碼MySql資料庫指令碼
- 簡單的備份資料庫指令碼資料庫指令碼
- 《mysql資料庫備份小指令碼》MySql資料庫指令碼
- ORACLE備份指令碼Oracle指令碼
- oracle 備份指令碼Oracle指令碼
- windows mysqldump備份指令碼WindowsMySql指令碼
- windows rman備份指令碼Windows指令碼
- Windows 快速備份指令碼Windows指令碼
- windows下rman自動備份指令碼Windows指令碼
- windows和unix平臺下Oracle冷備份指令碼WindowsOracle指令碼
- Liunx備份mysql資料庫的shell指令碼MySql資料庫指令碼
- Mysql資料庫的簡單備份指令碼MySql資料庫指令碼
- 資料庫連結的備份指令碼(轉)資料庫指令碼
- 《mysql資料庫備份小指令碼》(轉)MySql資料庫指令碼
- mysqldump來備份MYSQL資料庫(指令碼)MySql資料庫指令碼
- 關於Oracle資料庫熱備份指令碼深入剖析Oracle資料庫指令碼
- Oracle資料庫在linux和windows下自動備份指令碼總結Oracle資料庫LinuxWindows指令碼
- suse下oracle的自動備份指令碼Oracle指令碼
- linux下oracle熱備份指令碼LinuxOracle指令碼
- ORACLE日常備份指令碼Oracle指令碼
- Oracle 集中備份指令碼Oracle指令碼
- oracle RMAN備份指令碼Oracle指令碼
- oracle_備份指令碼Oracle指令碼
- Oracle expdp/impdp匯入匯出備份資料庫指令碼Oracle資料庫指令碼
- 恢復目錄資料庫備份指令碼資料庫指令碼
- 使用shell 指令碼備份資料指令碼