Oracle利用errorstack追蹤tomcat報錯ORA-00903 無效表名
現象
tomcat錯誤日誌斷斷續續報ORA-00903: invalid table name,並無具體SQL與表名,需要排查哪段程式碼寫入了無效表名, 可以透過ORACLE提供的errorstack追蹤報錯SQL。 由於生產資料無法取出,以下皆為測試環境測試還原生產錯誤。
errorstack簡介
設定errorstack,在發生特定的ORA錯誤時會記錄發生問題的會話,語句以及各個程式的trace檔案, 在alert日誌中有記錄錯誤記錄的trace檔案位置,也可以給單獨會話開啟errorstack,追蹤會話報錯資訊,可以透過 下面兩個方法開啟: /* level 0 僅轉儲錯誤堆疊 /* level 1 轉儲錯誤堆疊和函式呼叫堆疊 /* level 2 Level 1 + ProcessState /* level 3 Level 2 + Context area (顯示所有cursors,著重顯示當前cursor) (1)alter session/system alter session/system set events '<error_number> trace name errorstack level 3'; /* error_number為ORA錯誤後編號。 (2)oradebug /* 使用oradebug需要使用者具有sysdba許可權 SQL> oradebug setospid/setmypid/setorapid <pid>; SQL> oradebug dump errorstack 3 可以透過下面方法檢視當前系統開啟errorstack狀態: SQL> set serveroutput on SQL> oradebug setmypid SQL> oradebug eventdump session/system;
追蹤
SQL> alter system set events '903 trace name errorstack level 3';
alter日誌:
Tue Jun 09 14:23:44 2020 OS Pid: 10855 executed alter system set events '903 trace name errorstack level 3'
追蹤結果
alert日誌資訊:
Tue Jun 09 14:28:04 2020 Errors in file /u01/app/oracle/diag/rdbms/honor/honor1/trace/honor1_ora_7205.trc: ORA-00903: 表名無效 Tue Jun 09 14:28:06 2020 Dumping diagnostic data in directory=[cdmp_20200609142806], requested by (instance=1, osid=7205), summary=[abnormal process termination].
檢視對應trc追蹤檔案:
*** 2020-06-09 14:28:04.303 *** SESSION ID:(26.661) 2020-06-09 14:28:04.303 *** CLIENT ID:() 2020-06-09 14:28:04.303 *** SERVICE NAME:(honor) 2020-06-09 14:28:04.303 *** MODULE NAME:(SQL*Plus) 2020-06-09 14:28:04.303 *** ACTION NAME:() 2020-06-09 14:28:04.303 dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=3, mask=0x0) ----- Error Stack Dump ----- ORA-00903: 表å<90><8d>æ<97> æ<95><88> ----- Current SQL Statement for this session (sql_id=0vaqwchf1y3fq) ----- insert into null values(1)
找到具體sql,拿給開發人員,修改相關邏輯,錯誤修復。
關閉errorstack
SQL > alter system set events '903 trace name errorstack off';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31439444/viewspace-2697133/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用errorstack事件進行錯誤跟蹤和診斷Error事件
- 使用ErrorStack進行錯誤跟蹤及診斷Error
- 利用Zipkin追蹤Mysql資料庫呼叫鏈MySql資料庫
- 利用Spring Boot實現微服務的鏈路追蹤Spring Boot微服務
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- tomcat釋出報錯Tomcat
- 利用 DeepFlow 為傳統 APM 開啟全棧追蹤能力全棧
- 微服務追蹤SQL上報至Jaeger(支援Istio管控下的gorm查詢追蹤)微服務SQLGoORM
- vscode外掛報錯: problemmatcher 引用無效: $esbuild-watchVSCodeUI
- 日誌追蹤
- 程式碼追蹤
- 鏈路追蹤
- Map、Debug追蹤
- Debug追蹤eclipseEclipse
- 【Oracle】sys下缺失和無效物件導致exp、expdp和RMAN等備份功能全部報錯Oracle物件
- Liftoff COVID-19移動廣告表現追蹤週報新鮮出爐
- OpenTelemetry分散式追蹤分散式
- skywalking鏈路追蹤
- 線上追蹤壓縮後的JS出錯程式碼JS
- 鏈路追蹤 SkyWalking 原始碼分析 —— 除錯環境搭建原始碼除錯
- tomcat 報錯 java.lang.OutOfMemoryErroTomcatJava
- 輕量級的分散式日誌追蹤利器,十分鐘即可接入,從此日誌追蹤無難事分散式
- oracle dg報錯Oracle
- 微服務追蹤SQL(支援Isto管控下的gorm查詢追蹤)微服務SQLGoORM
- 利用神器BTrace 追蹤線上 Spring Boot應用執行時資訊Spring Boot
- 黑客入侵Chrome和Firefox瀏覽器,利用TLS以追蹤使用者黑客ChromeFirefox瀏覽器TLS
- oracle 並行查詢時並行資源分配追蹤測試Oracle並行
- 在redhat7系統上為Oracle11g資料庫打PSU報CRS-4124 CRS-4000錯誤分析與追蹤RedhatOracle資料庫
- APK簽名報錯APK
- win10 excel .xlsx檔案格式無效或副檔名無效怎麼辦Win10Excel
- 追蹤解析 Disruptor 原始碼原始碼
- 追蹤解析 ThreadPoolExecutor 原始碼thread原始碼
- Spring Cloud 鏈路追蹤SpringCloud
- go的鏈路追蹤Go
- 如何追蹤laravel動態Laravel
- 如何追蹤Go動態Go
- DHorse的鏈路追蹤
- 如何追蹤Java動態Java