Oracle 11 exp命令导出分区表dmp文件报错EXP-00003解决方法

1.命令:(在cmd执行)
例如:exp username/password@TEST file=E:\STUDENT.dmp tables=(STUDENT)
导出表STUDENT到本地E盘目录,username和password分别是数据库用户名和密码,TEST是数据库;

2.执行时发生错误, EXP报错:exp-00003:未找到段(0,0)定义
百度说是因为: 数据库在exp导出11g时报错EXP-00003。在11g版本中在没有数据的情况下是不会分配extent。所以如果出现这种情况需要手动对表分配extent。

3.解决方案,找到一些的语句不行,查出来想要导出的表并不是空表,最后找到一个语句是,这个语句的结果能够看到想要导出的表是没有分配extend的.
select 'alter table '||table_name||' allocate extent(size 64k);' sql_text,table_name,tablespace_name
from user_tables where table_name not in (select segment_name from user_segments where segment_type = 'TABLE');

4.把执行出来的结果SQL_TEXT拿出来执行,给表分配extend:
alter table STUDENT allocate extent(size 64k);
但是执行报错ORA-14254: 不能为 (组合) 范围分区表或列表分区表指定 ALLOCATE STORAGE


5. 解决 ORA-14254: 这个错误,应该是因为要这个表有分区的原因,不能够对整个表进行分配extend, 修改上面的SQL_TEXT,按照分区对表进行分配extend. 没有报错。
alter table STUDENT modify partition STUDENT_00 allocate extent;
STUDENT_00是表的分区名字,表的分区有多个,要对每个分区执行上面这个语句;


6.把表的每个分区都分配了extend了之后,重新到cmd执行exp命令,不会报错。

导出的时候是按照分区导出的,所有分区导出的行数加起来和表的记录数相同。




猜你喜欢

转载自blog.csdn.net/wylsde_zjy/article/details/80401712
今日推荐