加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

EXP-00000错误的处理过程

(2007-02-12 20:16:25)
EXP-00000错误的处理过程
下面是同事在处理EXP错误的过程
1)环境调查
操作系统 windows 2003 server
数据库   oracle9207 standard版本
IP地址   10.44.21.7
2)目前问题症状
在10.44.21.7对本机数据库做导出操作,报错:
  exp scott/tiger file=c:\temp\test.dmp
  exp (甚至不加任何参数)
  报相同错误如下:
 Message 206 not found; No message file for product=RDBMS, facility=EXP: Release
 9.2.0.1.0 - Production on Mon Nov 6 14:05:47 2006
 Copyright (c) 1982, 2002, Oracle
 Invalid format of Export utility name
 Verify that ORACLE_HOME is properly set
 Export terminated unsuccessfully
 EXP-00000: Message 0 not found; No message file for product=RDBMS, facility=EXP
 分析:初步怀疑是exp工具问题,或者环境变量问题
3)检查注册表里的oracle_home=d:\oracle\ora92
 
  结果表明设置是没有问题的
4)在我的手提电脑上做试验,如果将oracle_home改掉,报相同错,将oracle_home改回正确值得,则不报错
  分析:oracle_home如果设置不对,则一定会出现1)中的报错,但oracle_home设置对了,也报错,表明是10.44.21.7的
        机器或者数据库存在其它问题,引起了该错误
 
5)找一台客户端对问题数据库测试是否能导出
  10.44.1.4机器上安装了oracle9201,于是10.44.1.4配置一个到10.44.21.7的链接,在10.44.1.4上对10.44.21.7做exp ,没有问题
  分析:说明10.44.21.7的库本身是没有问题的
6)测试利用10.44.21.7的exp工具导出其它机器上的数据库
   在10.44.21.7上配置一个到10.44.1.4上数据库的链接,并且测试链接是通的,执行exp scott/tiger@链接名,仍然报相同错误
  
  分析,到本步为止,说明肯定不是环境变量问题,也不是库本身的问题,而是exp工具本身的问题,有可能是安装数据库时选件
  不够造成,此时和用户讨论,可能需要重装数据库了,用户也强烈要求重装,用户一直认为当初装的和后来升级都有问题。
 
  总结:要使得exp可用必须保证:
        a.exp工具本身没有问题
        b.exp工具所在机器的环境变量也没有问题
        c.要exp的目标库本身没有问题
7)但重装数据库毕竟非常麻烦,而且有风险,于是想其它补救办法,开始对10.44.1.4上的数据库和10.44.21.7上的数据库软件
  进行比对,看看是否有什么文件没有装全
  结果:经过2个多小时的比对,发现d:\oracle\ora92\rdbms\mesg下面的文件数量,10.44.21.7机器只有18 个,而10.44.1.4上有
  38个,证明安装确实有点问题,于是将将1.4上的expus.msb,expzhs.msb,impus.msb,impzhs.msb拷贝到21.7对应目录下
8)再次测试exp和imp功能
  执行imp和exp,不报刚才的错了,报下面的错
 
 Export: Release 9.2.0.7.0 - Production on 星期一 11月 6 15:52:14 2006
 
 Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
 
 
 连接到: Oracle9i Release 9.2.0.7.0 - Production
 JServer Release 9.2.0.7.0 - Production
 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
 
 即将导出指定的用户...
 . 正在导出 pre-schema 过程对象和操作
 . 正在导出用户 SCOTT 的外部函数库名称
 . 导出 PUBLIC 类型同义词
 . 导出私有类型同义词
 . 正在导出用户 SCOTT 的对象类型定义
 EXP-00008: 遇到 ORACLE 错误 942
 ORA-00942: 表或视图不存在
 EXP-00024: 未安装导出视图,请通知您的 DBA
 EXP-00000: 导出终止失败
  分析:此时说明exp工具已经可用了,但数据库里可能存在问题
 
9)以sysdba权限执行 %oracle_home%\rdbms\admin\catexp.sql 建立所需导出字典
  再次执行exp又发现了以下报错:
 
  连接到: Oracle9i Release 9.2.0.7.0 - Production
 JServer Release 9.2.0.7.0 - Production
 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
 . 正在导出 pre-schema 过程对象和操作
 . 正在导出用户 SCOTT 的外部函数库名称
 . 导出 PUBLIC 类型同义词
 . 导出私有类型同义词
 . 正在导出用户 SCOTT 的对象类型定义
 即将导出 SCOTT 的对象 ...
 . 正在导出数据库链接
 . 正在导出序号
 . 正在导出群集定义
 EXP-00056: 遇到 ORACLE 错误 19206
 ORA-19206: 用于查询或 REF CURSOR 参数的值无效
 ORA-06512: 在"SYS.DBMS_XMLGEN", line 83
 ORA-06512: 在"SYS.DBMS_METADATA", line 345
 ORA-06512: 在"SYS.DBMS_METADATA", line 410
 ORA-06512: 在"SYS.DBMS_METADATA", line 449
 ORA-06512: 在"SYS.DBMS_METADATA", line 1156
 ORA-06512: 在"SYS.DBMS_METADATA", line 1141
 ORA-06512: 在line 1
 EXP-00000: 导出终止失败
  分析,说明还要还要执行catmeta.sql脚本
10)再以sysdba权限执行 %oracle_home%\rdbms\admin\catmeta.sql,执行完后
   运行exp成功,这次可以成功导出了,但出现了一些警告:
  
   连接到: Oracle9i Release 9.2.0.7.0 - Production
 JServer Release 9.2.0.7.0 - Production
 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
 
 即将导出指定的用户...
 . 正在导出 pre-schema 过程对象和操作
 . 正在导出用户 SCOTT 的外部函数库名称
 . 导出 PUBLIC 类型同义词
 . 导出私有类型同义词
 . 正在导出用户 SCOTT 的对象类型定义
 即将导出 SCOTT 的对象 ...
 . 正在导出数据库链接
 . 正在导出序号
 . 正在导出群集定义
 . 即将导出 SCOTT 的表通过常规路径 ...
 . . 正在导出表                           BONUS          0 行被导出
 . . 正在导出表                            DEPT          4 行被导出
 EXP-00056: 遇到 ORACLE 错误 904
 ORA-00904: "SYS"."DBMS_EXPORT_EXTENSION"."FUNC_INDEX_DEFAULT": 无效的标识符
 . . 正在导出表                             EMP         14 行被导出
 EXP-00056: 遇到 ORACLE 错误 904
 ORA-00904: "SYS"."DBMS_EXPORT_EXTENSION"."FUNC_INDEX_DEFAULT": 无效的标识符
 . . 正在导出表                        SALGRADE          5 行被导出
 . 正在导出同义词
 . 正在导出视图
 . 正在导出存储的过程
 . 正在导出运算符
 . 正在导出引用完整性约束条件
 . 正在导出触发器
 . 正在导出索引类型
 . 正在导出位图, 功能性索引和可扩展索引
 . 正在导出后期表活动
 . 正在导出实体化视图
 . 正在导出快照日志
 . 正在导出作业队列
 . 正在导出刷新组和子组
 . 正在导出维
 . 正在导出 post-schema 过程对象和操作
 . 正在导出统计
 导出成功终止,但出现警告。
 
 C:\Documents and Settings\Administrator>
  分析:这说明数据库与exp的版本还是不兼容的,经过询问客户和开发人员,原来他们升级过该数据库,看来肯定是升级不完全造成的,
  还要执行1个catproc.sql才行 
12)再以sysdba权限执行 %oracle_home%\rdbms\admin\catproc.sql,执行完后
   运行exp,可以正常导出,完全不报错了
  
13)测试导出导出
   建立一个tempuser用户,在tempuser下建立了一个表,导出导入都正常
13)最后删除试验的用户时
   SQL> drop user tempuser1;
  drop user tempuser1
  *
  ERROR 位于第 1 行:
  ORA-01001: 无效的游标
  ORA-00600: 内部错误代码,参数: [qmxiUnpPacked2], [121], [], [], [], [], [], []
  
  分析:这是严重的内部错误,表明数据库还是没升级完全,此时只能冒险做升级了,幸好之前做了一个备份。
14)关闭数据库,以升级方式打开数据库,执行脚本catpatch.sql
   shutdown immediate
   startup migrate
   @..../catpatch.sql  (执行这个sql之前,一定要保证一些参数必须满足要求,比如share pool,否则一定会报错)
   执行了半个多小时,终于没有报错的情况下执行完。
   
15)再次删除试验的用户
   可以成功删除了
16)最后测试导出用户业务系统的业务用户,可以成功导出,没有警告了。

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有