Sql ORA-00904:;从$\u子查询$\u 014"&引用;“名称”列:无效的标识符
迁移我的oracle db后,出现以下错误:Sql ORA-00904:;从$\u子查询$\u 014"&引用;“名称”列:无效的标识符,sql,oracle,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 ,
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\u STORE\u FORWARD\u V
这是一个使用物化视图的视图containTRN\u TERMINAL\u SOFTWARE\u VERSION
列,但我的工作很好。这是Oracle 11.2.0.4中的一个错误,它在使用子查询或ansi join的查询中随机出现
在我的例子中,我找到了根本原因:它是在我从11.2.0.4执行expdp时产生的,并且模式已经具体化了视图。然后我在其他数据库(10g、11g甚至12c)中进行了impdp。某种原因导致了这个错误
我解决了这个问题:
11.2.0.4中引入的回归 修复:首先修复17551261 包含在•12.1.0.1(基本版本)中 说明此 在11.2.0.4中,bug 14049796的修复程序引入了这个问题 如果引发类似于以下内容的ORA-904:
ORA-00904:“来自$\u子查询$\u 003”。“订户SID”:无效标识符 从使用ANSI联接的SQL语句中,可能就是这种情况 如果以下所有情况均为真,则会出现错误: 1) 使用摘要重写 2) 缺陷修复:14049796存在(此修复包含在11.2.0.4中) 3) errorstack包括kkogvcd()和kkqsgen() 解决方法禁用查询重写
如果运行
SELECT*fromsd\u STORE\u FORWARD\u V
,会发生什么情况?这些列与您在上述查询中使用的列匹配吗?几个问题->1。此对象是否存在:TRN\u终端\u软件\u版本
?(尝试描述TRN\u终端软件版本
)2。您的用户(运行上面的查询)是否具有READ
权限?3.它是否驻留在同一个模式和同一个数据库上?删除冗余子查询是否有任何区别?或者至少将订单移动到外部?执行计划可能有助于确定Oracle生成的子查询名称适合整个查询的位置。听起来这可能是一个解析器错误。。。。这是哪个版本,您从哪个版本迁移,以及如何迁移?选择*from YSD_STORE_FORWARD_V当我运行此查询时,它会给我一个结果。1。此对象是否存在:TRN\u终端\u软件\u版本?(尝试描述TRN_终端_软件_版本)ans:是的,在我的视图和物化视图2中。您的用户(运行上面的查询)是否具有读取权限?答:是的。3.它是否驻留在同一架构和同一数据库上?答:是的,但我在普通查询中也遇到了这个错误,在我的旧版本11.2.0.1上运行良好,但在新版本11.2.0.4中出现错误。您是否尝试再次导入除物化视图以外的所有架构?之后,您必须在单独的脚本中创建物化视图,并编译所有对象。