oracle的exp工具不能导出可能的原因,已知的和可行的解决办法如下:
1、原因:从同一个大版本的低级小版本升级到高级小版本不完整,将导致exp不能正常使用,如将Oracle9.2.0.1升级到9.2.0.8时,没有执行catptch.sql,就会导致exp工具不可用;
解决办法:认真阅读Oracle版本升级的readme,按照要求进行完整正确的升级。
2、原因:数据库中存在命名相同的触发器时,将引发oracle的bug 2685696,报ORA-01422的错误;
解决办法:使用SQL>select trigger_name,owner from All_Triggers;排查同名触发器,改名。
3、原因:某用户的dual表被更改时,exp也无法正常导出,此时将可能报ORA-01422的错误,这可能是DUAL表中记录多于1条造成的结果。Oracle很多的工具和包都依赖于DUAL表,因此插入多
余的记录就会导致这些工具出现异常情况。
解决办法:删除重建dual表。
I、删除dual表:
SQL>drop table dual;
II、删除同义词:
SQL>DROP PUBLIC SYNONYM dual;
III、创建dual表:
SQL>create table dual
(dummy varchar2(1)) ;
IV、插入值:
SQL>INSERT INTO dual VALUES(‘X‘);
V、创建同义词:
SQL>create public synonym dual for dual;
VI、授权:
SQL>grant select on dual to public with grant option;
VII、测试确认:
SQL>select sysdate from dual;
4、原因:(Oracle8i以上)在进行全库导出的时候,所用的oracle用户没有全库导出的权限,将导致失败或者警告;
解决办法:在exp导出语句中加入as sysdba,例如:
exp \‘/ as sysdba\‘ full=y file=test.dmp log=test.log
exp ‘/ as sysdba‘ FILE=exp_tab.dmp LOG=exp_tab.log TABLES=scott.test_tab
阅读(1090) | 评论(0) | 转发(0) |