Oracle死锁处理实例

Oracle死锁常规语句

1、查询Oracle死锁常规语句

SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,

l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time

FROM v$locked_object l, all_objects o, v$session s

WHERE l.object_id = o.object_id

AND l.session_id = s.sid

ORDER BY sid, s.serial# ;

2、杀死死锁进程

--alter system kill session ‘858,27327‘ immediate;

常规处理以上能可满足,但是v$session中状态为“killed”的情况,session不自动释放死锁表,这时候需要进入操作系统,即在root用户下执行杀进程语句。

3、操作系统层杀死死锁进程

1、登录root用户;

2、su - oracle(进入Oracle用户环境下);

3、sqlplus / as sysdba(进入DBA权限下);

4、查询KILLED状态的session:

select a.spid,b.sid,b.serial#,b.username

from v$process a,v$session b

where a.addr=b.paddr

and b.status=‘KILLED‘;

5、找到v$session,状态为“killed”的sid,通过sid,找到spid:

select spid,osuser,s.PROGRAM from v$session s,v$process p where s.PADDR=p.ADDR and s.SID=‘2151‘;

6、执行杀进程语句

KILL -9 spid

4、注意事项:

1)在unix上,用root身份执行命令:#kill -9 12345

2)、在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:

orakill sid thread

其中:

sid:表示要杀死的进程属于的实例名

thread:是要杀掉的线程号,即第3步查询出的spid。

例:c:>orakill orcl 12345

注意:这里要注意的是kill OS进程是在服务端操作,而不是你程序所在客户机。

原文地址:https://www.cnblogs.com/kingwei55555/p/11062106.html

时间: 2024-10-13 07:23:29

Oracle死锁处理实例的相关文章

Linux平台oracle 11g单实例 安装部署配置 快速参考

1.重建主机的Oracle用户 组 统一规范 uid gid 以保证共享存储挂接或其他需求的权限规范 userdel -r oracle groupadd -g 500 oinstall groupadd -g 501 dba useradd -g oinstall -G dba -u 500 oracle #id oracle uid=500(oracle) gid=500(oinstall) 组=500(oinstall),501(dba) 2.安装好Oracle 需要的rpm包.安装rpm

Oracle死锁

1.什么是死锁 在程序运行过程中,只有一个进程在运行,其他进程都在等待状态,并且点击进程的确定和保存按钮,程序无反应,但是也不报错,之中现象称作死锁. 2.Oracle死锁原理 操作Oracle数据库一个sql语句在执行对某个表增删改查操作时,一直处于执行状态,且没有结果返回,其他对该表操作的语句一直处于等待状态,也没有报错信息 3.死锁产生原因 A.存在竞争资源.系统存在共享资源不足以满足进程的需要时,就会引起进程之间竞争资源产生死锁现象.生活例子---很多人拥挤在地铁门口等待上车,地铁门一开

【转】Oracle - 数据库的实例、表空间、用户、表之间关系

[转]Oracle - 数据库的实例.表空间.用户.表之间关系 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区. 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘

Oracle - 数据库的实例、表空间、用户、表之间关系

完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区. 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件.Oracle有一个很大的内存快,成为全局区(SGA

oracle事务处理及实例演示jdbc操作批量删除

事务 作为逻辑处理的基本单位,对于数据库操作来说由一条或者多条sql语句来构成.当然还有针对非数据库操作的,如在计算机中设置的还原点即是一个很好的应用. 对于事务的基本性质在另一篇中有所叙述:SQL 事务及实例演示 oracle和sql server在事务上区别 sql server中的事务一般分为隐式事务.显式事务.自动提交事务. 自动事务:对于sql server来说,当客户端提交一条sql语句时,这时候sql server都会自动启动一个事务:对于这样的事务,在执行完sql语句后会自动提交

搭建Oracle 11G单实例Active DataGuard

Oracle 11G单实例ActiveDataGuard 1.基础环境准备 1.1基础环境说明: 操作系统:RHEL 5.5 64bit 数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit 1.2数据库服务名称及目录说明: 主库 备库 IP地址 192.168.4.157 192.168.4.158 主机名称 primary01 standby01 db_name testdb testdb db_uni

oracle 数据库、实例、服务名、SID

参考:http://www.zhetao.com/content240 在实际的开发应用中,关于Oracle数据库,经常听见有人说建立一个数据库,建立一个Instance,启动一个Instance之类的话. 其实问他们什么是数据库,什么是Instance,很可能他们给的答案就是数据库就是Instance,Instance就是数据库啊,没有什么区别. 在这里,只能说虽然他们Oracle用了可能有了一定的经验,不过基础的概念还是不太清楚.(我目前就是这个状态) 一.什么是数据库,其实很简单,数据库就

VM虚拟机下在LINUX上安装ORACLE 11G单实例数据库

VM虚拟机下在LINUX上安装ORACLE 11G单实例数据库 1.环境及安装前规划:虚拟机及OS如下 环境:VMware Wordstation ACE版 6.0.2 操作系统:OracleLinux-R5-U8-Server-i386-dvd    3.2G 安装操作系统,这里需要注意的是磁盘空间要预留足够. 我的规划是: 虚拟机分配1024M内存,当然如果主机内存足够,安装时内存设置2048M可以更快. 虚拟机分配一块磁盘,30G磁盘空间. /boot 100M ext3 /    20G

oracle事务处理及实例演示jdbc操作批量删除 2014年8月11日

事务 作为逻辑处理的基本单位,对于数据库操作来说由一条或者多条sql语句来构成.当然还有针对非数据库操作的,如在计算机中设置的还原点即是一个很好的应用. 对于事务的基本性质在另一篇中有所叙述:SQL 事务及实例演示 oracle和sql server在事务上区别 sql server中的事务一般分为隐式事务.显式事务.自动提交事务. 自动事务:对于sql server来说,当客户端提交一条sql语句时,这时候sql server都会自动启动一个事务:对于这样的事务,在执行完sql语句后会自动提交