|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。办理
V$LOCK视图中包括了关于锁的信息
V$LOCKED_OBJECT包括了关于锁的工具的信息
举个例子:起首在一个session利用了demo用户上岸,然后实行
updatelunarsetc1=firstlockwherec2=999;
体系显现:
SQL>updatelunarsetc1=firstlockwherec2=999;
已更新1行。
已用工夫:00:00:00.00
SQL>
这个session没有提交,然后在另外一个session中,利用demo上岸,然后仍旧实行:
updatelunarsetc1=firstlockwherec2=999;
这时候,这个session就会处于idel的形态,也就是他在守候表lunar中c2=999这些行的独有锁;然后再开一个新的session,利用利用demo上岸,然后仍旧实行:
updatelunarsetc1=firstlockwherec2=999;
这时候,这个session也会处于idel的形态,他也在守候表lunar中c2=999这些行的独有锁,如图:
利用sysdba身份上岸,实行上面的剧本:
SQL>SELECTDECODE(request,0,Holder:,Waiter:)||sidsess,id1,id2,lmode,
2request,type
3FROMV$LOCK
4WHERE(id1,id2,type)IN(SELECTid1,id2,typeFROMV$LOCKWHERErequest>0)
5ORDERBYid1,request
6/
SESSID1ID2LMODEREQUESTTYPE
-------------------------------------------------------------
Holder:1239324747360TX
Waiter:839324747306TX
Waiter:1639324747306TX
SQL>
HOLDER暗示持有锁的历程,waiter暗示守候锁的历程,以是我们必要找出来holder的历程,然后依据holder的sid找到session的信息,断定是用户会话(而不是体系会话):
SQL>selectsid,serial#,sql_hash_value,username,type,program,schemanamefromv$session
2wheresid=12
3/
SIDSERIAL#SQL_HASH_VALUEUSERNAMETYPEPROGRAMSCHEMANAME
---------------------------------------------------------------------------
12110DEMOUSERsqlplus.exeDEMO
SQL>
注重,假如sql_hash_value的值不为0,则暗示该sql还在运转,能够进一步利用后面7.5节说起的《依据hashvalue找到sql语句》找到这个sql语句。
我们能够确认这个锁是被一个形式名(能够近似了解为用户名)为demo的oracle用户,固然也能够断定该历程的范例为用户历程(而不是体系历程)。接上去,我们就能够杀失落这个sid了。
假如想看看该用户锁定的工具,可使用v$locked_object
SQL>selectOBJECT_ID,SESSION_ID,ORACLE_USERNAME,PROCESS,LOCKED_MODE
2fromv$locked_object;
OBJECT_IDSESSION_IDORACLE_USERNAMEPROCESSLOCKED_MODE
-------------------------------------------------------------------------
73828DEMO2516:18123
738212DEMO2440:24243
738216DEMO2524:23843
SQL>
然后利用altersystemkillsession来杀失落这个历程就能够了,比方:
SQL>altersystemkillsession12,11;
Systemaltered
SQL>
每个Rows_log_event中包含event_type,可选值为WRITE_ROWS_EVENT、UPDATE_ROWS_EVENT、DELETE_ROWS_EVENT。从宏名字就能看出用途。 |
|