我使用批处理脚本使用'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文件。
答案 0 :(得分:0)
你的路径不需要反斜杠而不是正斜杠吗?即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数据库。