SQL exp转储文件丢失

时间:2015-10-20 00:40:30

标签: windows oracle batch-file dmp

我使用批处理脚本使用'exp'命令从我的数据库导出.dmp。

一切运行正常并正确记录(也创建一个带日期标记的日志文件),但.DMP文件本身无处可寻。不在指定的'FILE =“c:/foo/bar.dmp”'位置或其他任何位置。

导出器表示它已正确完成且没有错误,但唉,没有DMP文件。

这不是权限问题,同一个脚本会生成.log和临时.txt文件。

该脚本正在Windows Server 2008上运行,甚至通过命令提示符手动运行exp也不会创建文件,也没有错误。

真的难倒这个。非常难以诊断,因为一切都发誓失明,它工作得很好。希望有人之前见过这样的东西,可以提供帮助。

提前致谢。

脚本示例:

@echo off
REM setlocal enabledelayedexpansion

::Bunch of variable declarations here

echo **Backup run on %DATE% at %TIME%** >> "E:\Backup Logs\FULL_db_%Ffullstamp%_log.txt"
echo **Backing up FULL database** >> "E:\Backup Logs\FULL_db_%Ffullstamp%_log.txt"

exp xxxx/yyyy@zzzz full=Y log="E:\Backup Logs\FULL_TMP.log" file="E:\Backups\FULL\FULL_db_%fullstamp%.dmp"

type "E:\Backup Logs\FULL_TMP.log" >> "E:\Backup Logs\FULL_db_%Ffullstamp%_log.txt"
del "E:\Backup Logs\FULL_TMP.log"

我已经删除了一些绒毛和识别部件,但这是它的面包和黄油。正在创建和删除TXT和LOG文件,但没有DMP文件。

4 个答案:

答案 0 :(得分:0)

在Windows上

你的路径不需要反斜杠而不是正斜杠吗?即FILE="c:\foo\bar.dmp"'

答案 1 :(得分:0)

尝试使用 expdp ,使用Oracle Data Pump实用程序调用导出。 您的数据输出文件将驻留在Oracle参数DATA_PUMP_DIR定义的目录中。 要查找DATA_PUMP_DIR的值,请登录SQL * Plus作为' SYS'并运行以下内容:

select * 
from dba_directories 
where DIRECTORY_NAME = 'DATA_PUMP_DIR';

此外,请确保您的架构具有 EXP_FULL_DATABASE 角色。 Oracle在线文档可以为您提供进一步的说明。

https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_overview.htm#SUTIL100

我会首先尝试从命令行执行 expdp (带有相应的参数),以确保它有效。然后将 expdp 命令行插入到脚本中。

希望有所帮助。

答案 2 :(得分:0)

解决!虽然我觉得很傻。

在' FILE ='中有空格参数是问题。

的路径
"E:\ClientDocuments\Data Extration\ProgressDump.dmp"

创建了这个

"E:\ClientDocuments\Data.dmp"

奇怪,但非常可以解决。

答案 3 :(得分:0)

正确的解决方案是,如果路径中包含空格等,则对路径进行三重引用:

@Echo Off
Rem SetLocal EnableDelayedExpansion

::Bunch of variable declarations here

(   Echo **Backup run on %DATE% at %TIME%**
    Echo **Backing up FULL database**)>>"E:\Backup Logs\FULL_db_%Ffullstamp%_log.txt"

exp xxxx/yyyy@zzzz full=Y log="""E:\Backup Logs\FULL_TMP.log""" file="""E:\Backups\FULL\FULL_db_%fullstamp%.dmp"""

Type "E:\Backup Logs\FULL_TMP.log">>"E:\Backup Logs\FULL_db_%Ffullstamp%_log.txt"
Del "E:\Backup Logs\FULL_TMP.log"

此方法可以在Chapter 7 of the Oracle Docs中看到,更具体地说,是7.3.3.2导出完整的Oracle数据库