exp oracle 904,9i exp时出现ORA-904、ORA-1003的解决过程

今天早上在日志中发现exp备份时出错:

. . exporting table                  BJ_AFFILIATES         37 rows exported

EXP-00008: ORACLE error 904 encountered

ORA-00904: : invalid identifier

. . exporting table                  BJ_CATEGORIES        175 rows exported

EXP-00008: ORACLE error 1003 encountered

ORA-01003: no statement parsed

. . exporting table                    BJ_LOCATION         12 rows exported

EXP-00008: ORACLE error 904 encountered

ORA-00904: : invalid identifier

. . exporting table                        BJ_TYPE         22 rows exported

EXP-00008: ORACLE error 1003 encountered

ORA-01003: no statement parsed

此错误对前台应用没有任何影响。导出的用户是系统新版本上线时创建的一个新用户,操作过程很简单,从老用户中exp数据,然后imp到新用户,导入导出过程都很正常,没有任何报错,查看错误类型含义:

[oracle@bj47 backup]$ oerr ora 904

00904, 00000, "%s: invalid identifier"

// *Cause:

// *Action:

[oracle@bj47 backup]$ oerr ora 1003

01003, 00000, "no statement parsed"

// *Cause:

// *Action:

看来无法得到原因和采取的活动。网上查询,很多解释都是不同版本的客户端和服务器之间进行exp而导致的,而我的操作是在同一台机器上,显然不是原因。从表DBA_SERVER_ERROR表中查看相应sql,发现如下sql:

SELECT

CNAME, SNAME, SSGFLAG, STSNAME, STSNO, SFILE, SBLOCK,

SDOBJID,             SCHUNKING, SVPOOL, SFLAGS, INAME, ISGFLAG,

ITSNAME, ITSNO, IFILE,             IBLOCK, IDOBJID, IINITRANS,

IMAXTRANS, SPROPERTY, COLTYPE,             COLTYPFLG, BLOCKSIZE,

INTCOLID, OPAQUETYPE      FROM   SYS.EXU9LOBU

WHERE  TOBJID = :1

用sql trace追踪也发现类似的错误,步骤如下:

1、alter system set events='904 trace name errorstack';

2、执行exp

3、在udump下的trace文件中发现:

*** SESSION ID:(44.28384) 2008-06-12 11:11:38.105

*** 2008-06-12 11:11:38.105

ksedmp: internal or fatal error

ORA-00904: : invalid identifier

Current SQL statement for this session:

SELECT

BUCKET, ENDPTHASH, ENDPTVAL,             UTL_RAW.CAST_TO_RAW(ENDPTVAL)

ENDPTVAL_RAW      FROM   SYS.EXU8HSTU      WHERE  POBJ

ID = :1 AND             INTCOL = :2      ORDER BY BUCKET

检查对象EXU8HSTU ,发现它的select权限已经赋予了public用户,也就是所有用户应该都可以访问的:

SQL> select * from dba_tab_privs where table_name='EXU8HSTU'

2  ;

GRANTEE

OWNER                          TABLE_NAME

GRANTOR                        PRIVILEGE

GRANTABLE HIERARCHY

------------------------------

------------------------------ ------------------------------

------------------------------ ----------------------------------------

--------- ---------

PUBLIC

SYS                            EXU8HSTU

SYS                            SELECT

NO        NO

那么难道是新用户对UTL_RAW包没有可执行权限?

SQL> select * from dba_tab_privs where table_name='UTL_RAW';

果然,记录为空,也就是新用户并没有包UTL_RAW的可执行权限,找到原因就好比了,给新用户赋予包UTL_RAW的可执行权限即可:

grant execute on UTL_RAW to newuser;

SQL> select * from dba_tab_privs where table_name='UTL_RAW';

GRANTEE

OWNER                          TABLE_NAME

GRANTOR                        PRIVILEGE

GRANTABLE HIERARCHY

------------------------------

------------------------------ ------------------------------

------------------------------ ----------------------------------------

--------- ---------

NEWUSER

SYS                            UTL_RAW

SYS                            EXECUTE

NO        NO

赋予成功后,exp备份也恢复正常。

仔细回想,UTL_RAW的可执行权限为何会被取消?原来是很久以

前404检查的时候要求将所有UTL开头的包的可执行权限从public用户中取消掉,那么老用户备份的时候怎么就没有报错呢?查询以前的备份日志,发现

其实也含有这样的错误,但是只是在某一个表上,因此没有引起注意:

About to export specified tables via Direct Path ...

. . exporting table                  BJ_AFFILIATES

37 rows exported

. . exporting table                  BJ_CATEGORIES

175 rows exported

. . exporting table                    BJ_LOCATION

12 rows exported

. . exporting table                        BJ_TYPE

22 rows exported

. . exporting table             NG_ADDISTRIBUTIONS

.

117949 rows exported

. . exporting table            NG_ADMANAGERDB_LOCK

1 rows exported

. . exporting table                         NG_ADS

.

118197 rows exported

. . exporting table                     NG_ADSIZES

144 rows exported

. . exporting table                   NG_ADTARGETS

1 rows exported

. . exporting table                 NG_ADVERTISERS

1775 rows exported

EXP-00008: ORACLE error 904 encountered

ORA-00904: : invalid identifier

. . exporting table             NG_ADVERTISERTYPES

。。。。。。

只有为什么老用户只有一个表报错,而新用户所有表都报错,就不得而知了。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle9i Database Error Messages Release 2 (9.2) Contents Title and Copyright Information Send Us Your Comments Preface Audience Organization Related Documentation Conventions Documentation Accessibility Part I Introduction 1 Using Messages Locating Message Documentation Oracle Database Server Product Specific Operating System-Specific Accuracy of Messages Message Format Recognizing Variable Text in Messages Message Stacks Contacting Oracle Support Services Oracle Exception Messages Trace Files The Alert File Part II Oracle Database Server Messages 2 ORA-00000 to ORA-00899 3 ORA-00900 to ORA-01499 4 ORA-01500 to ORA-02099 5 ORA-02100 to ORA-04099 6 ORA-04100 to ORA-07499 7 ORA-07500 to ORA-09857 8 ORA-09858 to ORA-12299 9 ORA-12300 to ORA-12399 10 ORA-12400 to ORA-12699 11 ORA-12700 to ORA-19399 12 ORA-19400 to ORA-24279 13 ORA-24280 to ORA-29249 14 ORA-29250 to ORA-32799 15 ORA-32800 to ORA-32999 16 ORA-33000 to ORA-65535 Part III Oracle Database Server Utilities Messages 17 Export Messages (EXP) 18 Import Messages (IMP) 19 SQL*Loader Messages (SQL*Loader) 20 External Tables Messages (KUP) 21 DBVERIFY Messages (DBV) 22 DBNEWID Messages (NID) 23 Parameter Messages (LCD) 24 Summary Advisor, Explain Rewrite, and Explain Materialized View Messages (QSM) 25 Recovery Manager Messages (RMAN) Part IV Core Library Messages 26 Parameter Messages (LRM) 27 BFILE-Related Messages (LFI) Part V PL/SQL Messages 28 PL/SQL and FIPS Messages (PLS) Part VI Oracle OLAP Catalog Metadata Messages 29 Oracle OLAP Catalog Metadata Messages (AMD) Part VII Network Messages 30 Oracle Net Messages (TNS) 31 Oracle Names Client Messages (NNC) 32 Oracle Names Server Messages (NNO) 33 Oracle Names Control Utility Messages (NNL) 34 Oracle Names Server Network Presentation Layer Messages (NPL) 35 External Naming Messages (NNF) 36 Simple Network Management Protocol Messages (NMP) 37 Remote Operation Messages (NCR) 38 Network Security Messages (NZE) Part VIII Precompiler Messages 39 SQL*Module Messages (MOD) 40 Object Type Translator Type File Messages (O2F) 41 Object Type Translator Initialization Messages (O2I) 42 Object Type Translator Unparser Messages (O2U) 43 Pro*COBOL Messages (PCB) 44 PCF FIPS Messages (PCF) 45 Pro*C/C++ Messages (PCC) 46 SQL Runtime Messages (SQL) Part IX interMedia Messages 47 interMedia Audio Messages (AUD) 48 interMedia Image Messages (IMG) 49 interMedia Video Messages (VID) Part X Oracle Text Messages 50 Oracle Text Messages (DRG) Part XI XML Messages 51 XML Parser Messages (LPX) 52 XML Schema Processor Messages (LSX) Part XII Oracle Trace Messages 53 Oracle Trace Collection Services Messages (EPC) Index

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值