Oracle 解決鎖表問題
問題:更新一張表的資料,就幾百條,然後特別慢,一直在執行,然後強制退掉,重新執行還是一樣,考慮到可能是鎖表的問題!
解決:
①首先查詢是哪些session被鎖:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id=o.object_id and l.session_id=s.sid;
查詢出來之後,發現有三個物件!
②然後將這三個物件一一殺死:
alter system kill session '13,52136';
--這裡的13是上邊查出的sid,52136是查出的serial
然後又出現了一個問題,我再查的時候那個sid為13的session還是一直在,但是狀態已經是killed,我再執行alter system kill session '13,52136';時就報錯ORA-00031:session marked for kill(標記要終止的會話)
伺服器資料庫上鎖定的資源還是沒有釋放,這時候我們可以去伺服器將該程式殺死!
首先查出程式號spid:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=13; --spid=5162
然後根據查詢出的spid來殺死程式
1. Linux OS:kill -9 5162
2. Windows OS:orakill mars 5162 ,其中mars為要殺死程式的例項名!
在windows下開啟cmd,輸入命令tasklist /svc可以檢視PID為5162的服務名,即例項名!
這裡說下三個概念:
SPID一一system process id,
表示該server process在OS層面的Porcess ID ,即作業系統程式ID
PID一一Oracle process id
可以理解為Oracle自己用的,Oracle程式ID
SID一一SESSION標識,常用於連線其它列
解決:
①首先查詢是哪些session被鎖:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id=o.object_id and l.session_id=s.sid;
查詢出來之後,發現有三個物件!
②然後將這三個物件一一殺死:
alter system kill session '13,52136';
--這裡的13是上邊查出的sid,52136是查出的serial
然後又出現了一個問題,我再查的時候那個sid為13的session還是一直在,但是狀態已經是killed,我再執行alter system kill session '13,52136';時就報錯ORA-00031:session marked for kill(標記要終止的會話)
伺服器資料庫上鎖定的資源還是沒有釋放,這時候我們可以去伺服器將該程式殺死!
首先查出程式號spid:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=13; --spid=5162
然後根據查詢出的spid來殺死程式
1. Linux OS:kill -9 5162
2. Windows OS:orakill mars 5162 ,其中mars為要殺死程式的例項名!
在windows下開啟cmd,輸入命令tasklist /svc可以檢視PID為5162的服務名,即例項名!
這裡說下三個概念:
SPID一一system process id,
表示該server process在OS層面的Porcess ID ,即作業系統程式ID
PID一一Oracle process id
可以理解為Oracle自己用的,Oracle程式ID
SID一一SESSION標識,常用於連線其它列
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2142673/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 鎖問題的解決Oracle
- oracle外來鍵索引解決父表鎖定問題Oracle索引
- oracle鎖表問題Oracle
- 解決Oracle死鎖問題步驟Oracle
- Oracle觸發器死鎖問題解決Oracle觸發器
- oracle 解鎖的問題Oracle
- openldap+NFS 鎖問題解決LDANFS
- Oracle資料表死鎖的解決方法Oracle
- Oracle的鎖表與解鎖Oracle
- SQLserver 程式被死鎖問題解決SQLServer
- ORACLE 鎖表的解決方法及查詢引起鎖表SQL語句[轉]OracleSQL
- ORACLE 鎖表的解決方法及查詢引起鎖表SQL語句方法OracleSQL
- oracle 鎖表、解鎖的語句Oracle
- oracle表鎖住 解鎖辦法Oracle
- 解決Oracle臨時表空間佔滿的問題Oracle
- 轉:Oracle 臨時表空間過大問題解決Oracle
- oracle變異表觸發器相關問題解決Oracle觸發器
- Mysql使用kill命令解決死鎖問題MySql
- 用分散式鎖解決併發問題分散式
- Redis分散式鎖解決搶購問題Redis分散式
- 通過 sysprocesses 解決Sql死鎖問題SQL
- 利用oracle快照dblink解決資料庫表同步問題Oracle資料庫
- 用Oracle表函式解決繫結變數集合問題Oracle函式變數
- oracle的臨時表空間解決問題的步驟Oracle
- Java 程式死鎖問題原理及解決方案Java
- 解決SQL2005死鎖問題SQL
- 解決「問題」,不要解決問題
- 什麼是鎖?深入分析解讀MySQL鎖,解決幻讀問題!MySql
- 簡單介紹redis分散式鎖解決表單重複提交的問題Redis分散式
- 解決Oracle序列跳號問題Oracle
- JDBC Oracle executeUpdate 卡死問題解決JDBCOracle
- 解決問題oracle學習篇Oracle
- 解決oracle中not like效率問題Oracle
- oracle壞塊問題的解決Oracle
- oracle鎖表問題處理 v$lock v$locked_objectOracleObject
- oracle system 表空間32G問題解決一例Oracle
- 解決:ORACLE 11G使用exp無法導空出表問題Oracle
- 解決Oracle 11g空表不能exp匯出的問題Oracle