`
qjoycn
  • 浏览: 1245302 次
文章分类
社区版块
存档分类
最新评论

oracle 锁问题的解决

 
阅读更多

可以用Spotlight软件对数据库的运行状态进行监控。

当出现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 ;

注:
> : 重定向输出,将文件的标准输出重新定向输出到文件,或将数据文件作为另一程序的标准输入内容。
| UNIX管道:将一文件的输出作为另一文件的输入.

在执行SQL语句试:alter system kill session '391,48398'(sid为391); 应当注意对于sid在100以下的应当谨慎,可能该进程对应某个application,如对应某个事务,可以kill.

------------------------------------------------------csdn 网友的SQL-------------------------------

SELECT sn.username, m.SID,sn.SERIAL#, m.TYPE,
DECODE (m.lmode,
0, 'None',
1, 'Null',
2, 'Row Share',
3, 'Row Excl.',
4, 'Share',
5, 'S/Row Excl.',
6, 'Exclusive',
lmode,
LTRIM (TO_CHAR (lmode, '990'))
) lmode,
DECODE (m.request,
0, 'None',
1, 'Null',
2, 'Row Share',
3, 'Row Excl.',
4, 'Share',
5, 'S/Row Excl.',
6, 'Exclusive',
request,
LTRIM (TO_CHAR (m.request, '990'))
) request,
m.id1, m.id2
FROM v$session sn, v$lock m
WHERE (sn.SID = m.SID AND m.request != 0) --存在锁请求,即被阻塞
OR ( sn.SID = m.SID --不存在锁请求,但是锁定的对象被其他会话请求锁定
AND m.request = 0
AND lmode != 4
AND (id1, id2) IN (
SELECT s.id1, s.id2
FROM v$lock s
WHERE request != 0 AND s.id1 = m.id1
AND s.id2 = m.id2)
)
ORDER BY id1, id2, m.request;


alter system kill session 'sid,SERIAL#';

<!--v:3.2-->
分享到:
评论

相关推荐

    Oracle 锁机制问题详解

    ### Oracle 锁机制问题详解 #### 一、引言 在多用户数据库环境中,当多个用户尝试同时访问或修改同一份数据时,就需要通过锁机制来确保数据的一致性和完整性。Oracle 数据库提供了多种类型的锁来支持事务隔离级别,...

    oracle解锁,死锁

    ### Oracle解锁与死锁解析 #### 一、Oracle解锁与死锁概述 在Oracle数据库管理过程中,解锁与处理死锁是...通过上述方法和技术,可以有效地管理和解决Oracle数据库中的解锁与死锁问题,从而提高系统的稳定性和效率。

    oracle锁表解决

    ### Oracle锁表解决 在Oracle数据库管理中,锁表是一个常见的问题,特别是在高并发的应用场景下。当一个表被锁定时,其他用户或进程可能无法访问该表,从而导致应用程序出现延迟或者错误。因此,了解如何有效地解锁...

    oracle锁表处理

    ### Oracle锁表处理 在Oracle数据库管理中,锁机制是一种重要的资源管理手段,用于控制并发事务对数据资源的访问,防止多个用户同时修改相同的数据,从而确保数据的一致性和完整性。然而,在高并发环境下,锁的争用...

    oracle锁表及解锁

    它不仅能帮助解决并发控制问题,还能提高数据库的整体性能。当遇到由于长时间运行的事务导致的锁等待时,能够快速识别并解锁相关会话,对于保持系统的稳定性和响应性有着不可忽视的作用。 总之,Oracle的锁机制是其...

    Oracle数据库的锁类型

    Oracle数据库作为企业级数据库解决方案的佼佼者,其锁机制是保障数据完整性和并发控制的关键技术之一。在Oracle数据库中,锁的使用是为了协调多个用户对同一数据资源的访问,防止数据在并发环境下出现不一致的情况。...

    Oracle锁 图例

    总结,Oracle锁机制是数据库并发控制的核心,理解并熟练掌握锁的使用和管理对于优化数据库性能、避免并发问题至关重要。通过使用适当的工具和技巧,我们可以有效地监控和解决锁相关问题,从而提高系统的稳定性和响应...

    oracle存储过程解锁

    它指向了一系列具体的步骤和技术,旨在帮助数据库管理员和开发人员解决存储过程锁定的问题,确保数据库的稳定运行和高效率。 ### 部分内容:SQL语句示例 #### 解析: 提供的部分内容展示了实际的SQL语句,这些语句...

    查看Oracle锁表

    ### 查看Oracle锁表 在Oracle数据库管理过程中,锁定机制是一项重要的功能,它用于确保数据的一致性和事务处理的安全性。当多个用户试图同时访问同一数据时,可能会出现并发问题,这时就需要通过锁定来控制对数据的...

    快速查找oracle锁对象

    在Oracle数据库管理中,"快速查找Oracle锁对象"是一个关键任务,特别是在处理并发事务和解决性能问题时。当多个用户或进程同时访问同一资源时,可能会出现锁冲突,导致某些事务等待,影响数据库的正常运行。了解如何...

    对于Oracle锁的一些理论总结

    Oracle数据库中的锁机制是确保数据一致性、避免并发访问冲突的关键技术。本文主要探讨Oracle的锁理论,特别是DML锁,即数据操纵语言锁...了解和掌握这些理论,对于优化Oracle数据库的性能和解决并发访问问题至关重要。

    Oracle锁表问题的简捷处理技巧

    ### Oracle锁表问题的简捷处理技巧 在Oracle数据库开发过程中,锁机制是确保数据一致性和并发控制的关键组件之一。当多个用户或进程试图同时访问同一个资源时,Oracle数据库通过实施不同的锁定策略来协调这些访问...

    Oracle数据库解锁工具

    Oracle数据库解锁工具是一种专门用于解决Oracle数据库账户锁定问题的应用程序,尤其在开发环境中十分有用。在Oracle数据库系统中,为了确保安全性,用户账户可能会因为多次尝试登录失败而被自动锁定。这种情况下,...

    Oracle强制释放锁的命令

    在这种情况下,可以使用强制释放锁的命令来释放锁资源,解决问题。 一、什么是 ORA-00054 错误? ORA-00054 错误是 Oracle 中的一种常见错误,表示资源忙碌,无法获取资源。这通常发生在多个会话同时访问同一个...

    oracle数据库锁使用

    锁的兼容性决定了不同类型的锁在同一时刻可以并存的情况。例如,S锁与S锁、RS锁与RS锁、RX锁与RX锁之间是兼容的,但S锁与X锁、RS锁与X锁、RX锁与X锁之间不兼容。这些规则有助于开发者设计出高效且安全的并发处理策略...

    Oracle的锁机制

    Oracle的锁机制是数据库管理系统中一个关键的组成部分,它的主要目标是确保在多用户环境下,数据的读一致性、完整性和并行性。...理解并熟练掌握这些概念对于优化数据库性能和解决并发问题至关重要。

    Oracle查询用户锁表

    Oracle 查询用户锁表是指在 Oracle 数据库中查询当前用户锁定的表,以便诊断和解决锁表问题。本文档将详细介绍如何查询用户锁表,并提供相关的代码。 一、查询用户锁表的必要性 在 Oracle 数据库中,锁表是指用户...

    oracle 锁问题

    #### 二、Oracle锁问题识别与解决 ##### 2.1 识别被阻塞的会话(Sessions) 当一个会话正在等待另一个会话释放资源时,我们称这个会话被阻塞。识别这些被阻塞的会话对于解决问题至关重要。可以通过以下SQL语句来...

    ORACLE数据库锁表问题浅析.pdf

    2.解决锁表问题 锁机制的优点: 1.保证数据的一致性和正确性 2.避免数据的不一致和错误 3.提高数据库应用的性能 锁机制的缺点: 1.可能会导致长时间不释放的锁 2.影响数据库应用的性能 结论: Oracle数据库锁...

Global site tag (gtag.js) - Google Analytics