`

ORACLE数据库查询会话及死锁的解决

 
阅读更多

 

--查看会话数
select count(*) from v$session;

--查看进程数
select count(*) from v$process;

--查看数据库的并发连接数
select * from v$session where status='ACTIVE';

--查看当前数据库建立的会话
SELECT SID,SERIAL#,USERNAME,PROGRAM,MACHINE,STATUS FROM V$SESSION;

--查看数据库允许的最大连接数
SELECT value FROM V$PARAMETER WHERE NAME='processes'

--查看数据库允许的最大会话数
SELECT value FROM V$PARAMETER WHERE NAME='sessions'


--查看后台正在运行着的sql语句
select a.program,b.spid,c.sql_text from v$session a,v$process b,v$sqlarea c where a.paddr=b.addr and a.sql_hashvalue=c.hash_value and a.username is not null;

 

 

有关死锁

关于数据库死锁的检查方法

一、         数据库死锁的现象
程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。
二、         死锁的原理
当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提
交,另一条对于这一列数据做更新操作的语句在执行的时候就会处于等待状态,
此时的现象是这条语句一直在执行,但一直没有执行成功,也没有报错。
三、         死锁的定位方法
通过检查数据库表,能够检查出是哪一条语句被死锁,产生死锁的机器是哪一台。
1)用dba用户执行以下语句
select username,lockwait,status,machine,program from v$session where sid in
(select session_id from v$locked_object)
如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。字段说明:
Username:死锁语句所用的数据库用户;
Lockwait:死锁的状态,如果有内容表示被死锁。
Status: 状态,active表示被死锁
Machine: 死锁语句所在的机器。
Program: 产生死锁的语句主要来自哪个应用程序。
2)用dba用户执行以下语句,可以查看到被死锁的语句。
select sql_text from v$sql where hash_value in 
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))

四、         死锁的解决方法
     一般情况下,只要将产生死锁的语句提交就可以了,但是在实际的执行过程中。用户可
能不知道产生死锁的语句是哪一句。可以将程序关闭并重新启动就可以了。
 经常在Oracle的使用过程中碰到这个问题,所以也总结了一点解决方法。 

  1)查找死锁的进程: 

sqlplus "/as sysdba" (sys/change_on_install)
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS 
FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;

  2)kill掉这个死锁的进程: 

  alter system kill session ‘sid,serial#’; (其中sid=l.session_id) 

  3)如果还不能解决: 

select pro.spid from v$session ses,
v$process pro where ses.sid=XX and 
ses.paddr=pro.addr;

  其中sid用死锁的sid替换: 

exit
ps -ef|grep spid

  其中spid是这个进程的进程号,kill掉这个Oracle进程。

 

分享到:
评论

相关推荐

    oracle数据库解决死锁

    Oracle数据库解决死锁 Oracle数据库解决死锁是指在Oracle数据库中出现的死锁问题,通过使用PL/SQL语句手动解决死锁问题。死锁是当多个事务在等待其他事务释放资源时,导致系统无法继续执行的现象。 在Oracle...

    Oracle数据库死锁查询语句

    了解如何查询和解决Oracle数据库中的死锁对于数据库管理员来说至关重要。 首先,我们要明白死锁的四个必要条件: 1. **互斥**:资源不能同时被多个事务占用。 2. **请求与保持**:事务已经占有至少一个资源,但又...

    oracle死锁原因解决办法

    ### Oracle死锁原因及解决办法 #### 一、Oracle死锁概述 在Oracle数据库系统中,死锁是一种常见的并发问题,它会导致多个事务之间互相等待对方释放资源而无法继续执行,最终导致整个系统的运行效率降低甚至停滞。...

    oracle-死锁查询

    oracle死锁问题查询代码,仅供参考,有问题大家一起交流

    较实用的ORACLE数据库死锁查杀

    为了有效应对Oracle数据库中的死锁问题,我们可以使用以下SQL查询语句来进行死锁检测: ```sql SELECT bs.username "BlockingUser", ws.username "WaitingUser", bs.SID "SID", ws.SID "WSID", bs.serial# ...

    如何解决Oracle杀死死锁进程

    Oracle 杀死死锁进程是数据库管理员经常遇到的问题,本文将介绍解决 Oracle 杀死死锁进程的方法。 在 Oracle 中,死锁是指两个或多个会话在等待对方释放资源,从而导致互相阻塞的情况。死锁可能会导致数据库性能...

    Oracle查询死锁表

    在Oracle数据库管理与维护的过程中,查询并解决死锁问题是至关重要的一环。死锁是指两个或多个事务在执行过程中因争夺资源而造成的一种僵局状态,若不及时处理,将直接影响到系统的性能和稳定性。本文将围绕“Oracle...

    oracle死锁故障分析和诊断解决

    在Oracle数据库管理中,死锁是一个常见的问题,它发生在两个或多个事务互相等待对方释放资源时,导致所有事务都无法继续执行的情况。本文将深入探讨Oracle死锁的原因、诊断方法及解决方案。 #### 一、死锁的基本...

    有效关闭Oracle死锁进程,和释放状态为killed的session

    在Oracle数据库管理中,处理死锁进程和释放状态为killed的session是一项关键技能,尤其对于维护数据库性能和稳定性至关重要。以下将详细阐述如何通过一系列步骤有效地关闭Oracle死锁进程,以及如何释放状态为killed...

    简单说明Oracle数据库中对死锁的查询及解决方法

    Oracle数据库中的死锁是数据库操作过程中常见的问题,它发生在两个或更多事务因相互等待对方释放资源而形成的一种僵局。这种情况下,没有事务能够继续执行,直到其他事务取消其锁定。死锁的发生通常是由于并发控制...

    Oracle数据库日常维护

    本文将详细介绍Oracle数据库的一些主要维护任务,包括使用Oracle Enterprise Manager进行监控、表空间的扩充方法、解决死锁问题以及SPFILE与PFILE的应用。 1. **Oracle Enterprise Manager基本使用** - **启动连接...

    ORACLE表死锁的解决方法亲测有效!

    在ORACLE数据库中,有多种方法可以检测到是否发生了死锁。一种常见的做法是查询V$LOCK视图和ALL_OBJECTS视图,以获取有关锁定对象的信息。以下是检测死锁的SQL语句示例: ```sql SELECT /*+RULE*/ a.sid, b.owner, ...

    ORACLE数据库日常巡检内容报告

    - **数据库会话**:检查会话状态,防止死锁和资源过度消耗。 4. **变更与报告**: - **及时变更配置**:根据需求调整数据库设置。 - **定期编制报告**:每月生成数据库监控报告,提供给相关人员分析。 巡检过程...

    检查Oracle数据库性能情况,包含:检查数据库的等待事件,检查死锁及处理

    根据提供的文件信息,我们可以深入探讨如何检查Oracle数据库的性能情况,包括检查数据库的等待...以上查询和操作可以帮助数据库管理员监控和优化Oracle数据库的性能,及时发现并解决问题,确保数据库稳定高效地运行。

    oracle解锁,死锁

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

    Oracle数据库介绍-2008-12-12及介绍Oracle常见的问题

    3. **如何解决Oracle数据库死锁问题**: - 优化应用程序代码,确保所有事务按照一致的顺序获取锁。 - 使用`ALTER SYSTEM KILL SESSION`命令来手动终止死锁的会话。 - 定期执行数据库健康检查,预防死锁的发生。 ...

    解决oracle死锁

    本篇将详细介绍如何识别、诊断和解决Oracle数据库中的死锁问题。 首先,我们需要理解死锁的基本概念。在Oracle中,死锁通常涉及到两个或更多个并发事务,每个事务都在等待另一个事务释放其持有的资源。例如,事务A...

Global site tag (gtag.js) - Google Analytics