EXP-00000错误的处理过程
下面是同事在处理EXP错误的过程
1)环境调查
操作系统 windows 2003 server
数据库 oracle9207
standard版本
IP地址 10.44.21.7
操作系统 windows 2003 server
数据库
IP地址
2)目前问题症状
在10.44.21.7对本机数据库做导出操作,报错:
exp scott/tiger file=c:\temp\test.dmp
exp (甚至不加任何参数)
报相同错误如下:
在10.44.21.7对本机数据库做导出操作,报错:
3)检查注册表里的oracle_home=d:\oracle\ora92
结果表明设置是没有问题的
4)在我的手提电脑上做试验,如果将oracle_home改掉,报相同错,将oracle_home改回正确值得,则不报错
5)找一台客户端对问题数据库测试是否能导出
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上的数据库软件
进行比对,看看是否有什么文件没有装全
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: 导出终止失败
9)以sysdba权限执行 %oracle_home%\rdbms\admin\catexp.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>
12)再以sysdba权限执行
%oracle_home%\rdbms\admin\catproc.sql,执行完后
运行exp,可以正常导出,完全不报错了
13)测试导出导出
建立一个tempuser用户,在tempuser下建立了一个表,导出导入都正常
13)测试导出导出
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)再次删除试验的用户
可以成功删除了
15)再次删除试验的用户
16)最后测试导出用户业务系统的业务用户,可以成功导出,没有警告了。