Chinaunix首页 | 论坛 | 博客
  • 博客访问: 248821
  • 博文数量: 115
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 930
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-30 05:27
文章分类

全部博文(115)

文章存档

2011年(10)

2010年(21)

2009年(19)

2008年(65)

我的朋友

分类: Oracle

2008-09-27 10:36:03

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 
阅读(1632) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~