迁移我的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
列但我的工作很好。
答案 0 :(得分:2)
这是Oracle 11.2.0.4中的一个错误,它在使用子查询或ansi join的查询中随机出现。
在我的情况下,我找到了根本原因:它是在我从11.2.0.4执行expdp并且架构具有MATERIALIZED VIEWS时引起的。然后我在其他DataBase中做了一个impdp(10g,11g甚至12c)。某种类型的diccionary问题导致了这个错误。
我解决了这个问题:
EXPDP,不包括MATERIALIZED_VIEWS
IMPDP。有一些与MATERIALIZED_VIEW对象相关的错误,被忽略了。
手动创建所有MATERIALIZED_VIEW对象。
使用“$ ORACLE_HOME / rdbms / admin / utlrp.sql”重新编译数据库中的所有对象
这是错误文档的摘录:
错误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()
解决方法禁用查询重写