我正在尝试执行一个Windows调度程序作业,它将每天创建一次我的数据库备份。因此,我创建了包含数据的批处理文件SYSTEM_BACKUP.bat
:
@echo off
setlocal EnableDelayedExpansion
expdp SYSTEM/SYSTEM@XE PARFILE=export_dump.par
export_dump.par文件包含以下信息:
DIRECTORY=cron_jobs
DUMPFILE=SYSTEM_!date:~10,4!!date:~6,2!.!date:~4,2!.dmp
LOGFILE=SYSTEM.log
SCHEMAS=B1,B2
CONTENT=ALL
当我尝试运行SYSTEM_BACKUP.bat
时,我收到的错误为ORA-39001:invalid argument value
,ORA-39000 bad dump file specification
,ORA-39087:目录名称ratormonitor_!date无效。我正在尝试使用附加到文件的当前日期时间戳创建转储文件,因此转储文件名称应该看起来像SYSTEM_2015.02.03.37.029062831
但是会出错。
答案 0 :(得分:2)
您的export_dump.par文件包含
DUMPFILE=I_!date:~10,4!!date:~6,2!.!date:~4,2!.dmp
但由于这不是批处理文件的一部分,因此读取文件的进程expdp.exe根本不知道有关延迟扩展或变量扩展的任何信息。
因此,每次启动expdp之前,都必须通过批处理文件创建此文件
@echo off
setlocal EnableDelayedExpansion
(
echo DIRECTORY=cron_jobs
echo DUMPFILE=I_!date:~10,4!!date:~6,2!.!date:~4,2!.dmp
...
) > export_dump.par
expdp SYSTEM/SYSTEM@XE PARFILE=export_dump.par