系統軟體一天報錯幾次,同樣版本軟體在另一個客戶那里沒問題.....希望高手進來指點下。。。不要說這個陳述句有問題,這個陳述句是在定時器用的,每天用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
uj5u.com熱心網友回復:
這里不能加T_KSRW."ROWID" ,rowid相當于是存盤的該行在資料庫中的位置資訊,是一個唯一標示,在一行中是一個固定的值。group by中沒有rowid這一列就報這樣的錯uj5u.com熱心網友回復:
sql語法格式就不對,你每天運行幾次就偶爾報這個錯,可能是判斷陳述句走的不是這一條陳述句。這條陳述句單獨拿出來執行也是行不通的uj5u.com熱心網友回復:
代碼的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
uj5u.com熱心網友回復:
這個陳述句代碼只這樣的,
只是發到服務端轉成那樣的,這次奇怪,該軟體已經很多客戶都在用。代碼沒有什么問題,每次都會走這里的。
uj5u.com熱心網友回復:
沒轉之前的語法是可以的,轉了之后的語法,在oracle中是不通過的uj5u.com熱心網友回復:
轉了之后的語法, 沒有group by字句,當然也沒什么問題uj5u.com熱心網友回復:
這種報錯,考慮特定oracle版本bugs的可能性,可以到MOS上查下。uj5u.com熱心網友回復:
看上去是BUG,要貼出版本等資訊才知道轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11545.html
標籤:高級技術
