用sql_trace解決ORA-03111: 通訊通道收到中斷錯誤
問題描述:收到開發報告錯誤,用java程式執行插入一個表造資料,結果報錯:ora-03111: 通訊通道收到中斷錯誤。插入500條資料沒有錯誤,插入1000條資料,報錯。
問題分析:我以為是oracle例項有什麼問題,檢視alert.log日誌,一切正常。我想用10046事件追蹤,但是,啟動程式到程式報錯,連線就中斷了。還沒有開始追蹤,連線就中斷了,追蹤不了。想了偏門方法,讓其他會話都暫停使用資料庫,開啟全庫sql_trace功能1分鐘。alter system set sql_trace=true; alter system set sql_trace=false;
接著把跟蹤檔案拿到了,進行分析,找到oraclesid_s001_xxxxx.trc,我摘抄如下:
PARSING IN CURSOR #3 len=361510 dep=0 uid=106 oct=2 lid=106 tim=8153407429486 hv=1586716944 ad='44d3edb78' sqlid='b6j1f4jg96s8h'
INSERT INTO BUS_SOURCE_TRANSDATA
(
ID,CREATETIME,SOURCE_FILENAME,
TRANS_TYPE,LOCAL_SEQ,POSID,
SAMID,SAM_SEQ,TERMID,DRIVER_NO,
CITYCODE,ISSUER_CODE,CARD_INNER_NO,
CARD_CSN,CARDDEBITCNT,CARD_MODELL,
CARDKIND,CHILDCARDKIND,BEFOR_BAL,
TRADE_AMT,PREFERENTIAL_TYPE,
RECEIVABLE_AMT,TRANS_DATE,
TRANS_TIME,TAC,CARD_INNER_VERNO,COMPANY_CODE)
select
:1 ,
:2 ,
:3 ,
:4 ,
:5 ,
:6 ,
:7 ,
:8 ,
:9 ,
:10 ,
:11 ,
:12 ,
:13 ,
:14 card_csn,
:15 ,
:16 ,
:17 ,
:18 ,
:19 ,
:20 ,
:21 ,
:22 ,
:23 ,
:24 ,
:25 ,
:26 ,
:27
FROM dual
union all
select
:28 ,
:29 ,
:30 ,
:31 ,
:32 ,
:33 ,
:34 ,
:35 ,
:36 ,
:37 ,
:38 ,
:39 ,
:40 ,
:41 card_csn,
:42 ,
:43 ,
:44 ,
:45 ,
:46 ,
:47 ,
:48 ,
:49 ,
:50 ,
:51 ,
:52 ,
:53 ,
:54
FROM dual
PARSE #3:c=5959238,e=5971060,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=0,tim=8153407429485
然後就結束了。是的,連PARSE EXEC FETCH STAT CLOSE 狀態都沒有經歷就結束了。
從這裡看出來,應該是這個sql語句超過長度了,連線斷開,報異常錯誤:ORA-03111: 通訊通道收到中斷錯誤
問題分析:我以為是oracle例項有什麼問題,檢視alert.log日誌,一切正常。我想用10046事件追蹤,但是,啟動程式到程式報錯,連線就中斷了。還沒有開始追蹤,連線就中斷了,追蹤不了。想了偏門方法,讓其他會話都暫停使用資料庫,開啟全庫sql_trace功能1分鐘。alter system set sql_trace=true; alter system set sql_trace=false;
接著把跟蹤檔案拿到了,進行分析,找到oraclesid_s001_xxxxx.trc,我摘抄如下:
PARSING IN CURSOR #3 len=361510 dep=0 uid=106 oct=2 lid=106 tim=8153407429486 hv=1586716944 ad='44d3edb78' sqlid='b6j1f4jg96s8h'
INSERT INTO BUS_SOURCE_TRANSDATA
(
ID,CREATETIME,SOURCE_FILENAME,
TRANS_TYPE,LOCAL_SEQ,POSID,
SAMID,SAM_SEQ,TERMID,DRIVER_NO,
CITYCODE,ISSUER_CODE,CARD_INNER_NO,
CARD_CSN,CARDDEBITCNT,CARD_MODELL,
CARDKIND,CHILDCARDKIND,BEFOR_BAL,
TRADE_AMT,PREFERENTIAL_TYPE,
RECEIVABLE_AMT,TRANS_DATE,
TRANS_TIME,TAC,CARD_INNER_VERNO,COMPANY_CODE)
select
:1 ,
:2 ,
:3 ,
:4 ,
:5 ,
:6 ,
:7 ,
:8 ,
:9 ,
:10 ,
:11 ,
:12 ,
:13 ,
:14 card_csn,
:15 ,
:16 ,
:17 ,
:18 ,
:19 ,
:20 ,
:21 ,
:22 ,
:23 ,
:24 ,
:25 ,
:26 ,
:27
FROM dual
union all
select
:28 ,
:29 ,
:30 ,
:31 ,
:32 ,
:33 ,
:34 ,
:35 ,
:36 ,
:37 ,
:38 ,
:39 ,
:40 ,
:41 card_csn,
:42 ,
:43 ,
:44 ,
:45 ,
:46 ,
:47 ,
:48 ,
:49 ,
:50 ,
:51 ,
:52 ,
:53 ,
:54
FROM dual
..........中間有997個union all
END OF STMTPARSE #3:c=5959238,e=5971060,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=0,tim=8153407429485
然後就結束了。是的,連PARSE EXEC FETCH STAT CLOSE 狀態都沒有經歷就結束了。
從這裡看出來,應該是這個sql語句超過長度了,連線斷開,報異常錯誤:ORA-03111: 通訊通道收到中斷錯誤
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30393770/viewspace-2138752/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#socket通訊兩個最經典錯誤解決方案C#
- ora-03113 通訊通道的檔案結束錯誤處理
- 'ora-03113,通訊通道的檔案結尾'的錯誤處理
- 診斷並解決ORA-04031 錯誤
- ORA-03113: 通訊通道的檔案結尾(錯誤解決);ORA-27101: shared memory realm does not exist
- 如何解決 Nginx 與 FastCGI 通訊錯誤 "Primary script unknown"?NginxAST
- Ocelot錯誤解決
- 將雙通道音訊轉換為兩條單通道音訊的解決方案音訊
- MYSQL中 TYPE=MyISAM 錯誤的解決方法MySql
- exp/imp出現錯誤通過expdp/impdp來解決
- IOS錯誤之----通過XCode上傳App應用程式出現證書籤名錯誤的解決方法iOSXCodeAPP
- VIM 常用錯誤解決
- sqldeveloper for windows 錯誤解決SQLDeveloperWindows
- Ajax中“Sys未定義”錯誤的解決方法
- vsftpd 錯誤:530 and 500 錯誤解決方法FTP
- Eclipse中解決Multiple annotations found at this line錯誤。Eclipse
- CentOS 中yum命令執行錯誤解決辦法CentOS
- JSF中 Target Unreachable, returned null錯誤的解決JSNull
- 下面EJB中的RealationShip錯誤怎麼解決呢?
- 使用Aihubmix API 服務中遇到錯誤與解決AIAPI
- PHP中的Malformed UTF-8 characters錯誤解決PHPORM
- 串列埠通訊應用程式的解決方案 (轉)串列埠
- latex 錯誤以及解決方案
- ora-27504錯誤解決
- Datastore error in 'dirbdb'錯誤解決ASTError
- ORA-27054 錯誤解決
- mysql與php錯誤解決MySqlPHP
- mysql錯誤解決總結MySql
- PbootCMS 404 錯誤解決方法boot
- .Net“/”應用程式中的伺服器錯誤 超過了最大請求長度 錯誤解決辦法伺服器
- 診斷並解決 ORA-4030 錯誤 (文件 ID 1548826.1)
- 診斷並解決 ORA-4030 錯誤 (Doc ID 1548826.1)
- 通過記憶體鎖定,解決ORA-4031錯誤記憶體
- 【故障解決】OGG-00446 錯誤解決
- Oracle診斷案例-Sql_traceOracleSQL
- dbfread報錯ValueError錯誤解決方法Error
- iOS 解決 Xcode 8中更新 SnapKit 3.0 的錯誤iOSXCodeAPK
- virtualbox中Cannot register the hard disk錯誤解決辦法