-2

我正在使用批处理脚本使用“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

4 回答 4

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"

这种方法可以在 Oracle 文档的第 7 章中看到,更具体地说,7.3.3.2 导出完整的 Oracle 数据库

于 2019-11-14T10:52:26.310 回答
0

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

于 2015-10-20T00:47:59.000 回答
0

解决了!虽然我觉得很傻。

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

一条路

"E:\ClientDocuments\Data Extration\ProgressDump.dmp"

创建了这个

"E:\ClientDocuments\Data.dmp"

奇怪,但很容易修复。

于 2015-10-21T02:39:49.107 回答
0

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

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命令行插入到您的脚本中。

希望有帮助。

于 2015-10-21T02:04:55.077 回答