EXP-00008: 遇到 ORACLE 错误 904 ORA-00904: "MAXSIZE": invalid identifier

本文详细阐述了在不同Oracle版本间执行数据导出时遇到的异常错误,包括数据字典丢失的问题及其解决办法。通过对比Oracle 10g与11g的数据字典差异,揭示了MAXSIZE这一新加入项导致的问题,并最终通过重建数据字典成功解决了导出失败的问题。文章强调了版本一致性对于避免此类技术挑战的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因:oracle版本不一样

 

执行

C:/>EXP plx/plx@orcl  FILE=c:/plx.dmp TABLES=(s,sc,c)

结果报错

Export: Release 11.1.0.6.0 – Production on 星期日 7月 26 12:42:19 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved. 
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 UTF8 NCHAR 字符集
服务器使用 UTF8 字符集 (可能的字符集转换)

即将导出指定的表通过常规路径…
. . 正在导出表                               S
EXP-00008: 遇到 ORACLE 错误 904
ORA-00904: “MAXSIZE”: invalid identifier
. . 正在导出表                              SC
EXP-00008: 遇到 ORACLE 错误 1003
ORA-01003: no statement parsed
. . 正在导出表                               C
EXP-00008: 遇到 ORACLE 错误 904
ORA-00904: “MAXSIZE”: invalid identifier
EXP-00008: 遇到 ORACLE 错误 942
ORA-00942: table or view does not exist
EXP-00024: 未安装导出视图, 请通知您的 DBA 
EXP-00000: 导出终止失败

 

很诡异,从来没见过的错误,怎么会报没有字段的错误呢。

于是Google(在技术资料方面BAIDU就是垃圾),

有个哥们说是数据字典丢了,我很诧异,我前几天在Oracle 10g Client下导出过了,怎么会丢失数据字典,还是半信半疑的执行了。

在服务器上执行

oracle@linux-lrn6:~> sqlplus sys/sys@orcl as sysdba

SQL >@/opt/oracle/product/10.2/db_1/rdbms/admin/catexp.sql

以重建数据字典。

 

建好了后,再次执行导出,还是不行。

但是我在服务器上执行同样的语句就可以。

于是我意识到可能是EXP版本问题,于是测试。

 

在一台11g的机器上运行一条SQL 检 测那个MAXSIZE是个什么列。

SQL > select distinct table_name from user_col_comments where column_name=’MAXSIZE’;

TABLE_NAME
————————————————————
EXU9STOU
EXU9PLB
EXU9PDSU
EXU9LBCPU
EXU9PDS
EXU9IXCP
CPOOL$
EXU9TBCPU
EXU9TBCP
EXU9STO
EXU9IXCPU

TABLE_NAME
————————————————————
DBA_CPOOL_INFO
EXU9TBS
EXU9PLBU
EXU9LBCP

 

然后在10g的服务器上运行同样的语句,没有返回行。可见MAXSIZE是11g在数据字典中新加的项,10g是没有的。

 

#10g
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL > desc sys.exu9tbs
名 称                                      是否为空? 类型
—————————————– ——– —————————-
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 Database 11g Enterprise Edition Release 11.1.0.7.0 – Production
With the Partitioning, OLAP and Real Application Testing options

SQL > desc sys.exu9tbs 
名 称                                      是否为空? 类型
—————————————– ——– ————————-
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
MAXSIZE                                                 NUMBER ———>问题在这里

 

所以,导入导出数据的时候,还是尽可能的版本统一,10g导10g 的,11g导11g的,免得不必要的麻烦。


SELECT df.tablespace_name AS "表空间名", df.total_space AS "总空间(MB)", NVL(fs.free_space, 0) AS "空闲空间(MB)", (df.total_space - NVL(fs.free_space, 0)) AS "已用空间(MB)", ROUND((df.total_space - NVL(fs.free_space, 0)) 2 3 4 5 6 * 100 / df.total_space, 2) AS "利用率(%)" FROM (SELECT tablespace_name, ROUND(SUM(bytes) / 1024 / 1024, 2) total_space FROM dba_data_files GROUP BY tablespace_name) df LEFT JOIN (SELECT 7 8 9 10 11 12 13 14 15 16 17 tablespace_name, ROUND(SUM(bytes) / 1024 / 1024, 2) free_space FROM dba_free_space GROUP BY tablespace_name) fs ON df.tablespace_name = fs.tablespace_name ORDER BY "利用率(%)" DESC; 18 19 20 21 22 23 24 25 26 表空间名 总空间(MB) 空闲空间(MB) 已用空间(MB) 利用率(%) ------------------------------ ---------- ------------ ------------ ---------- SYSTEM 65527.98 117.94 65410.04 99.82 TIMP_XZEEMS_INTER_FLOW 20992 1237.13 19754.87 94.11 SYSAUX 1800 116.94 1683.06 93.5 TIMP_XZEEMS_INTRA_FLOW 8192 768.69 7423.31 90.62 USERS 5 3.69 1.31 26.2 UNDOTBS1 175 137.94 37.06 21.18 TIMP_XZEEMS_INTRA 1024 985.31 38.69 3.78 TIMP_XZEEMS_INTER 1024 986.13 37.87 3.7 TIMP_XZEEMS_MQ_INTRA 1024 1019.63 4.37 .43 9 rows selected. SQL> SELECT a.tablespace_name AS "表空间名", ROUND(a.bytes_alloc / 1024 / 1024, 2) AS "总空间(MB)", ROUND((a.bytes_alloc - NVL(b.bytes_free, 0)) / 1024 / 1024, 2) AS "已用空间(MB)", ROUND(NVL(b.bytes_free, 0) / 1024 / 1024, 2) AS "空 2 3 4 5 闲空间(MB)", ROUND((a.bytes_alloc - NVL(b.bytes_free, 0)) / a.bytes_alloc * 100, 2) AS "利用率(%)", a.autoextensible AS "自动扩展" FROM (SELECT tablespace_name, SUM(bytes) bytes_alloc, MAX(autoextensible) aut 6 7 8 9 10 11 12 oextensible FROM dba_data_files GROUP BY tablespace_name) a LEFT JOIN (SELECT tablespace_name, SUM(bytes) bytes_free FROM dba_free_space GROUP BY tablespace_name) b ON a.tablespace_name = b.tablespace_name UNION AL 13 14 15 16 17 18 19 20 21 22 L SELECT tablespace_name AS "表空间名", ROUND(SUM(bytes) / 1024 / 1024, 2) AS "总空间(MB)", ROUND(SUM(bytes_used) / 1024 / 1024, 2) AS "已用空间(MB)", ROUND(SUM(bytes_free) / 1024 / 1024, 2) AS "空闲空间(MB)", ROUND(SUM( 23 24 25 26 27 28 bytes_used) / SUM(bytes) * 100, 2) AS "利用率(%)", 'YES' AS "自动扩展" FROM dba_temp_free_space GROUP BY tablespace_name ORDER BY 5 DESC; 29 30 31 32 ROUND(SUM(bytes_used) / SUM(bytes) * 100, 2) AS "利用率(%)", * ERROR at line 28: ORA-00904: "BYTES": invalid identifier
最新发布
08-07
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值