ORACLE9.2.0.1:如何知道数据库有没有锁的冲突或锁死的现象?

[复制链接]
查看11 | 回复4 | 2006-4-18 13:25:09 | 显示全部楼层 |阅读模式
系统非常忙,常常死机,我在oracle enterprise manager console 中的"例程"---"会话"中看到在锁的选项卡中有好几条锁的记录
回复

使用道具 举报

千问 | 2006-4-18 13:25:09 | 显示全部楼层
查看alert日志中是否有DeadLock的记录
回复

使用道具 举报

千问 | 2006-4-18 13:25:09 | 显示全部楼层
v$session_wait中查看有没有enqueue事件
v$lock
回复

使用道具 举报

千问 | 2006-4-18 13:25:09 | 显示全部楼层
我这几天正好在忙着解决类似的问题。你可以在发现有可能出现死锁的情况执行下面操作:
select sid,ID1,ID2,TYPE from v$lock;如果纪录多,可以增加一个id1>1000,因为大部分用户建立的对象编号大于1000。根据得出id1结果,查询dba_objects表 object_id=id1。这样你就可以知道当前那些对象被锁住。
通过selectSQL_TEXT from v$session se,v$sqlarea sq where se.SQL_HASH_VALUE=sq.HASH_VALUE and se.SERIAL#=你希望查询的用户编号; 可以看到当前制定用户运行的语句,了解哪些语句产生了锁。
给你一个metalink上的脚本专门用于分析锁信息。
当然你也可以使用statspack产生分析报表,如果在top5事件中发现enqueue事件就说明你的系统锁等待严重。
回复

使用道具 举报

千问 | 2006-4-18 13:25:09 | 显示全部楼层
系统忙从两方面看,一方面是看操作系统,查出具体忙在那种物理资源上,是cpu还是i/o还是内存;另一方面是看数据库,看看有那些明显的等待事件,然后研究是什么原因引起了这些等待事件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行