定位rac環境中某條sql執行時間過長
今天早上開發人員反應昨晚跑的一個儲存過程到今天早上還沒執行完,於是sqlplus登陸例項1和例項2,查詢到該存過程是連線自例項1的,而該儲存過程對應的sql語句已經執行了10多個小時,現在會話處於cr request retry等待事件中,透過v$session的p1和p2列確定了該事件正在等待14號檔案的68859號塊,然後透過dba_extents又進一步定位了該塊位於X表上,且例項1上還有若干會話也都處於cr request retry等待時間中,透過v$session的sql_id與v$sql的sql_id關聯查詢到這些sql都共同訪問了X表。
在例項1上查詢到的都是對65589號塊的請求,並沒有發現持有該塊資源的會話,這時覺得持有該資源的會話應該在例項2上,於是連線自例項2,透過對v$session的查詢發現也有若干會話處於read by other session等待事件中,還有1個會話處於de file sequencial read等待事件中,而這個會話長時間一直在對65589號塊進行讀取操作,這時懷疑問題的根源應該是這個會話的問題。和開發人員溝通後確認這個會話對應的sql是個分頁查詢,可以kill掉這個會話,於是透過關聯v$process確認spid後,在os上殺掉了該程式,然後馬上查詢例項2和例項1上的會話情況,這時相關等待事件全部消失,開發人員再次手動執行儲存過程,此時該儲存過程可以在規定時間內順利跑完。
這裡還有一點疑惑就是什麼原因導致例項2上那個會話一直處於對65589塊的db file sequencial read等待事件中。。。。。。。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20801486/viewspace-723345/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 批次殺執行某條sql的sessionSQLSession
- 清除shared pool中某條sql的執行計劃SQL
- RAC環境調整系統時間
- 故障分析 | MySQL 相同 SQL 不同環境執行時間不一樣案例分析MySql
- 查詢過去一段時間內某條sql使用的臨時表空間大小SQL
- 【譯】JS執行時環境JS
- 如何清除某條SQL在庫快取中的執行計劃SQL快取
- 一條Sql的執行過程SQL
- 透過pl/sql計算程式的執行時間SQL
- 通過pl/sql計算程式的執行時間SQL
- oracle查詢sql執行耗時、執行時間、sql_idOracleSQL
- MyBatis列印SQL執行時間MyBatisSQL
- 計算SQL執行時間SQL
- RAC環境中修改系統時間可能導致SRVCTL命令失敗
- job 執行時間比排程間隔時間長
- (轉)windows環境下rac節點時間同步方法Windows
- oracle 中如何顯示sql語句的執行時間和sql語句的執行後的當前時間OracleSQL
- JAMon監控SQL執行時間SQL
- 一次awr報告分析(密碼錯誤引發sql執行時間過長)密碼SQL
- 修改SQL Server 2005執行環境SQLServer
- oracle 對比sql語句執行環境OracleSQL
- 微服務中的事件、流程和長時間執行業務微服務事件行業
- 一條sql語句的執行過程SQL
- 一條 sql 的執行過程詳解SQL
- MySQL 中一條 sql 的執行過程MySql
- 獲取執行次數最多和單次執行時間最長的10個SQLSQL
- nodejs中REPL執行環境解析NodeJS
- 分享一個查詢某個使用者過去一段時間內執行的SQL語句。SQL
- 定位SQL的執行次數SQL
- 使用Falcosidekick將執行時安全整合到現有環境中IDE
- kill執行時間較長的會話會話
- Linux開機執行多長時間Linux
- Oracle 執行 DDL 長時間無響應Oracle
- 利用statspack來獲取生成環境中top SQL及其執行計劃SQL
- SQL Server中檢視SQL句子執行所用的時間SQLServer
- ORACLE RAC環境下某節點的+ASM註冊到CRS資源中OracleASM
- JavaScript執行環境與執行棧JavaScript
- RAC環境中cdata資料夾佔用太多磁碟空間