我正在尝试从 Oracle 10.2.0.5.0 数据库中导出模式。出于某种原因,当我启动 expdp 命令时,它几乎立即完成,它只创建日志文件,根本没有转储文件。这一定是一些愚蠢的错误,但我无法弄清楚。
这是我在服务器上执行的命令(以 Oracle 用户身份登录 SSH):
expdp my_user/my_pass@db schemas=my_user directory=my_dir dumpfile=exp.dmp logfile=exp.log
使用 SYS 我得到相同的结果:
expdp \"sys/sys_pass@db as sysdba\" schemas=my_user ...
服务器中只有一个数据库,所以我也尝试过没有该@db
部分。结果相同。
我检查了它my_dir
是否正确定义并指向服务器上现有的文件系统位置,有可用空间(约 3.4 GB 可用空间)以及 Oracle 用户可以读取和写入的位置。my_user
我还授予了on 的读写权限my_dir
。我已经my_user
用我要导出的表进行了四次检查,这是正确的模式。
这是我在控制台(除了;;;
)和日志文件中得到的唯一输出:
;;;
Export: Release 10.2.0.5.0 - 64bit Production on Monday, 08 April, 2019 13:27:31
Copyright (c) 2003, 2007, Oracle. All rights reserved.
;;;
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
然后什么都没有。没有转储文件,没有错误,什么都没有。它刚刚结束。
我发现这个页面有一些有用的 (?) 查询。v$datapump_job
并且dba_resumable
是空的。有几个出口dba_datapump_jobs
,都是有地位的NOT RUNNING
;我不确定,因为没有任何“日期”字段,但我认为它们是旧工作,当我启动expdp
命令时它们不会改变。
我还能检查什么?
编辑:如果我echo $?
在命令后立即运行expdp
,它会输出1
,根据此页面(对于 Oracle 12c,而不是 10.2...),表示“以致命错误退出”。然而,将它们写入日志文件还不够重要吗?
这是 TEMP 表空间的问题,它存储在没有更多可用空间的磁盘分区中。
按照CaM 的建议(谢谢!),我检查了 my_user 没有该
EXP_FULL_DATABASE
角色,因此我再次启动了该expdp
命令但没有schemas
参数。由于某种原因,这样做甲骨文最终同情我,放弃了恶作剧并决定显示错误:在将临时数据文件“移动”到另一个分区并与Unix 进行了一场精彩的斗争以释放磁盘空间之后,expdp 终于再次工作了。