一次exp导出出错的原因分析

客户金保数据库从10g转成11g,需要定期从生产库抽取数据到金保数据库中,考虑到生产库没有多余的空间存放expdp产生的文件,数据抽取采用远程exp及imp方式,从金保服务端直接exp到金保本地,导出过程中报错:

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 – 64bit Production

With the Partitioning, Real Application Clusters, OLAP, Data Mining

and Real Application Testing options

已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

 

即将导出指定的表通过常规路径…

. . 正在导出表 AB01

EXP-00008: 遇到 ORACLE 错误 904

ORA-00904: “MAXSIZE”: invalid identifier

. . 正在导出表 AB02

EXP-00008: 遇到 ORACLE 错误 1003

ORA-01003: no statement parsed

. . 正在导出表 AB07

EXP-00008: 遇到 ORACLE 错误 904

ORA-00904: “MAXSIZE”: invalid identifier

. . 正在导出表 AB09

EXP-00008: 遇到 ORACLE 错误 1003

ORA-01003: no statement parsed

. . 正在导出表 AB14

EXP-00008: 遇到 ORACLE 错误 904

ORA-00904: “MAXSIZE”: invalid identifier

. . 正在导出表 ABC1

EXP-00008: 遇到 ORACLE 错误 1003

 

从该报错信息上看,MAXSIZE字段报错,无效的定义,应该是oracle的内部机制出现错误,而之前的10g客户端exp都不存在问题,我们通过跟踪该导出过程,发现报错出现在以下的查询过程中:

ksedmp: internal or fatal error

ORA-00904: “MAXSIZE”: invalid identifier

Current SQL statement for this session:

SELECT INIEXT, SEXT, MINEXT, MAXEXT, PCTINC, BLOCKS, LISTS, GROUPS, EXTENTS, PCACHE, TS_TYPE, TSNAME, ISONLINE, BLOCKSIZE, HSCOMPRESS,MAXSIZE FROM SYS.EXU9STOU WHERE FILENO = :1 AND BLOCKNO = :2 AND TSNO = :3

 

当我们使用exp工具导出数据的时候,需要访问SYS.EXU9STOU表以获取基本的对象存储参数,而从报错信息上也可以很明显的看出,查询对于MAXSIZE字段定义无效,我们分别比对11g及10g的关于该表的列信息:

 

 

从以上信息我们可以看到,从11g开始SYS.EXU9STOU表增加了字段

MAXSIZE NUMBER

从而导致该导出过程报错。

 

从以上结果看,该报错原因也就很明确了,通过11g的客户端导出10g的数据时无法导出的,也就是高版本客户端无法导出低版本数据库。如果需要通过exp,导出,建议还是采用与生产同版本的数据库客户端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值