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

时间:2016-02-02 15:53:13

标签: oracle batch-file database-backups 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 valueORA-39000 bad dump file specification,ORA-39087:目录名称ratormonitor_!date无效。我正在尝试使用附加到文件的当前日期时间戳创建转储文件,因此转储文件名称应该看起来像SYSTEM_2015.02.03.37.029062831但是会​​出错。

1 个答案:

答案 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