Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2880551
  • 博文数量: 599
  • 博客积分: 16398
  • 博客等级: 上将
  • 技术积分: 6875
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-30 12:04
个人简介

WINDOWS下的程序员出身,偶尔也写一些linux平台下小程序, 后转行数据库行业,专注于ORACLE和DB2的运维和优化。 同时也是ios移动开发者。欢迎志同道合的朋友一起研究技术。 数据库技术交流群:58308065,23618606

文章分类

全部博文(599)

文章存档

2014年(12)

2013年(56)

2012年(199)

2011年(105)

2010年(128)

2009年(99)

分类: Oracle

2010-07-29 11:03:39

今天在用11GR2客户端全库导出10GR2版本的数据库时报ORA-00904错误。

C:\>exp file=full.dmp  full=y buffer=10485760

Export: Release 11.2.0.1.0 - Production on 星期四 7月 29 10:24:05 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Produc
tion
With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine
and Real Application Testing options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
服务器使用 AL32UTF8 字符集 (可能的字符集转换)

即将导出整个数据库...
. 正在导出表空间定义
EXP-00008: 遇到 ORACLE 错误 904
ORA-00904: "MAXSIZE": 标识符无效
EXP-00000: 导出终止失败


而在本地导出是没问题的。

初步怀疑是版本的问题。

打一个SQLPLUS在会话级启用模块级别的跟踪。


SQL> exec dbms_monitor.serv_mod_act_trace_enable('uatdb2','exp.exe');

PL/SQL procedure successfully completed.


在客户端重新运行:
C:\>exp
file=full.dmp  full=y buffer=10485760

在跟踪文件中,执行到下面就执行不下去了。
=====================
PARSING IN CURSOR #5 len=37 dep=1 uid=0 oct=3 lid=0 tim=4846799102675 hv=1398610540 ad='df1eea8'
select text from view$ where rowid=:1
END OF STMT
PARSE #5:c=0,e=27,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=4846799102673
EXEC #5:c=0,e=24,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=4846799102771
FETCH #5:c=0,e=30,p=0,cr=2,cu=0,mis=0,r=1,dep=1,og=4,tim=4846799102821
STAT #5 id=1 cnt=1 pid=0 pos=1 obj=63 op='TABLE ACCESS BY USER ROWID VIEW$ (cr=1 pr=0 pw=0 time=21 us)'
=====================
PARSE ERROR #6:len=173 dep=0 uid=5 oct=3 lid=5 tim=4846799103471 err=904
SELECT ID, OWNER, NAME, ISONLINE, CONTENT, INIEXT, SEXT, PCTINC, MINEXT,             MAXEXT, MINLEN, DEFLOG, EXT_MGT, ALLOC_TYPE,

BLOCKSIZE, MAXSIZE      FROM   SYS.EXU9TBS
WAIT #6: nam='SQL*Net message to client' ela= 1 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=4846799103578
WAIT #6: nam='SQL*Net message from client' ela= 3524 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=4846799107140
XCTEND rlbk=0, rd_only=1

其中SELECT ID, OWNER, NAME, ISONLINE, CONTENT, INIEXT, SEXT, PCTINC, MINEXT,             MAXEXT, MINLEN, DEFLOG, EXT_MGT,

ALLOC_TYPE, BLOCKSIZE, MAXSIZE      FROM   SYS.EXU9TBS 这条SQL语句里面有个MAXSIZE最为可疑。
拿出来到SQLPLUS下执行以下:

SQL> SELECT ID, OWNER, NAME, ISONLINE, CONTENT, INIEXT, SEXT, PCTINC, MINEXT, AXEXT, MINLEN, DEFLOG, EXT_MGT, ALLOC_TYPE,

BLOCKSIZE, MAXSIZE FROM   SYS.EXU9TBS;
SELECT ID, OWNER, NAME, ISONLINE, CONTENT, INIEXT, SEXT, PCTINC, MINEXT, AXEXT, MINLEN, DEFLOG, EXT_MGT, ALLOC_TYPE, BLOCKSIZE,

MAXSIZE FROM   SYS.EXU9TBS
                                                                                                                                *
ERROR at line 1:
ORA-00904: "MAXSIZE": invalid identifier

果然报了相同的错误。 查看了一下这个表的结构,根本没有MAXSIZE这个字段。

SQL> desc sys.EXU9TBS
 Name                                                  Null?    Type
 ----------------------------------------------------- -------- ------------------------------------
 ID                                                    NOT NULL NUMBER
 OWNER                                                          CHAR(6)
 NAME                                                  NOT NULL VARCHAR2(30)
 ISONLINE                                                       VARCHAR2(7)
 CONTENT                                                        VARCHAR2(9)
 INIEXT                                                NOT NULL NUMBER
 SEXT                                                  NOT NULL NUMBER
 PCTINC                                                NOT NULL NUMBER
 MINEXT                                                NOT NULL NUMBER
 MAXEXT                                                NOT NULL NUMBER
 MINLEN                                                         NUMBER
 DEFLOG                                                NOT NULL NUMBER
 EXT_MGT                                               NOT NULL NUMBER
 ALLOC_TYPE                                            NOT NULL NUMBER
 BLOCKSIZE                                             NOT NULL NUMBER


这个表里记录的是和表空间相关的信息。

而在11G的版本中,这个字段是有的。

ORACLE的客户端竟然不向下兼容,不知道这个算不算BUG。

解决方法还是用相同版本的客户端导出或者在服务端导出。


 

阅读(3660) | 评论(0) | 转发(0) |
0

上一篇:设置默认值要谨慎

下一篇:IN-List Iterator

给主人留下些什么吧!~~