ORA-07445: 出现异常错误: 核心转储 [unable_to_trans_pc]

朴存昕 2020-05-13 05:07:56
系统软件一天报错几次,同样版本软件在另一个客户那里没问题.....希望高手进来指点下。。。不要说这个语句有问题,这个语句是在定时器用的,每天用N次,报错只有几次。

代码SQL:SELECT KH_CH , COUNT(*) AS CNT FROM T_KSRW WHERE KH_CH IN (15,16) AND LXFLAG=0 GROUP BY KH_CH
被转换为:SELECT KH_CH , COUNT(*) AS CNT , T_KSRW."ROWID" FROM T_KSRW WHERE KH_CH IN (15,16) AND LXFLAG=0 GROUP BY KH_CH

以下是ora_4452.trc文件
Memory (Avail/Total): Ph:107461M/114617M, Ph+PgF:133034M/140215M, VA:2234M/4095M
Instance name: slkm2

Redo thread mounted by this instance: 1

Oracle process number: 58

Windows thread id: 4452, image: ORACLE.EXE (SHAD)


*** SERVICE NAME:(slkm2) 2020-05-13 15:31:42.593
*** SESSION ID:(54.297) 2020-05-13 15:31:42.593
*** 2020-05-13 15:31:42.593
ksedmp: internal or fatal error
ORA-07445: 出现异常错误: 核心转储 [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:0x7EFC65D0] [ADDR:0xFFFFFFFF] [UNABLE_TO_READ] []
ORA-00979: 不是 GROUP BY 表达式
Current SQL statement for this session:
SELECT KH_CH , COUNT(*) AS CNT , T_KSRW."ROWID" FROM T_KSRW WHERE KH_CH IN (15,16) AND LXFLAG=0 GROUP BY KH_CH
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
7EFC65D0 00000000
7780013E CALLrel 7783695A
603A723E CALL??? 00000000
603A79A4 CALLrel 603A717C F85AB40 D741090 3D3
_opiosq0+5715 CALLrel _kgerse+0 F85AB40
_kpooprx+232 CALLrel _opiosq0+0 3 E DB1D9AC A4
_kpoal8+775 CALLrel _kpooprx+0 DB1F6CC DB1E184 71 1 0 A4
_opiodr+1099 CALLreg 00000000 5E 17 DB1F6C8
60FEFF8D CALLreg 00000000 5E 17 DB1F6C8 7
_opitsk+1017 CALL??? 00000000
_opiino+1087 CALLrel _opitsk+0 0 0
_opiodr+1099 CALLreg 00000000 3C 4 DB1FC60
_opidrv+819 CALLrel _opiodr+0 3C 4 DB1FC60 0
_sou2o+45 CALLrel _opidrv+0 3C 4 DB1FC60
_opimai_real+112 CALLrel _sou2o+0 DB1FC54 3C 4 DB1FC60
_opimai+92 CALLrel _opimai_real+0 2 DB1FC8C
_OracleThreadStart@ CALLrel _opimai+0
4+708
75AA33C5 CALLptr 00000000
77829ED0 CALLreg 00000000
77829EA0 CALLrel 77829EAB
...全文
816 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxq129601 2020-05-15
  • 打赏
  • 举报
回复
看上去是BUG,要贴出版本等信息才知道
lhdz_bj 2020-05-14
  • 打赏
  • 举报
回复
这种报错,考虑特定oracle版本bugs的可能性,可以到MOS上查下。
js14982 2020-05-14
  • 打赏
  • 举报
回复
转了之后的语法, 没有group by字句,当然也没什么问题
js14982 2020-05-14
  • 打赏
  • 举报
回复
没转之前的语法是可以的,转了之后的语法,在oracle中是不通过的
朴存昕 2020-05-14
  • 打赏
  • 举报
回复
这个语句代码只这样的, 只是发到服务端转成那样的,这次奇怪,该软件已经很多客户都在用。代码没有什么问题,每次都会走这里的。
朴存昕 2020-05-14
  • 打赏
  • 举报
回复
代码的SQL:SELECT KH_CH , COUNT(*) AS CNT FROM T_KSRW WHERE KH_CH IN (15,16) AND LXFLAG=0 GROUP BY KH_CH 被转换成为:SELECT KH_CH , COUNT(*) AS CNT , T_KSRW."ROWID" FROM T_KSRW WHERE KH_CH IN (15,16) AND LXFLAG=0 GROUP BY KH_CH
js14982 2020-05-14
  • 打赏
  • 举报
回复
sql语法格式就不对,你每天运行几次就偶尔报这个错,可能是判断语句走的不是这一条语句。这条语句单独拿出来执行也是行不通的
js14982 2020-05-14
  • 打赏
  • 举报
回复
这里不能加T_KSRW."ROWID" ,rowid相当于是存储的该行在数据库中的位置信息,是一个唯一标示,在一行中是一个固定的值。group by中没有rowid这一列就报这样的错

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧