使用 expdp 导出转储文件时出现 Ora-39000 错误的转储文件规范

Ora-39000 bad dump file specification when exporting dump file using expdp

我正在尝试执行 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.

您的 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