V$LOCK视图中包含了关于锁的信息
V$LOCKED_OBJECT包含了关于锁的对象的信息
举个例子:首先在一个session使用了demo用户登陆,然后执行
update lunar set c1='first lock' where c2=999;
系统显示:
SQL> update lunar set c1='first lock' where c2=999; 已更新 1 行。 已用时间: 00: 00: 00.00 SQL> |
这个session没有提交,然后在另一个session中,使用demo登陆,然后仍然执行:
update lunar set c1='first lock' where c2=999;
这时,这个session就会处于idel的状态,也就是他在等待表lunar中c2=999这些行的独占锁;然后再开一个新的session,使用使用demo登陆,然后仍然执行:
update lunar set c1='first lock' where c2=999;
这时,这个session也会处于idel的状态,他也在等待表lunar中c2=999这些行的独占锁,如图:
使用sysdba身份登陆,执行下面的脚本:
SQL> SELECT DECODE(request,0,'Holder: ','Waiter: ')|| sid sess, id1, id2, lmode, 2 request, type 3 FROM V$LOCK 4 WHERE (id1, id2, type) IN (SELECT id1, id2, type FROM V$LOCK WHERE request>0) 5 ORDER BY id1, request 6 / SESS ID1 ID2 LMODE REQUEST TYPE ----------------- ---------- ---------- ---------- ---------- ---- Holder: 12 393247 473 6 0 TX Waiter: 8 393247 473 0 6 TX Waiter: 16 393247 473 0 6 TX SQL> |
HOLDER表示持有锁的进程,waiter表示等待锁的进程,所以我们需要找出来holder的进程,然后根据holder的sid找到session的信息,确定是用户会话(而不是系统会话):
SQL> select sid,serial#,sql_hash_value,username,type,program,schemaname from v$session 2 where sid = 12 3 / SID SERIAL# SQL_HASH_VALUE USERNAME TYPE PROGRAM SCHEMANAME ----- -------- -------------- ---------- ---------- ------------------ ---------- 12 11 0 DEMO USER sqlplus.exe DEMO SQL> |
注意,如果sql_hash_value的值不为0,则表示该sql还在运行,可以进一步使用 前面7.5节提及的《根据hash value找到sql语句》找到这个sql语句。
我们可以确认这个锁是被一个模式名(可以近似理解为用户名)为demo的oracle用户,当然也可以确定该进程的类型为用户进程(而不是系统进程)。接下来,我们就可以杀掉这个sid了。
如果想看看该用户锁定的对象,可以使用v$locked_object
SQL> select OBJECT_ID,SESSION_ID,ORACLE_USERNAME,PROCESS,LOCKED_MODE 2 from v$locked_object; OBJECT_ID SESSION_ID ORACLE_USERNAME PROCESS LOCKED_MODE ---------- ---------- ------------------------------ ------------ ----------- 7382 8 DEMO 2516:1812 3 7382 12 DEMO 2440:2424 3 7382 16 DEMO 2524:2384 3 SQL> |
然后使用 alter system kill session 来杀掉这个进程就可以了,例如:
SQL> alter system kill session '12,11'; System altered SQL> |
分享到:
相关推荐
如果发现特定表被锁住,通常需要找出持有锁的进程并决定是否需要终止该进程。可以使用`sp_who2`系统存储过程获取当前连接和活动的详细信息: ```sql exec sp_who2 ``` 找到锁定你关注表的进程ID后,可以通过`kill`...
接下来,通过编写一个SQL查询脚本来监控并找出引发锁等待的SQL语句。脚本内容如下: ```sql SELECT AGENT_ID, SUBSTR(STMT_TEXT, 1, 100) AS statement, STMT_ELAPSED_TIME_MS FROM TABLE(SNAPSHOT_STATEMENT('...
例如,通过分析硬盘的MBR、分区表和引导扇区等关键部分,找出导致“逻辑锁”的原因,并针对性地进行修复。 #### 注意事项 - 在尝试上述任何一种方法之前,请确保备份重要的数据,以防操作不当导致数据丢失。 - ...
在理论分析方面,研究基于流体力学,建立了采煤机摇臂下降油缸腔体和回路压力的平衡方程,以找出影响结果的关键因素。通过对某型号采煤机进行实验,获得了相关性曲线,实验结果与理论计算相吻合,证实了新型节流液力...
它的工作原理是通过扫描系统中当前运行的进程,找出与目标文件关联的所有锁,然后提供一个界面供用户选择如何处理这些锁。这种机制使得Unlocker成为了Windows 7用户解决文件锁定问题的首选工具。 在Windows 7环境下...
深思S4全国写锁工具是一款专为2019年设计的专业级计算机硬件调试工具,主要用于处理和解决系统中的写锁问题。在IT行业中,写锁是一种多线程编程中用于控制对共享资源访问的技术,它确保在任何时刻只有一个线程能够...
1. 使用`SHOW PROCESSLIST`找出锁定的进程ID,然后执行`KILL id;`来终止该进程。 2. 直接使用`UNLOCK TABLES;`命令解锁当前用户锁定的所有表。 锁表操作如`LOCK TABLES tbl_name READ/WRITE;`可以在备份或维护时...
在这里,它用于从`systables`系统表中找出被锁表的详细信息,如表名、表ID等。 6. **找到持有锁的会话**: 使用`onstat -u`找出持有锁的会话ID,然后通过`onstat -g sql sessid`查看该会话执行的SQL语句,了解导致...
例如,通过`v$session`视图,可以找出持有特定表锁的会话,通过`v$lock`可以查看当前的锁状态。 处理锁冲突: 解决锁冲突通常包括强制回滚事务、杀死会话进程或者调整应用程序逻辑以减少并发冲突。强制回滚可以通过...
服务记录数据库,保存每一次开锁服务的详情,以便进行数据分析,找出服务中的瓶颈和改进点;库存数据库,实时跟踪锁具、工具的库存情况,确保配件供应充足。 在系统分析与设计方面,开发这样一个系统需要对开锁公司...
总的来说,"进程解锁程序"是解决系统中顽固进程问题的有效工具,Unlocker作为其中的一员,凭借其易用性和高效性,赢得了广大用户的认可。在面对无法关闭的进程时,正确地使用Unlocker这类工具,可以有效避免因进程...
6. **性能监控**:为了优化系统性能,工具可能提供了锁的监控功能,可以追踪锁的获取和释放情况,帮助开发者找出可能存在的性能瓶颈。 7. **并发控制策略**:除了基本的锁机制,工具可能还支持其他的并发控制策略,...
特征提取则是从图像中找出关键的纹线结构,如纹线的起点、终点、分叉点等;最后,通过算法比较这些特征,与数据库中的模板进行比对,以确定用户的身份。这种技术因其难以伪造和较高的安全性,在安全认证领域广泛应用...
3. **分析原因**:查看回滚的事务,分析其操作和锁请求,找出导致死锁的原因。 4. **优化代码**:根据分析结果,调整应用程序代码,避免未来再次出现类似死锁。 5. **调整数据库配置**:如果频繁发生死锁,可能需要...
然而,当锁冲突频繁发生时,找出导致阻塞的SQL语句变得至关重要。本文基于《高性能MySQL》中的实践,探讨如何在MySQL中定位持有锁的进程。 首先,我们需要了解MySQL中的锁类型。在示例中,使用的是MyISAM存储引擎,...
通过查询上述视图,可以找出锁的持有者、等待者以及锁定的对象。在优化SQL语句、调整事务隔离级别或改变并发策略等方面进行调整,以减少锁冲突。 总结,Oracle锁机制是数据库并发控制的核心,理解并熟练掌握锁的...
Unlocker的工作原理在于,它首先会扫描指定文件或文件夹,找出与其关联的所有系统进程。接着,Unlocker将这些信息以清晰的界面展示给用户,用户可以选择结束一个或多个占用进程,以释放文件的锁定。这种直观的交互...
2. 锁分析:分析锁冲突,找出可能导致性能瓶颈或死锁的模式。 3. 锁解除:在必要时,手动解除特定的锁以解决死锁问题。 4. 性能调优:根据锁的行为调整数据库参数,以改善并发性能。 5. 数据恢复:在出现错误时,...
他们通过对原始设备制造商(OEM)的固件进行逆向工程,找出解锁的方法。这个过程可能涉及查找并修改特定的系统文件,或者利用安全漏洞来实现解锁。 解锁平台的工作原理通常包括以下步骤: 1. **设备识别**:解锁工具...
Unlocker的工作原理是通过扫描并找出占用目标文件的进程,然后提供给用户选择:结束进程、移动文件、重命名文件或者直接删除文件。这样,即使文件被系统或者其他应用程序占用,也能通过Unlocker有效地解锁并处理。 ...