日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

抛出错误_如何找到抛出ORA00933错误的SQL

發布時間:2024/4/19 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 抛出错误_如何找到抛出ORA00933错误的SQL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前幾天上線,凌晨3點多打車回來的路上,兄弟聯系我,提了一個問題,某核心系統,上線的時候,報了很多ORA-00933的錯誤,明顯是應用寫的SQL出現了錯誤導致的,但是因為未將出錯的SQL打印到日志中,所以不知道究竟是什么SQL出錯了,由于邏輯中涉及到很多的SQL,逐個排查,非常耗時。

ORA-00933,意思是“SQL command not properly ended”,明顯是SQL的語法出現錯誤,但是現在的問題,就是如何找到錯誤的SQL?

第一種考慮,能不能從數據字典視圖中找到?

我們執行如下這兩條SQL,第一條是錯誤的,提示ORA-00933,第二條是正確的,

SQL>?select?object_id?from?t?whereobject_id=1;
select?object_id?from?t?whereobject_id=1
??????????????????????????????????????*
ERROR?at?line?1:
ORA-00933:?SQL?command?not?properly?ended

SQL>?select?object_id?from?t?where?object_id=1;
no?rows?selected

此時通過dba_hist_sqltext檢索不到任何SQL,

SQL>?select?sql_id,?sql_text?from?dba_hist_sqltext?where?sql_text?like?'%select?object%';
no?rows?selected

dba_hist_sqltext是展示在AWR中采集到的屬于共享SQL游標的SQL語句,

究其原因,如果SQL語句沒有達到AWR的threshold值,是不會記錄到 dba_hist_sqltext中的。但是,我們在執行完SQL后手動創建快照,就可以在dba_hist_sqltext中看到,如下所示,但是,只出現執行正確的這條SQL,提示ORA-00933的SQL,并未采集到,

SQL>?exec?dbms_workload_repository.create_snapshot();
PL/SQL?procedure?successfully?completed.

SQL>?select?sql_id,?sql_text?from?dba_hist_sqltext?where?sql_text?like?'%select?object%'
??2??and?sql_text?not?like?'%dba_hist_sqltext%';
SQL_ID??????????SQL_TEXT
-------------?--------------------------------------------------------------------------------
366bf1pphk8vp?select?object_id?from?t?where?object_id=1

我們知道,一條SQL在Oralce中執行的過程,會經過下圖中的幾個階段,在解析階段,會進行SQL的語法檢查、語義檢查以及共享池中查找是否存在執行過的SQL,如上ORA-00933錯誤,應該發生在語法解析階段,所以尚未到達執行階段,AWR未采集這條SQL,就可以解釋通了,

第二種考慮,使用Logminer能從日志中得到SQL?

我們知道Logminer是可以從在線/歸檔日志中解析出曾經執行過的SQL語句,其實從上面,我們已經知道,ORA-00933錯誤的SQL根本沒到執行階段,因此從原理上看,不可能寫入日志,就無從通過Logminer得到需要的SQL。

P.S.

關于Logminer的使用,可以參考我的好朋友老楊的文章《Logminer:oracle人為誤操作之恢復神器》。

當時沒想到其他的方法,唯一的做法就是讓應用改程序,打印出錯的SQL到日志中,這種方法其實很直接,但是畢竟涉及到了改動,還是帶來了不便。

后來看了惜分飛老師的文章,有了另外的考慮,SQL語句執行解析失敗最大的可能性就是SQL語句語法/權限錯誤,對于這類問題可以通過設置event 10035進行跟蹤,

http://www.xifenfei.com/2019/06/failed-parse-elapsed-time.html

打開10035事件,執行SQL,

SQL>?alter?system?set?events?'10035?trace?name?context?forever,?level?1';
System?altered.

SQL>?select?object_id?from?t?whereobject_id=1;
select?object_id?from?t?whereobject_id=1
??????????????????????????????????????*
ERROR?at?line?1:
ORA-00933:?SQL?command?not?properly?ended

SQL>?alter?system?set?events?'10035?trace?name?context?off';
System?altered.

就可以在alert日志中,看到如下信息,error=933,就是ORA-00933,第二行的SQL,就是要找的,

PARSE?ERROR:?ospid=18911,?error=933?for?statement:
select?object_id?from?t?whereobject_id=1^@

但是這種方法,需要注意,因為一旦打開10035,任何解析錯誤的SQL都會輸出到alert日志中,如果對并發量很高的系統,碰巧解析錯誤的會執行多次,可能瞬時導致磁盤空間壓力,因此Oracle中任何的event,我們在使用前,一定要知道他的副作用,避免帶來影響。

現在我們在做的一項工作,就是制定《軟件運維能力成熟度模型》,旨在通過設定一些通用的運維需求,采用分級的形式,從定量和定性,兩個維度,評估軟件的可運維能力,并給出提升指導。其中一項,就是應用執行錯誤的SQL語句需要打印到應用日志中,包括SQL原文、報錯信息、參數等,一方面為監控報警提供數據,另一方面便于問題的排查。

一般的開發人員只會關注系統的功能實現,對其他層面,例如性能、運維等,考慮的很有限,這就對系統運行和問題排查,會產生些影響,或者造成不便,此時,我們就可能需要其他的方法來解決,像上面介紹的10035,但歸根結底,一款軟件如果要運營的持久,除了系統架構要滿足功能,還需要為系統的可擴展性、可維護性等買單,當然,有人說過,“好的系統,不是設計出來的,而是演進來的”,不是說所有的問題都能在設計之初考慮到,但是當出現問題的時候,及時吸取教訓,在設計上完善,就算是一種改進,值得做。

總結

以上是生活随笔為你收集整理的抛出错误_如何找到抛出ORA00933错误的SQL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲丁香 | 蜜臀99久久精品久久久久小说 | 四虎黄色片 | 狼人精品一区二区三区在线 | 男人的天堂在线 | 人人艹在线 | bbbbbbbbb毛片大片按摩 | 高清在线一区二区三区 | 日本啪啪网| av片久久 | 国产一区二区不卡视频 | 国产成a人亚洲精v品无码 | 人人操日日干 | 日本a级片网站 | 黄色网在线播放 | 综合成人| 污网站在线播放 | 亚洲综合在线一区 | 亚洲一区二区三区免费视频 | 欧洲av在线 | 精品国产一区二区三区四区精华 | 一级黄色片欧美 | 国内精品视频在线播放 | 黑人操欧美人 | 久热精品在线观看 | 国产成人观看 | 黄色aa级片| 亚洲五码av | 免费三片在线观看网站v888 | 日韩手机在线视频 | www日本高清 | 素人女裸体 | 91亚洲精品久久久蜜桃 | 91porny丨首页入口在线 | 精品日韩中文字幕 | av毛片网| 男女啪啪在线观看 | 国产丰满农村老妇女乱 | youjizz亚洲女人 | 国久久| 7777奇米影视 | 九九视频在线播放 | 免费污网站在线观看 | 新国产视频 | 亚洲第一网站 | 少妇人妻无码专区视频 | 成长快手短视频在线观看 | 波多野结衣av片 | 国产尤物在线 | 小视频成人 | 黑人精品一区二区三区不 | 乱短篇艳辣500篇h文最新章节 | 人人爽爽爽 | 91干| 在线观看欧美日韩视频 | 天堂色播| 涩涩网站在线看 | 高清国产mv在线观看 | 午夜视频污 | 麻豆福利影院 | 在线播放无码后入内射少妇 | 午夜刺激视频 | 精品国产色 | 好吊色一区二区三区 | 一级片免费视频 | 婷婷国产一区二区三区 | 成人免费看片在线观看 | 不卡的毛片 | 亚洲综合五月天婷婷丁香 | 欧美成人天堂 | 亚洲黄色免费视频 | 亚洲伦理一区二区三区 | 欧美 亚洲 视频 | 五月天国产视频 | 国产鲁鲁 | 日韩少妇内射免费播放18禁裸乳 | 国产一区二区中文字幕 | 成人av高清 | 狠狠插综合 | 日本亚洲高清 | 91漂亮少妇露脸在线播放 | 热久久影院 | 久久无毛 | 精品久久网站 | 97在线国产| 欧美深性狂猛ⅹxxx深喉 | a√天堂资源 | 一本无码aⅴ久久久国产 | 91麻豆蜜桃一区二区三区 | 99er久久| 伊人夜色 | 刘亦菲毛片一区二区三区 | 国产日| 激情婷婷色| 亚洲狠 | 人人草人| 欧美黄色a视频 | 男女啊啊啊视频 | 上原亚衣在线观看 |