可以用Spotlight軟件對數(shù)據(jù)庫的運行狀態(tài)進行監(jiān)控。 當出現(xiàn)session鎖時,我們要及時進行處理. 1. 查看哪些session鎖: SQL語句:select 'alter system kill session '''||sid||','||serial#||''';' from v$session where sid in (select sid from v$lock where block = 1); SQL> select 'alter system kill session '''||sid||','||serial#||''';' from v$session where sid in (select sid from v$lock where block = 1); 'ALTERSYSTEMKILLSESSION'''||SID||','||SERIAL#||''';' -------------------------------------------------------------------------------- alter system kill session '132,731'; alter system kill session '275,15205'; alter system kill session '308,206'; alter system kill session '407,3510'; 2. 查看session鎖. sql語句:select s.sid, q.sql_text from v$sqltext q, v$session s where q.address = s.sql_address and s.sid = sid order by piece; SQL> select s.sid,q.sql_text from v$sqltext q, v$session s where q.address = s.sql_address and s.sid in (select sid from v$lock where block = 1) order by piece; SID SQL_TEXT ---------- ---------------------------------------------------------------- 77 UPDATE PROFILE_USER SET ID=1,COMPANY_ID=2,CUSTOMER_ID=3,NAMED 77 _INSURED_ID=4,LOGIN=5,ROLE_ID=6,PASSWORD=7,EMAIL=8,TIME_ZON 77 E=9 WHERE PROFILE_USER.ID=:34 3 rows selected.
3. kill鎖的進程. SQL語句:alter system kill session '77,22198'; SQL> alter system kill session '391,48398'; System altered. 4. 查看誰鎖了誰。 select s1.username || [email='@']'@'[/email] || s1.machine || ' ( SID=' || s1.sid || ' ) is blocking ' || s2.username || [email='@']'@'[/email] || s2.machine || ' ( SID=' || s2.sid || ' ) ' AS blocking_status from v$lock l1, v$session s1, v$lock l2, v$session s2 where s1.sid=l1.sid and s2.sid=l2.sid and l1.BLOCK=1 and l2.request > 0 and l1.id1 = l2.id1 and l2.id2 = l2.id2 ; 注: > : 重定向輸出,將文件的標準輸出重新定向輸出到文件,或?qū)?shù)據(jù)文件作為另一程序的標準輸入內(nèi)容。 | :UNIX管道:將一文件的輸出作為另一文件的輸入. 在執(zhí)行SQL語句試:alter system kill session '391,48398'(sid為391); 應當注意對于sid在100以下的應當謹慎,可能該進程對應某個application,如對應某個事務,可以kill.