本文给出使用Oracle Enterprise Manager诊断并排除Oracle数据库锁等待故障的方法。
1.进入到Windows命令行界面
点击“开始” → 选择“运行” → 输入“cmd” → 回车后进入到Windows命令行界面。
2.连接到SCOTT用户
C:\Documents and Settings\Administrator>sqlplus scott/tiger
SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 7月 20 13:49:43 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
3.查询EMP表数据
SQL> select ename,sal from emp;
ENAME SAL
---------- ----------
SMITH 800
ALLEN 1600
WARD 1250
JONES 2975
MARTIN 1250
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500
ADAMS 1100
ENAME SAL
---------- ----------
JAMES 950
FORD 3000
MILLER 1300
已选择14行。
4.将SCOTT员工的薪水修改为20000
SQL> update emp set sal=20000 where ename='SCOTT';
已更新 1 行。
SQL>
注意,这里不提交事物。
5.另外单独开启一个会话
步骤与上面的操作过程一致。
调整SCOTT的薪水为60000
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>sqlplus scott/tiger
SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 7月 20 13:57:41 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> update emp set sal=60000 where ename='SCOTT';
注意这里的现象:此修改语句长时间无法完成。
原因:由于在个会话中对SCOTT对应的行数据进行了修改,但是没有提交也没有回滚,导致一直持有该条记录的锁定。因此限制其他会话对其进行修改。
6.有关该故障的排查过程请参考以下在Enterprise Manager中的操作信息
1)以SYS用户登陆Enterprise Manager
2)监控数据库的活动会话数
3)点击“实例锁”
4)点击“终止会话”
5)点击“显示SQL”查看对应的SQL语句
6)点击“返回”
7)选择“立即中断”点击“是”
8)故障处理完毕
9)个会话已经被强行杀死
10)第二个会话锁等待现象消失
7.小结
在处理Oracle数据库环境中有关锁等待故障的过程中,需要重点关注两方面:①确定锁定及被锁定的会话信息;②分析后决定杀死的会话目标。使用Enterprise Manager来发现和诊断锁等待故障比较直观和便捷。BTW:建议使用SQL命令方式辅助发现和处理锁等待故障。
Good luck.
secooler
11.07.21
-- The End --
分享好友
分享这个小栈给你的朋友们,一起进步吧。
订阅须知
• 所有用户可根据关注领域订阅专区或所有专区
• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询
• 专区发布评论属默认订阅所评论专区(除付费小栈外)