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

–查看会话数  
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进程。 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1699128.html

(0)
上一篇 2025年2月19日 14:15:40
下一篇 2025年2月19日 14:16:00

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Oracle中如何更新一张大表记录

    我们要看到Oracle Update的另一个方面,就是Undo、Redo和进程工作负载的问题。熟悉Oracle的朋友们知道,在DML操作的时候,Undo和 sql语句是一种方便的语言,同样也是一种“迷惑性”的语言。这个主要体现在它的集合操作…

    数据库 2025年2月23日
    100
  • 配置Oracle随系统启动和关闭

    1、修改/etc/oratab文件 将需要随操作系统自启动的数据库由N修改为Y lis:/u01/app/Oracle/product/11.2.0/db_1:N 修改为: lis:/ 1、修改/etc/oratab文件 将需要随操作系统自…

    数据库 2025年2月23日
    100
  • Win10远程连接提示函数错误怎么办 Win10远程连接提示函数错误解决方法

    win10远程连接函数错误无法连接?当您在尝试远程连接windows 10电脑时遇到函数错误,这可能会阻碍您的连接尝试。如果您遇到此问题,请继续往下阅读,了解php小编香蕉提供的详细解决方案。本文将逐步指导您解决函数错误,让您能够成功建立远…

    2025年2月23日
    100
  • 把文件系统的数据文件迁移到ASM存储

    RAC环境,使用的是ASM作存储。近日在给用户做%ignore_a_1%维护的过程中,发现有一部分数据文件存放在文件系统中,这是不正常的。导致另 把文件系统的数据文件迁移到asm存储 RAC环境,使用的是ASM作存储。近日在给用户做数据库维…

    数据库 2025年2月23日
    100
  • 利用RMAN自动备份转储Spfile

    以上过程就是通过rman的自动备份生成的spfile文件,这种方法适用于丢失了服务器的参数文件时,并且要保证rman设置了控制文件的自 【情景简介】 生产环境丢失了服务器的参数文件,rman已开启自动备份设置。 【操作过程简述】 &#821…

    数据库 2025年2月23日
    100
  • sqlldr批量导入导出数据测试

    %ignore_a_1%是在处理大数据量的操作中建议采用的方式,它有许多性能想关的开关,能最大程度的减少redo,undo的生成,控制数据的处理方式 sqlldr是在处理大数据量的操作中建议采用的方式,它有许多性能想关的开关,能最大程度的减…

    数据库 2025年2月23日
    100
  • AWR的基本知识

    自从Oracle 10g开始支持AWR以后,相比于Statspack,除了有更多新的内容可供参考,HTML保存格式也是为查看文档提供了很多便利。说 自从oracle 10g开始支持awr以后,相比于statspack,除了有更多新的内容可供…

    数据库 2025年2月23日
    100
  • ORA-12520错误解决方法

    ORA-12520监听程序无法为请求的服务器类型找到可用的处理程序 ora-12520监听程序无法为请求的服务器类型找到可用的处理程序 以下不知道是不是解决方法的方法,因为我只重启下Oracle服务就好了,并没进行任何修改 引用别人的文章:…

    数据库 2025年2月23日
    100
  • RMAN备份整个数据库和归档日志时报错

    RMAN备份整个数据库和归档日志时报错 Hi. I lost few previous archivelogs, and can rman备份整个数据库和归档日志时报错 Hi. I lost few previous archivelogs…

    数据库 2025年2月23日
    100
  • SQLite4 的设计

    SQLite4 对于SQLite3而言,是一个可选方案,而不是一个替代方案. SQLite3 还没有过时. SQLite3 和 QLite4 将会并行受到支持. SQL 1.0 内容提要 sqlite4 是一个放在库中的紧凑的,自包含的,零…

    数据库 2025年2月23日
    100

发表回复

登录后才能评论