精华内容
下载资源
问答
  • ORA-00904
    2021-04-30 09:44:18

    案例学习Oracle错误:ORA-00904

    ORA-00904 invalid column name

    ORA-00904: 无效的列名

    Cause The column name entered is either missing or invalid.

    Action Enter a valid column name. A valid column name must begin with a letter, be less than or equal to 30 characters, and consist of only alphanumeric characters and the special characters $, _, and #. If it contains other characters, it must be enclosed in double quotation marks. It may not be a reserved word.

    原因:列丢失或无效列名。

    方案:输入有效的列名。一个有效的列名必须是以字母开头,小于30个字符,并且只包含字母、数字或一些特殊的符号$,_,#。如果还包含其它的字符,那么这段字符必须用双引号引起来。列名不能是关键字。

    案例一:创建表时出现的问题

    问题描述:

    SQL> DESC S_CUSTOMER;

    名称 是否为空? 类型

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

    id NOT NULL NUMBER(7)

    name NOT NULL VARCHAR2(50)

    phone VARCHAR2(25)

    address VARCHAR2(400)

    city VARCHAR2(30)

    state VARCHAR2(20)

    country VARCHAR2(30)

    zip_code VARCHAR2(75)

    credit_rating VARCHAR2(9)

    sales_rep_id NUMBER(7)

    region_id NUMBER(7)

    comments VARCHAR2(255)

    但是当我SELECT的时候总是报错:

    SQL> SELECT ID FROM S_CUSTOMER;

    SELECT ID FROM S_CUSTOMER

    *

    ERROR 位于第 1 行:

    ORA-00904: "ID": 无效的标识符

    怎么会这样呢?

    解决方案:ORACLE通过访问SQL Server的数据库链接时,用select * 的时候字段名是用双引号引起来的。你创建表的语句加了双引号的吗?估计是PD类似的工具创建的脚本吧?

    看下面的例子

    SQL> create table test ("id" number not null);

    表已创建。

    SQL> select ID FROM test;

    select ID FROM test

    *

    ERROR 位于第 1 行:

    ORA-00904: "ID": 无效的标识符

    SQL> select id from test;

    select id from test

    *

    ERROR 位于第 1 行:

    ORA-00904: "ID": 无效的标识符

    SQL> desc test;

    名称 是否为空? 类型

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

    id NOT NULL NUMBER

    SQL> select "id" from test;

    未选定行

    SQL>

    案例二:

    环境:solaris+oracle

    问题:exp时遇到

    EXP-00008: ORACLE error 904 encountered

    ORA-00904: invalid column name

    EXP-00000: Export terminated unsuccessfully

    提供的情况:wcs组使用java,所以判断是java的问题。ora-00904时oracle的一个bug。

    所以需要使用errorstack来追踪错误。执行

    alter system set events=‘904 trace name errorstack‘;

    然后到udump下查看trace文件。发现是exu8jbqu这个view的问题。

    alter system set events=‘904 trace name errorstack off‘;

    查看exu8jbqu是否存在:

    select owner,object_name,object_type,object_id,status

    from dba_objects where object_name=‘exu8jbqu‘;

    发现存在。重新执行$ORACLE_HOME/rdbms/admin/catexp.sql 创建视图。

    重新执行exp成功。问题解决。

    案例三:

    环境 unix+oracle

    在做完全导出的时候,导出表都正常但到导出同义词时出错,错误如下:

    exporting synonyms

    exp-0000 racle error 904 encountered

    ora-00904 invalid column name

    exp-0000 exp terminaled unsuccessful

    使用任何一个用户导出该的数据同样在这个地方停住,请问这是由于什么情况造成的,该如何解决才能正常exp整个数据库呢?之前碰上过类似的情况: 数据库被改了字符集后,导出时也是到synonym的时候出错误,报"shortname" 错误,后来把字符集改回原来安装的时候选择的字符集即可。 使这个问题吗?

    解决方案:原因不是字符集的问题,而是同义词引起的,找出来将其删除就可以了。

    案例四:Oracle环境中访问所有的SQL Server字段出错

    问题描述:我刚刚从Oracle建立了一条到SQL Server的连接,使用的是普通的连接,我想要执行一条select * from tablename@dblink 的命令。然而,我注意到SQL Server表中所有的字段都无法在Oracle环境中访问。当我试图选择我认为应该在表中的字段的时候,我得到ORA-00904的错误信息:无效列名。针对这个问题的可能的解释和解决方案是什么?

    解决方案:当你在你的语句中指定了列名的时候,确保你用双引号括住了列名,并且名字是区分大小写的。例如:SELECT "column_A","Column_B" FROM "TableXYz"。

    Oracle倾向于将上述字母转换为大写字母,SQL Server则对大小写更加敏感。这就是最有可能的原因。

    案例五:不访问系统表获取无效列名

    问题描述:当我从我的应用程序中运行SQL语句的时候,我得到如下的错误信息:“ORA-00904”无效列名。我的问题是,在不访问系统表的时候,有没有一种方式可以获得有关这个错误的更多信息,例如那些无效的列名?

    解决方案:当你获得这个消息的时候运行了什么查询?你的答案就在这里。运行的查询中的一个列是无效的。如果你能运行这个查询,那么你就可以看到包括了查询中表的信息的“系统表”。只需要开启SQL*Plus 会话,并且对表(或者一些表)进行描述。你的查询中的一个列就不会是其中一个表的有效列名了。

    如果你不知道SQL语句是什么,那么你就要运行的时候进行追踪,找出错误中的语句。如果你不熟悉,不知道该怎么做的话,需要请求数据库管理员的帮助。

    案例六:查看拥有抽象字段数据类型的表中记录出错

    问题描述:我想要查看一个表中记录,这个表中有一个字段具有抽象的数据类型,我创建了如下的类型:

    create or replace type marks_ty as object

    (m1 number(3),

    m2 number(3),

    m3 number(3),

    member function totmarks(m1 in number,m2 in

    number,m3 in number)

    return number);

    /

    然后我创建了如下的类型体:

    create or replace type body marks_ty as

    member function totmarks(m1 number,m2 number,m3

    number)

    return number is

    begin

    return (m1+m2+m3);

    end;

    end;

    /

    其次,创建了如下的表:

    create table stdmarks

    ( student_id number(4),

    marks marks_ty);

    然后,我向其中插入了一些记录。之后,我执行了如下的语句:

    select marks.totmarks(marks.m1,marks.m2,marks.m3)

    from stdmarks;

    但是我却碰到了如下的错误信息:

    select marks.totmarks(marks.m1,marks.m2,marks.m3)

    from stdmarks

    *

    ERROR at line 1:

    ORA-00904: invalid column name

    请帮助我。我在Oracle企业版中都试过了。

    解决方案:一个有关你进行的操作的很少被人了解的事实就是你需要给表名起个别名,并且在调用成员函数的时候使用别名。那么,对你的查询进行如下修改:

    SELECT s.marks.totmarks(marks.m1,marks.m2,marks.m3)

    FROM stdmarks s;

    案例七:探究ORA-00904错误信息

    问题描述:我注意到您对ORA-00904错误信息的解答,这个ORA-00904错误信息是在链接SQL 服务器数据库表之后,试图对不同类型的列进行选择时出现的。您的答案说,每个列都需要用双引号来包围。这样做好吗?我们有一个应用程序,但是我们并不希望有这样的限制。这里面有什么考虑吗?

    解决方案:你可以试试看,改变你的SQL服务器实例的校验,使它不为默认情况下的大小写敏感。此时,表名“MyTable”和“MYTABLE”指的是同一个表。

    更多相关内容
  • oracle19c缺少的函数
  • ORA-00904 WMSYS.WM_CONCAT标识符无效解决方案
  • Oracle数据库报错ORA-00904: 标识符无效问题解决办法,有可能是字段名或者表名写错了,也有可能是
  • ①使用navicat建模工具建立完成表结构后,导出sql语句或直接同步该模型到指定用户模式中,我们使用正常的查询语句查询内容报错【ORA-00904: "CREATETIME": 标识符无效】;②执行插入的sql语句时报错【ORA-00913: 值...

    一、问题描述

    ①使用navicat建模工具建立完成表结构后,导出sql语句或直接同步该模型到指定用户模式中,我们使用正常的查询语句查询内容报错【ORA-00904: "CREATETIME": 标识符无效】;

    ②执行插入的sql语句时报错【ORA-00913: 值过多】;

    二、问题分析

    2.1、ORA-00904: "CREATETIME": 标识符无效

    我们检查navicat建模工具导出的建表语句,发现字段都是添加双引号的;

     

    如果我们使用sql语句比如【SELECT CreateTime FROM "IQC_MaterialStandard_Record"】,就会报如下所示的错误:

     

    Oracle中单引号、双引号说明
    序号说明
    1

    在Oracle中双引号的作用是:

    1、【如果创建对象的时候,对象名、字段名加双引号,则表示Oracle将严格区分大小写】;

    2、【否则Oracle都默认大写】

    2

    单引号表示:加了单引号的字段是一个字类似字符串,并不区分大小写。

    单引号用于标识字符与数字的区别;

    当指定字符串文本时,必须用单引号将字符串文本引住。

    1-引用一个字符串常量,也就是界定一个字符串的开始和结束
    
     select * from TEST where ID='100010';  --查询ID为100010的字符信息
    
     select * from TEST where ID=100010;  --查询JID为100010的整形数字
    
    
    2-转义符,对紧随其后出现的字符(单引号)进行转义 
    
     select ' '' ' result from dual; --第二个单引号被作为转义符,第三个单引号被转义.结果为 '
    
     select 'name''''' result from dual; --结果为name''
    
     select 'name'||'''' result from dual;  --结果为name','||' 被转义为字符拼接
    
    3

    双引号用于【关键字对象名字段名别名

    双引号场景示例:
    
    1、使用了关键字
    select "sysdate" from dual;  -- 等同于select sysdate from dual; 
    
    2、严格区分字段的大小写
    select * from test where "ReName" = '思雨'; --双引号提示oracle严格区分大小写,rename将报错
    
    3、使用别名
    select RENAME "别名" from TEST; --别名中若有特殊字符或关键字,需要双引号包住
    

    2.2、ORA-00913: 值过多

     查看我们的sql语句【
    INSERT INTO "IQC_MaterialStandard_Record"("Id","InspectionLot","MaterialType") VALUES('100010','3002004101','备件','2022-06-10 13:29:36')】,仔细查看后发现是由于需插入的数据多于字段,匹配不上报的错误。

    三、解决方法

    3.1、解决ORA-00904: "XXX字段": 标识符无效

    方法一:给字段添加上双引号在查询

    //原来报错语句
    SELECT CreateTime FROM "IQC_MaterialStandard_Record"
    
    //修改后可以正常执行的语句(需要给字段添加双引号)
    SELECT "CreateTime" FROM "IQC_MaterialStandard_Record"
            /// <summary>
            /// 串联字符串数组的所有元素,其中在每个元素之间使用指定的分隔符,在每个元素两边添加指定标识符。
            /// </summary>
            /// <param name="separator">分隔符(比如逗号【","】)</param>
            /// <param name="fieldContainMark">字段两边包含的标识符(比如字段两边包含双引号【"\""】)</param>
            /// <param name="values">需串联的数组</param>
            /// <returns>返回串联字符串内容</returns>
            public static string Join(String separator,string fieldContainMark, params string[] values)
            {
                if (string.IsNullOrEmpty(separator) || values == null || values.Length <= 0) return null;
    
                string str = string.Empty;
                int len = values.Length;
    
                if (!string.IsNullOrEmpty(fieldContainMark))
                {
                    for (int i = 0; i < len - 1; i++)
                    {
                        str += $"{fieldContainMark}{values[i]}{fieldContainMark}{separator}";
                    }
                    str += $"{fieldContainMark}{values[len - 1]}{fieldContainMark}";
                }
                else
                {
                    for (int i = 0; i < len - 1; i++)
                    {
                        str += $"{values[i]}{separator}";
                    }
                    str += $"{values[len - 1]}";
                }
    
                return str;
            }
     //获取到指定模型的属性名称
     var props = typeof(MaterialModel).GetProperties().Select(x => x.Name).ToArray();
    
    //组装插入sql(获取到模型属性作为字段名称且带双引号的数组)
    string cols = EntityHelper.Join(",","\"",props);

    方法二:重新创建该表,去除字段上的双引号

     也可以使用其他编辑工具替换掉sql语句中的双引号,然后执行sql语句重新创建表后执行以前的语句就可以正常执行了。

    3.2、解决ORA-00913: 值过多

    检查sql语句发现是填充的值多于指定的字段内容,只用添加上对应的字段或删除多于的值即可,如下:

    //原来的错误sql语句
    INSERT INTO "IQC_MaterialStandard_Record"("Id","InspectionLot","MaterialType") VALUES('100010','3002004101','备件','2022-06-10 13:29:36')
    
    //现在正确的sql语句(具体需要添加字段还是删除数据还需要根据自己建立的表字段查看)
    INSERT INTO "IQC_MaterialStandard_Record"("Id","InspectionLot","MaterialType","CreateTime") VALUES('100010','3002004101','备件','2022-06-10 13:29:36')
    展开全文
  • ORA-39126: Worker unexpected fatal error in KUPW$WORKER.FETCH_XML_OBJECTS [] ORA-00904: : invalid identifier ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86 ORA-06512: at "SYS.KUPW$WORKER", line 8996 ---...

    expdp test/123456 dumpfile=b.dmp directory=DUMP_DLSP 使用数据汞的过程中遭遇如下错误,从我使用的参数来看,并没有使用什么高

    expdp test/123456 dumpfile=b.dmp directory=DUMP_DLSP

    使用数据汞的过程中遭遇如下错误,从我使用的参数来看,并没有使用什么高级的参数,都是最最普通的参数。查看MOS,,没发现有跟我比较类似的报错信息。通过10046也没跟踪到有价值的报错信息。

    Export: Release 11.2.0.3.0 - Production on Mon Feb 17 14:17:44 2014

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

    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    FLASHBACK automatically enabled to preserve database integrity.

    Starting "TEST"."SYS_EXPORT_SCHEMA_08": test/******** dumpfile=b.dmp directory=DUMP_DLSP REUSE_DUMPFILES=y

    Estimate in progress using BLOCKS method...

    ORA-39126: Worker unexpected fatal error in KUPW$WORKER.FETCH_XML_OBJECTS []

    ORA-00904: : invalid identifier

    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86

    ORA-06512: at "SYS.KUPW$WORKER", line 8996

    ----- PL/SQL Call Stack -----

    object line object

    handle number name

    0x613b0898 20462 package body SYS.KUPW$WORKER

    0x613b0898 9028 package body SYS.KUPW$WORKER

    0x613b0898 10935 package body SYS.KUPW$WORKER

    0x613b0898 13698 package body SYS.KUPW$WORKER

    0x613b0898 2654 package body SYS.KUPW$WORKER

    0x613b0898 9697 package body SYS.KUPW$WORKER

    0x613b0898 1775 package body SYS.KUPW$WORKER

    0x6145f9f0 2 anonymous block

    Estimate in progress using BLOCKS method...

    ORA-39126: Worker unexpected fatal error in KUPW$WORKER.FETCH_XML_OBJECTS []

    ORA-00904: : invalid identifier

    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86

    ORA-06512: at "SYS.KUPW$WORKER", line 8996

    ----- PL/SQL Call Stack -----

    object line object

    handle number name

    0x613b0898 20462 package body SYS.KUPW$WORKER

    0x613b0898 9028 package body SYS.KUPW$WORKER

    0x613b0898 10935 package body SYS.KUPW$WORKER

    0x613b0898 13698 package body SYS.KUPW$WORKER

    0x613b0898 2654 package body SYS.KUPW$WORKER

    0x613b0898 9697 package body SYS.KUPW$WORKER

    0x613b0898 1775 package body SYS.KUPW$WORKER

    0x6145f9f0 2 anonymous block

    Job "TEST"."SYS_EXPORT_SCHEMA_08" stopped due to fatal error at 14:17:48

    询问同事是否这个数据库一直存在数据汞不能使用的问题,答复一直可以使用,是刚发现的问题。

    回想这几天我对这个数据库的操作,怀疑到可能是权限的问题,因为之前做过一个操作,取消了DBMS_METADATA的public权限。

    而数据汞导出数据过程中是要获取表结构信息的。

    因此尝试重新赋予DBMS_METADATA为public权限,问题解决。

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

    Linux-6-64下安装Oracle 12C笔记

    在CentOS 6.4下安装Oracle 11gR2(x64)

    Oracle 11gR2 在VMWare虚拟机中安装步骤

    Debian 下 安装 Oracle 11g XE R2

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

    本文永久更新链接地址:

    logo.gif

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • 主题:EXP导出aud$报错EXP-00008,ORA-00904 解决环境:Oracle 11.2.0.4问题:在自己的测试环境,导出sys用户下的aud$表报错。1.故障现场2.跟踪处理3.匹配MOS文章4.使用MOS解决方案1.故障现场导出sys用户下的表,依据...

    主题:EXP导出aud$报错EXP-00008,ORA-00904 解决

    环境:Oracle 11.2.0.4

    问题:在自己的测试环境,导出sys用户下的aud$表报错。

    1.故障现场

    2.跟踪处理

    3.匹配MOS文章

    4.使用MOS解决方案

    1.故障现场

    导出sys用户下的表,依据经验使用system用户导出:

    Oracle如何导出sys用户下的系统表  http://www.linuxidc.com/Linux/2018-01/150540.htm

    按照这个方法,exp导出时报错,具体报错信息如下:

    [oracle@jyrac1 ~]$ exp system/oracle file=audit.dmp log=audit.log tables=sys.aud$

    Export: Release 11.2.0.4.0 - Production on Wed Jan 17 17:16:30 2018

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

    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

    With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

    Data Mining and Real Application Tes

    Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set

    About to export specified tables via Conventional Path ...

    Current user changed to SYS

    . . exporting table                          AUD$

    EXP-00008: ORACLE error 904 encountered

    ORA-00904: : invalid identifier

    Export terminated successfully with warnings.

    2.跟踪处理

    使用oradebug跟踪对应的exp进程:

    2.1 exp 交互式

    [oracle@jyrac1 ~]$ exp system/oracle

    Export: Release 11.2.0.4.0 - Production on Wed Jan 17 17:20:17 2018

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

    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

    With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

    Data Mining and Real Application Tes

    Enter array fetch buffer size: 4096 >

    2.2 定位exp进程的SPID:

    SELECT p.spid,

    p.addr,

    p.pid,

    s.sid,

    SUBSTR(s.username, 1, 15) "USERNAME",

    SUBSTR(s.program, 1, 15) "PROGRAM"

    FROM v$process p, v$session s

    WHERE s.paddr = p.addr

    AND addr =

    (SELECT paddr FROM v$session WHERE UPPER(program) LIKE 'EXP%');

    结果如下:

    SYS@jyzhao1 >SELECT p.spid,

    2        p.addr,

    3        p.pid,

    4        s.sid,

    5        SUBSTR(s.username, 1, 15) "USERNAME",

    6        SUBSTR(s.program, 1, 15) "PROGRAM"

    7    FROM v$process p, v$session s

    8  WHERE s.paddr = p.addr

    9    AND addr =

    10        (SELECT paddr FROM v$session WHERE UPPER(program) LIKE 'EXP%');

    SPID                    ADDR                    PID        SID USERNAME                      PROGRAM

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

    15552                    000000007F4CA268        33        141 SYSTEM                        exp@jyrac1 (TNS

    2.3 oradebug跟踪spid:

    SQL> oradebug setospid 15552

    SQL> oradebug unlimit

    SQL> oradebug tracefile_name

    SQL> oradebug Event 10046 trace name context forever, level 12

    实际过程记录:

    SYS@jyzhao1 >oradebug setospid 15552

    Oracle pid: 33, Unix process pid: 15552, image: oracle@jyrac1 (TNS V1-V3)

    SYS@jyzhao1 >oradebug unlimit

    Statement processed.

    SYS@jyzhao1 >oradebug tracefile_name

    /opt/app/oracle/diag/rdbms/jyzhao/jyzhao1/trace/jyzhao1_ora_15552.trc

    SYS@jyzhao1 >oradebug Event 10046 trace name context forever, level 12

    Statement processed.

    2.4 查看10046的跟踪文件:

    我搜索904这个错误,可以匹配到err=904的部分

    =====================

    PARSE ERROR #139705015595160:len=301 dep=0 uid=5 oct=3 lid=5 tim=1516181414835913 err=904

    SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM), DBMS_JAVA.LONGNAME(SYNTAB),            TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO      FROM  SYS.EXU9PTS      WHERE  SYNOBJNO IN (          SELECT SYNOBJNO          FROM SYS.EXU9TYPT          WHERE TABOBJNO = :1 )      ORDER  BY SYNTIME

    WAIT #139705015595160: nam='SQL*Net message to client' ela= 1 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181414836191

    WAIT #139705015595160: nam='SQL*Net message from client' ela= 127 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181414836355

    WAIT #0: nam='SQL*Net message to client' ela= 1 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181414836399

    *** 2018-01-17 17:30:19.545

    WAIT #0: nam='SQL*Net message from client' ela= 4709518 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181419545928

    WAIT #0: nam='SQL*Net message to client' ela= 2 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181419546119

    WAIT #0: nam='SQL*Net message from client' ela= 65 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181419546230

    PARSE #139705014733696:c=0,e=17,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=3684871272,tim=1516181419547202

    BINDS #139705014733696:

    Bind#0

    oacdty=11 mxl=16(16) mxlc=00 mal=00 scl=00 pre=00

    oacflg=18 fl2=0001 frm=00 csi=00 siz=16 off=0

    kxsbbbfp=7f0f9bca8510  bln=16  avl=16  flg=05

    value=00002451.0000.0001

    EXEC #139705014733696:c=0,e=98,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=3684871272,tim=1516181419547371

    FETCH #139705014733696:c=0,e=59,p=0,cr=2,cu=0,mis=0,r=1,dep=1,og=4,plh=3684871272,tim=1516181419547468

    CLOSE #139705014733696:c=0,e=29,dep=1,type=3,tim=1516181419547548

    PARSE #139705014733696:c=0,e=26,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=3684871272,tim=1516181419548823

    BINDS #139705014733696:

    Bind#0

    oacdty=11 mxl=16(16) mxlc=00 mal=00 scl=00 pre=00

    oacflg=18 fl2=0001 frm=00 csi=00 siz=16 off=0

    kxsbbbfp=7f0f9bca8510  bln=16  avl=16  flg=05

    value=0000243C.0007.0001

    EXEC #139705014733696:c=0,e=112,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=3684871272,tim=1516181419549015

    FETCH #139705014733696:c=1000,e=116,p=0,cr=2,cu=0,mis=0,r=1,dep=1,og=4,plh=3684871272,tim=1516181419549155

    CLOSE #139705014733696:c=0,e=9,dep=1,type=3,tim=1516181419549188

    =====================

    也可以选择tkprof美化trc文件:

    [root@jyrac1 ~]# tkprof /opt/app/oracle/diag/rdbms/jyzhao/jyzhao1/trace/jyzhao1_ora_15552.trc /tmp/jyzhao1_ora_15552.out waits=y sort=exeela

    TKPROF: Release 11.2.0.4.0 - Development on Wed Jan 17 17:33:44 2018

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

    美化后的文档可以更清晰的看到904错误的原因:

    ********************************************************************************

    The following statement encountered a error during parse:

    SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM), DBMS_JAVA.LONGNAME(SYNTAB),            TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO      FROM  SYS.EXU9PTS      WHERE  SYNOBJNO IN (          SELECT SYNOBJNO          FROM SYS.EXU9TYPT          WHERE TABOBJNO = :1 )      ORDER  BY SYNTIME

    Error encountered: ORA-00904

    ********************************************************************************

    3.匹配MOS文章

    根据报错和trc文件的内容,匹配到MOS文档:Errors EXP-8 ORA-904 During Export (文档 ID 1091927.1)

    APPLIES TO:

    Oracle Database - Enterprise Edition - Version 10.2.0.4 and later

    Information in this document applies to any platform.

    Checked for relevance on 16-Dec-2014

    SYMPTOMS

    You are attempting to perform an export as the SYSTEM user or a DBA. During export, the following errors occurred:

    EXP-00008: ORACLE error 904 encountered

    ORA-00904: : invalid identifier

    When performing a trace on the export, we see that the ORA-904 error is caused by the following statement:

    PARSE ERROR #9:len=302 dep=0 uid=5 oct=3 lid=5 tim=778463694169 err=904

    SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM), DBMS_JAVA.LONGNAME(SYNTAB), TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO FROM SYS.EXU9PTS WHERE SYNOBJNO IN ( SELECT SYNOBJNO FROM SYS.EXU9TYPT WHERE TABOBJNO = :1 ) ORDER BY SYNTIME

    CAUSE

    The PUBLIC privilege has been revoked from the DBMS_JAVA package.

    Privileges to the DBMS_JAVA package are needed for the export to succeed. However, as there is concern about security issues due to privileges on the DBMS_JAVA many have revoked the execute privilege to this package to keep the database secure.

    SOLUTION

    Explicitly grant EXECUTE on the DBMS_JAVA package to the DBA role:

    SQL> grant execute on DBMS_JAVA to dba;

    This will give members of the DBA role the rights to perform the export while keeping the DBMS_JAVA package out of the PUBLIC role.

    4.使用MOS解决方案

    MOS解决方案赋权DBMS_JAVA给DBA角色:

    SYS@jyzhao1 >grant execute on DBMS_JAVA to dba;

    Grant succeeded.

    再次尝试exp导出成功。

    [oracle@jyrac1 ~]$ exp system/oracle file=audit.dmp log=audit.log tables=sys.aud$

    Export: Release 11.2.0.4.0 - Production on Wed Jan 17 17:39:07 2018

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

    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

    With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

    Data Mining and Real Application Tes

    Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set

    About to export specified tables via Conventional Path ...

    Current user changed to SYS

    . . exporting table                          AUD$        25 rows exported

    Export terminated successfully without warnings.

    至此,问题完美解决,该案例的定位,主要用到了oradebug的跟踪技能。

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 一. 问题描述在一次数据库恢复...将数据库启动到mount状态后,想看一下v$backup_archivelog_details视图的内容,结果报了ORA-00904的错误,描述如下:SQL> desc v$backup_archivelog_details;ERROR:ORA-00604: erro...
  • 将源库分区表数据迁移到历史库中碰到IMP-00058 ORA-00904错误,具体操作及解决如下:\'/ as sysdba\' STATISTICS=NONEDATA_ONLY=y file=/backup/wxlun20130911.dmplog=/backup/wxlun20130911.implog fromuser=wxlun ...
  • ORA-00904: invalid identifier

    千次阅读 2022-04-11 23:10:01
    ORA-00904: invalid identifier 翻译过来是无效标识符 有的时候,报”ORA-00904: invalid identifier标识符无效“时,有可能是因为 1.你的字段在表中不存在 2.创建字段时最后一个字段加了”," 3.创建的字段用双引号...
  • 天萃荷净Oracle数据库在数据泵expdp导出后在impdp导入时报ORA-00904: “ORIGINAL_OBJECT_NAME”: invalid identifier,分析原因为数据库BUG导致1.Oracle数据泵impdp导入报错impdp导入数据库不成功,一直在报ORA-00904...
  • ORA-00904:标识符无效(太坑了!!)

    千次阅读 2022-07-05 15:51:17
    ORA-00904:标识符无效
  • exp导出报错ORA-00904

    2021-05-05 04:19:40
    小叶同学用exp导出数据,加了query参数,结果命令执行报ORA-00904错误如果query在命令行直接指定的话,所有的特殊字符都需要做转义的,如果是放到参数文件里,就无需转义了简单的做个测试:[oracle@goolen goolen]$ ...
  • 解决ORA-00904: invalid identifier

    千次阅读 2022-04-29 11:34:04
    ORA-00904: invalid identifier ,也就是标识符无效的错误。 原因: 1.创建表时没有插入字段,查询时字段在表中不存在 2.字段名写错了 3.字符串常量使用了双引号 解决: 1.查看数据表结构中的字段是否存在或写错了 2...
  • ORA-00904 标识符无效 解决方案

    万次阅读 2022-04-06 11:58:38
    ORA:即Oracle报错。 标识符无效:SQL语句中,这个字段名不在表中。 解决方案:修改SQL语句中对应的字段或者修改表里面对应的列名。 在这里我想说一下,因为我用的是hibernate内部封装好的save方法,咱也不能去改...
  • 相关文章:《exp导出出现:ORA-00904: "POLTYP": invalid identifier》:http://blog.itpub.net/23135684/viewspace-680615/客户反映将JFY用户下的某个表的字段由VARCHAR2(50)调整为VARCHAR2(100)之后,执行exp导出...
  • Oracle报错ORA-00904: 标识符无效 一般情况下,标识符错误是因为:语句中的列名在表中不存在,修改sql语句或者修改列名即可。 特殊情况: 正常建表语句如下: create table student( id int, name varchar2...
  • Oracle报错ORA-00904: 标识符无效

    千次阅读 2022-01-22 15:03:46
    执行sql时,oracle 报错ORA-00904: 标识符无效,原因: 列名写错,表中没有那个字段; 查询语句需要加上租户名 比如:表A是 common 租户下的,用工具直接执行 select * from A where id = ‘xxx’ 有时也会报ORA-...
  • 调用 但是报错 ERROR 位于第 1 行: ORA-00904: 无效列名 ORA-06512: 在"USERNAME.BILLDATE_PROC", line 9 ORA-06512: 在line 1 有哪位高手知道啥原因不,我把SQL语句独立出来是可以运行的。。 ------解决方法------...
  • 查询视图 ORA-00904

    2021-05-01 11:23:54
    [/php] ORA-00904:"A2"."PO_LINE_ID":无效的标识符 ORA-02063:,preceding line from EBS 请教各位有什么解决方法? [本帖最后由 kissmmx 于 2009-7-15 15:58 编辑] xx.JPG (9.31 KB, 下载次数: 11) 2009-7-15 15:29 ...
  • sql>@$ORACLE_HOME/rdbms/admin/utlrp.sql 报错信息如下: ORA-00904: “WM_CONCAT”: invalid identifie 经了解,wm_contact(column)函数从oracle10g开始使用,然而12C以上版本摒弃了wm_concat函数,导致不能...
  • 今天很郁闷 ,被一个java.sql.SQLException:"CLIENTTYPE" ORA-00904:标识符无效错误给折腾得不行了。一直找错,执行的sql扔到pl/sql里没问题,但是运行代码就出错,那个汗颜啊。最后看到网上有同样经历的,顿悟了...
  • Oracle报错ORA-00904: 标识符无效 一般情况下,标识符错误是因为:语句中的列名在表中不存在,修改sql语句或者修改列名即可。 特殊情况: 正常建表语句如下: create table student( id int, name varchar2...
  • 用toad for oracle 直接查看数据库建标语句或者视图语句时报错,打不开,导出数据库语句时也是报同样的错误,错误如下图
  • Toad for Oracle查看表的脚本时出错ORA-00904: “REF”: 标识符无效 Toad for Oracle版本12.8,Oracle版本19c 11g没有问题,19c会报错 简单的解决办法: 在Schema browser—>选择表—>选择script—>选择...
  • <code class="language-sql">select t1.range,t2.column_value as a from org t1, table(split(t1.range, ',')) t2</code></pre> 需求:org表range列里数据用逗号隔开的,...
  • Oracle踩坑日记之"WM_CONCAT": invalid identifier
  • 首先说明数据库的版本服务器:10.2.0.5.0客户端:11.2.0.1.0导出会报错EXP-00008: 遇到 ORACLE 错误 1003ORA-01003: no statement parsed和EXP-00008: 遇到 ORACLE 错误 904ORA-00904: "MAXSIZE": invalid ...
  • 急 Oracle ORA-00904 标识符无效问题用的是 Oracle Database 10g Release 2 (10.2.0.1.0) 在执行插入的时候报错:java.sql.SQLException: ORA-00904: "ICOUT": 标识符无效。 但表中的确有这个字段。把SQL语句复制到...
  • 转自:https://blog.csdn.net/jajavaja/article/details/49122639建表时列名用双引号引着(用Navicat工具建表默认是加上双引号的),java连接时就会报错ORA-00904: 标识符无效;把双引去掉就不会报错了原:CREATE TABLE...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,552
精华内容 1,420
关键字:

ORA-00904