我正在使用批处理脚本从我的数据库中使用'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 LogsFULL_db_%Ffullstamp%_log.txt"
echo **Backing up FULL database** >> "E:Backup LogsFULL_db_%Ffullstamp%_log.txt"
exp xxxx/yyyy@zzzz full=Y log="E:Backup LogsFULL_TMP.log" file="E:BackupsFULLFULL_db_%fullstamp%.dmp"
type "E:Backup LogsFULL_TMP.log" >> "E:Backup LogsFULL_db_%Ffullstamp%_log.txt"
del "E:Backup LogsFULL_TMP.log"
我已经去掉了一些绒毛和识别部分,但这是它的面包和黄油。TXT和LOG文件正在被完美地创建和删除,但没有DMP文件。
在Windows上你的路径不需要反斜杠而不是正斜杠吗?即FILE="c:foobar.dmp"'
?
尝试使用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命令行插入到脚本中。
希望对你有帮助。
解决!虽然我觉得自己很傻。
'FILE='参数中有空格是问题所在。
的路径"E:ClientDocumentsData ExtrationProgressDump.dmp"
创建这个
"E:ClientDocumentsData.dmp"
正确的解决方案是,如果路径中包含空格等,则使用三引号:
@Echo Off
Rem SetLocal EnableDelayedExpansion
::Bunch of variable declarations here
( Echo **Backup run on %DATE% at %TIME%**
Echo **Backing up FULL database**)>>"E:Backup LogsFULL_db_%Ffullstamp%_log.txt"
exp xxxx/yyyy@zzzz full=Y log="""E:Backup LogsFULL_TMP.log""" file="""E:BackupsFULLFULL_db_%fullstamp%.dmp"""
Type "E:Backup LogsFULL_TMP.log">>"E:Backup LogsFULL_db_%Ffullstamp%_log.txt"
Del "E:Backup LogsFULL_TMP.log"
这个方法可以在Oracle文档的第7章中看到,更具体地说,7.3.3.2导出完整的Oracle数据库。