SQL Server和Oracle中的锁和死锁
2008-09-02 12:46:27 来源:WEB开发网SQL Server死锁样本:
死锁使事务中止时,SQL Server向客户机返回错误号1205,由于死锁不是逻辑错误,而只是资源争夺问题,因此客户机可以更新提交整个事务,要在应用程序中处理死锁,要在错误处理器中捕获消息1205。遇到消息1205时,应用程序可以自动重新提交事务,最好不要然用户看到SQL Server返回的死锁错误消息。
我们知道可以通过SP_lock和SP_who监视进程之间的锁争用,但是,一旦出现死锁,一个事务回退,一个事务继续。此时使用sp_lock已经看不到真正死锁的资源信息(或许能够看许多X类型的锁信息),因为所涉及资源的锁已经释放。
SQL SERVER 提供了几个跟踪标志,可以监视出现的死锁。可以用DBCC TRACEON命令打开跟踪标志,用DBCC TRACEOFF关闭跟踪标志,要然SQL SERVER把死锁跟踪标志的输出写入到错误日志中。首先要设置DBCC TRACEON(3605),比如:
DBCC TRACEON(3605)
DBCC TRACEON(1204)
这样,一旦出现死锁,将能在错误日志中监视到相关明细信息。
4、锁争用的监测和解决
ORACLE:
ORACLE提供了有用的锁的动态性能视图V$LOCK和V$locked_OBJECT。
动态性能视图V$LOCK包含所有当前由系统和所以连接的会话保持的锁的信息。
如select * from V$lock 返回下面样本:
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------- ----------------- ---------- ---------- -------- -------- ----
682BE878 682BE888 2 MR 201 0 4 0 12383 0
682BE82C 682BE83C 2 MR 11 0 4 0 12383 0
682BE7E0 682BE7F0 2 MR 10 0 4 0 12383 0
V$locked_OBJECT提供了当前被锁定的对象。可以查出该对象由什么锁模式锁定的。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
赞助商链接