在widows系統上寫個bat腳本定時備份oracel數據庫的,但一執行bat腳本就會報“LRM-00112: 參數 'logfile' 不允許有多個值”,網上資源都是說創建邏輯目錄可能有空格,我就重新修改了邏輯目錄還是不是行的,最後發現是語句的問題如下:
我都是習慣生產的名字爲back_20190419.log這樣形式的沒有雙引號,這個語句在我在其它服務器執行一點都沒有問題的 expdp %bakdbname%/%bakdbpasswd%@%sid% directory=BACKDIR dumpfile=%dumpbame%_%BACKUPDATE%.dmp logfile=%dumpbame%_%BACKUPDATE%.log
加上雙引號就可以執行了也不報錯了 expdp %bakdbname%/%bakdbpasswd%@%sid% directory=BACKDIR dumpfile="%dumpbame%_%BACKUPDATE%.dmp" logfile="%dumpbame%_%BACKUPDATE%.log"
完整bat備份腳本:
back.bat腳本文件 @echo off echo ================================================ echo Windows環境下Oracle數據庫的自動備份腳本 echo 1. 使用當前日期命名備份文件。 echo 2. 自動刪除15天前的備份。 echo 3.使用expdb命令導出需要先在數據庫中創建備份文件存貯目錄,sql如下: echo create directory backdir as 'E:\nx12320_nxchart\data'; echo ================================================ ::以“YYYYMMDD”格式取出當前時間。 set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2% ::設置用戶名、密碼和sid。 set bakdbname=nx12320 set bakdbpasswd=123456 set sid=orcl set dumpbame=NX12320 set bakdbhome=E:\nx12320_nxchart\data ::創建備份目錄。 if not exist "E:\nx12320_nxchart\data" mkdir E:\nx12320_nxchart\data ::expdp備份 expdp %bakdbname%/%bakdbpasswd%@%sid% directory=BACKDIR dumpfile="%dumpbame%_%BACKUPDATE%.dmp" logfile="%dumpbame%_%BACKUPDATE%.log" ::切換目錄 e: cd %bakdbhome% ::調用rar進行壓縮 "C:\Program Files\WinRAR\WinRAR.exe" a -m5 -dw %dumpbame%_%BACKUPDATE%".zip" "%dumpbame%_%BACKUPDATE%.log" "%dumpbame%_%BACKUPDATE%.DMP" ::刪除10天前的備份。 forfiles /p "%bakdbhome%" /s /m *.zip /d -15 /c "cmd /c del @path" exit