ORA-00904:"来自$ _subquery $ _014"。" column_name":无效的标识符

时间:2017-04-06 12:51:32

标签: sql oracle

迁移我的oracle db后,我得到以下错误:

ORA-00904: "from$_subquery$_014"."TRN_TERMINAL_SOFTWARE_VERSION": invalid identifier

下面是我的查询:

SELECT
  *
FROM
  (
    SELECT
      SUM(trn_amt)   AS amount,
      SUM(trn_count) AS COUNT ,
      timetype       AS period ,
      seq ,
      ROW_NUMBER() OVER (ORDER BY vw.seq DESC) AS RowNumber
    FROM
      YSD_STORE_FORWARD_V vw
    INNER JOIN store_dimension std                 ON vw.stm_id=std.std_id
    INNER JOIN card_type_dimension ctd             ON vw.CTD_CARD_ABBV=ctd.CTD_CARD_ABBV
    INNER JOIN STPLDBTEMP.store_group_relation sgr ON std.STD_ID= sgr.sgr_store_id
    INNER JOIN location_dimension ld               ON ld.lod_id=std.std_location_id
WHERE
  start_date BETWEEN 20170405 AND 20170405
AND std.std_corp_id    ='1939'
AND sgr.sgr_sgm_id     ='2160'
AND ctd.CTD_CARD_ABBV IN ('VE','VI','VS','VD','AX','AE','MD','MC','MF','XX'
  ,'DB','JB','NV','DS','EB','EBC','EBF','EBW','VF','VG','WX','DC','GF','PL'
  ,'PW','NM','BG','GC','FL','FO','FT','FW','INV','IV','IN','CP')
AND LD.LOD_COUNTRY_ID = 1
GROUP BY
  timetype ,
  seq
ORDER BY
  4

);

我在查询中没有使用列,但我仍然收到此错误,请帮助我YSD_STORE_FORWARD_V使用实体化视图的视图包含TRN_TERMINAL_SOFTWARE_VERSION列但我的工作很好。

1 个答案:

答案 0 :(得分:2)

这是Oracle 11.2.0.4中的一个错误,它在使用子查询或ansi join的查询中随机出现。

在我的情况下,我找到了根本原因:它是在我从11.2.0.4执行expdp并且架构具有MATERIALIZED VIEWS时引起的。然后我在其他DataBase中做了一个impdp(10g,11g甚至12c)。某种类型的diccionary问题导致了这个错误。

我解决了这个问题:

  1. EXPDP,不包括MATERIALIZED_VIEWS

  2. IMPDP。有一些与MATERIALIZED_VIEW对象相关的错误,被忽略了。

  3. 手动创建所有MATERIALIZED_VIEW对象。

  4. 使用“$ ORACLE_HOME / rdbms / admin / utlrp.sql”重新编译数据库中的所有对象

  5. 这是错误文档的摘录:

      

    错误17551261 ORA-904"来自$ _subquery $ _003"。查询   重写

         

    本说明简要概述了错误17551261。   内容最后更新时间:21-FEB-2014

         

    影响:

         

    产品(组件)Oracle Server(Rdbms)

         

    据信受影响的版本范围版本低于12.1

         

    确认受影响的版本 11.2.0.4

         

    平台影响Generic(受影响的所有/大多数平台)

         

    因此被认为是默认行为的回归:
      回归介绍于11.2.0.4

         

    已修复: 17551261的修复程序是第一个   包含在•12.1.0.1(基本版本)

    中      

    说明这个   问题在11.2.0.4中通过修复bug 14049796引入。

         

    如果出现与以下类似的ORA-904:
       ORA-00904:"来自$ _subquery $ _003"。" SUBSCRIBER_SID":无效的标识符   从使用ANSI连接的SQL语句中,可能就是这种情况   如果满足以下所有条件的错误:

         

    1)使用摘要重写

         

    2)修复bug:14049796目前(此修复程序包含在11.2.0.4中)

         

    3)errorstack包括kkogvcd()和kkqsgen()

         

    解决方法禁用查询重写