oracle导出数据作业已存在,记一次Oracle数据库导入出现“致命错误”终止导入

问题描述

环境:

Windows Server 2008 R2

Oracle 10.2.0.5.0

导出命令

expdp system/******** directory=expdp_dir1 dumpfile=17_full_2017-12-14_12_00_%U.dmp filesize=8192M logfile=17_full_2017-12-14_12_00.log parallel=1 full=y

导入命令

impdp system/****** directory=data_pump_dir dumpfile=17_full_2017-12-14_12_00_%U.dmp logfile=17_full_2017-12-14_12_00.log full=y

导入过程中出现以下错误:

oracle导出数据作业已存在,记一次Oracle数据库导入出现“致命错误”终止导入_第1张图片

最终终止日志:

oracle导出数据作业已存在,记一次Oracle数据库导入出现“致命错误”终止导入_第2张图片

解决方法

百度了一波ORA-31693报错后,大部分文档给出的是:EXPDP导出的DMP文件损坏

oracle导出数据作业已存在,记一次Oracle数据库导入出现“致命错误”终止导入_第3张图片

oracle导出数据作业已存在,记一次Oracle数据库导入出现“致命错误”终止导入_第4张图片

在咨询一个大佬后,在导入时,加入了下面的参数再次导入

TABLE_EXISTS_ACTION=TRUNCATE

成功导入!

有时候我们会需要清除一个表格中的所有资料。要达到者个目的,一种方式是我们在 SQL DROP 那一页 看到 的 DROP TABLE 指令。不过这样整个表格就消失,而无法再被用了。另一种方式就是运用 TRUNCATE TABLE 的指令。在这个指令之下,表格中的资料会完全消失,可是表格本身会继续存在

拓展

当使用IMPDP完成数据库导入时,如遇到表已存在时,Oracle提供给我们如下四种处理方式:

a.忽略(SKIP,默认行为);

b.在原有数据基础上继续增加(APPEND);

c.先DROP表,然后创建表,最后完成数据插入(REPLACE);

d.先TRUNCATE,再完成数据插入(TRUNCATE)(表格中的所有资料会丢失,但是表格本身会继续存在)

看看这四种处理方式的效果:

1、REPLACE

C:\Users\aaaa>impdp \"system/yang as sysdba \" remap_schema=scott:scott directory=dumpdir

dumpfile=scott_%U.dmp table_exists_action=replace logfile=scott_impdp_replace.log

Import: Release 11.1.0.6.0 - Production on 星期一, 14 3月, 2011 15:40:26

Copyright (c) 2003, 2007, Oracle. All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

已成功加载/卸载了主表 "SYS".&

你可能感兴趣的:(oracle导出数据作业已存在)