IMP-00009:异常结束导出文件解决方案

本文详细介绍了在Oracle数据库中遇到IMP-00009异常的解决过程,问题源于deferred_segment_creation参数为默认值true,配合direct=true导致分区表导入失败。解决办法包括不使用direct=true或者调整参数为false,以及针对已存在问题的分区表进行特定操作。
摘要由CSDN通过智能技术生成

墨墨导读:本文来自读者“小豹子加油(网名)”的投稿,主要讲述使用imp导入文件出现IMP-00009问题的处理过程。


云和恩墨大讲堂线上分享:《weblogic 优化》

时间:2019年7月30日(星期二)20:30-21:30

立即报名:https://cs.enmotech.com/event/57



一、概述



最近在测试环境的一个Oracle数据库上面,使用exp将表导出没有问题,而将导出的文件使用imp导入时却出现了如下错误。

 
 
IMP-00009: abnormal end of export file	
Import terminated successfully with warnings.


经过反复实验,终于找出问题出现的原因,是由以下几点共同造成的:

a. 数据库中参数deferred_segment_creation设置的是默认值true,即创建表的时候不立即分配段,等有行的时候才会分配段。
b. 导出的表中有分区表,而恰好该分区表存在分区没有行的情况,即有的分区没有分配段。
c. 导出时使用了direct=true。


解决办法直接看(三、解决办法)



二、问题复现



1. 准备工作


在测试库中准备两个用户,tom(导出的用户),jerry(导入的用户),分别给予其最大的权限。

 
 
SQL> create user tom identified by tom;	
SQL> grant dba to tom;	
SQL> create user jerry identified by jerry;	
SQL> grant dba to jerry;


2. 检查数据库中参数deferred_segment_creation

 
 
SQL> show parameter deferred	
NAME                                 TYPE        VALUE	
------------------------------------ ----------- ------------------------------	
deferred_segment_creation            boolean     TRUE

可以看到该参数是true,默认值。


3. 创建测试表

 
 
SQL> create table tom.t_normal as select * from scott.emp;  // 创建一张普通表,并且有行	
SQL> create table tom.t_norows as select * from scott.emp where 1=0;  // 创建一张空表	
SQL> create table tom.t_par(id number, name varchar2(10))	
partition by list(id)	
(partition p01 values(1),	
partition p02 values(default));  // 创建一张分区表,两个分区	
SQL> insert into tom.t_par values(1, 'aa');  // 往分区p01插入一条数据	
SQL> commit;


至此,tom用户下有三张表,t_normal是普通表,t_norows是一张普通的空表,t_par是分区表。


通过下面的sql查到tom用户下只有两个segment,空表和分区表中无数据的分区都没有创建段。

 
 
SQL> select owner,segment_name,partition_name,segment_type from dba_segments where owner='TOM';	
OWNER      SEGMENT_NAME         PARTITION_NAME                 SEGMENT_TYPE	
---------- -------------------- ------------------------------ ------------------	
TOM        T_NORMAL                                            TABLE	
TOM        T_PAR                P01                            TABLE PARTITION

4. 使用tom对表进行导出


 
 
exp tom/tom file=tom.dmp log=tom_exp.log direct=true


导出日志如下(省略部分无关内容):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值