查出引起等待的sql,並kill該引起等待的sql
/*
*時間:2009-04-27 Monday
*環境:AIX5.3 Oracle10g10.2.0.1.0
*標題:查出引起等待的sql,並kill該引起等待的sql
*/
這是由資料庫的觸發器沒有及時提交導致簡單的sql進行漫長的等待。
執行簡單的sql語句:
update comm_coding_sort_detail t
set t.coding_name='6廠水平井'
where t.coding_code_id='0300100011000001278'
但一直處於等待狀態。
--1查詢出哪些session在等待。
select sid,username,blocking_session,blocking_session_status,blocking_instance from v$session where username='DQOMSWAS';
SID USERNAME BLOCKING_SESSION BLOCKING_SESSION_STATUS BLOCKING_INSTANCE
1 454 DQOMSWAS NO HOLDER
2 455 DQOMSWAS NO HOLDER
3 456 DQOMSWAS NO HOLDER
4 457 DQOMSWAS NOT IN WAIT
5 464 DQOMSWAS NO HOLDER
6 465 DQOMSWAS NO HOLDER
7 472 DQOMSWAS 489 VALID 1
8 473 DQOMSWAS NO HOLDER
9 474 DQOMSWAS NO HOLDER
可以檢視出Blocking_session為489 的sql導致了session為472的等待。
--2
select * from dba_waiters;
WAITING_SESSION HOLDING_SESSION LOCK_TYPE MODE_HELD MODE_REQUESTED LOCK_ID1 LOCK_ID2
513 472 Transaction Exclusive Exclusive 458791 28659
session 513等待導致了472的等待
--3
select * from dba_blockers;
HOLDING_SESSION
472
--4
select sid,username,blocking_session,event,wait_time
from v$session where username='DQDT';
SID USERNAME BLOCKING_SESSION EVENT WAIT_TIME
1 461 DQDT SQL*Net message from client 0
2 483 DQDT SQL*Net message from client 0
3 485 DQDT SQL*Net message from client 0
4 488 DQDT SQL*Net message from client 0
5 498 DQDT SQL*Net message from client 0
6 513 DQDT 472 enq: TX - row lock contention 0
7 514 DQDT SQL*Net message from client 0
可以看出使用者DQDT使用者的sid 513 一直在等待,導致sid 472不能執行
--5根據sid查出具體的sql
select sql_text from v$session a,v$sqltext_with_newlines b
where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value)=b.hash_value
and a.sid=&sid order by piece
sid 472為:
update comm_coding_sort_detail t
set t.coding_name='6廠水平井'
where t.coding_code_id='0300100011000001278'
sid 513為:
update dqomswas.COMM_CODING_SORT_DETAIL set END_IF=:1,CREATOR_ID
=:2,SPARE2=:3,CITE_IF=:4,LOCKED_IF=:5,CODING_SHOW_ID=:6,CREATOR=
:7,CREATE_DATE=:8,SPARE1=:9,CODE_AFFORD_ORG_ID=:10,MODIFI_DATE=:
11,CODING_SORT_ID=:12,CODING_MNEMONIC_ID=:13,CODING_CODE=:14,COD
ING_NAME=:15,NOTE=:16,SUPERIOR_CODE_ID=:17,BSFLAG=:18,EDITION_NA
MEPLATE=:19,CODING_CODE_ID=:20 where CODING_CODE_ID='03001000110
00001278'
這個sid 513語句是由於資料庫中的資料傳輸時執行了一個觸發器,但一直沒有提交。
--6 查詢等待中的sid,serial#
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
username sid serial# logon_time
1 DQDT 513 5 2009-4-15 6:57:41
2 DQDT 513 5 2009-4-15 6:57:41
3 DQOMSREAD 489 5406 2009-4-27 15:43:11
4 DQOMSWAS 472 39620 2009-4-27 16:06:11
(確定如果刪除sid 513的sql語句,不會影響資料庫的資料,則可以執行下面的kill操作。)
--7 kill sid 513
alter system kill session '513,5';
剛才的更新sql就可以執行了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-591986/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何找出引起ORA-1652的SQL?SQL
- Oracle資料庫由dataguard備庫引起的log file sync等待Oracle資料庫
- 【等待事件】SQL*Net more data to client事件SQLclient
- 【等待事件】SQL*Net message from dblink事件SQL
- 【等待事件】SQL*Net vector date to client事件SQLclient
- [翻譯]SQL Server等待事件—THREADPOOLSQLServer事件thread
- SQL執行計劃異常引起的效能問題SQL
- 分析WordPress中esc_sql函式引起的注入危害SQL函式
- SQL執行計劃異常 引起的效能問題SQL
- 【等待事件】SQL*Net more data from dblink事件SQL
- 20180427通過SQL_ID查出執行該SQL客戶端IPSQL客戶端
- [20180918]等待事件SQL/Net more data from client.txt事件SQLclient
- 解決因對EFCore執行SQL方法不熟練而引起的問題SQL
- SQL Server郵件相關SQL語句出現嚴重的ASYNC_NETWORK_IO等待事件案例SQLServer事件
- SQL SERVER--系統隱形殺手—阻塞與等待SQLServer
- innodb 的 redo log,不會對未引起資料塊變化的sql做記錄的SQL
- [Java併發]執行緒的並行等待Java執行緒並行
- 【selenium】強制等待,隱式等待,顯式等待
- Selenium的等待操作
- Selenium 隱式等待與顯示等待的選擇
- selenium(7)強制等待,顯式等待和隱式等待。
- 由setContentView()方法引起的思考View
- 【TUNE_ORACLE】查出所有有“select *”語句的SQL參考OracleSQL
- MySQL中的Statistics等待MySql
- 等待閱讀的文章
- Oracle優化案例-緊急處理一條sql引起cpu使用率99%的問題(十六)Oracle優化SQL
- MySQL案例-並行複製亂序提交引起的同步異常MySql並行
- 由分號引起的問題
- 一定要會用selenium的等待,3種等待方式解讀
- Python_Selenium的等待操作Python
- python等待方式的介紹Python
- RAC中的enq: TS等待ENQ
- 2021--等待年底的收割
- Percona-Toolkit 之 pt-kill 低效SQLSQL
- Sqlserver並行等待CXPACKET、CXCONSUMER問題的解決思路和案例SQLServer並行
- 低效sql語句執行緩慢引起的大量佔用伺服器的CPU問題處理 (優化心得)SQL伺服器優化
- WebView引起的記憶體洩漏WebView記憶體
- Redis的KEYS命令引起當機事件Redis事件
- buffer busy waits引起的會話突增AI會話