1

我正在尝试执行 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:directory name ratormonitor_!date is invalid. 

我正在尝试创建附加到文件的当前日期时间戳的转储文件,因此转储文件名应如下所示SYSTEM_2015.02.03.37.029062831 but getting an error.

4

1 回答 1

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
于 2016-02-03T10:51:40.480 回答