oracle 如何形成死锁,Oracle数据表中的死锁情况解决方法

在进行数据库管理的过程中,经常会出现数据表被用户的一些不合理操作而导致表被锁定的情况,以下主要介绍如何查找哪些表被哪个用户所锁定,以及如何解除锁定:

1.查找被锁定的表:

select object_name,session_id,os_user_name,oracle_username,process,locked_mode,status

from v$locked_object l, all_objects a

where l.object_id=a.object_id;

73bd0b7820d28394240400043cf50970.png

如果想知道具体是哪个进程阻塞了哪个进程,可用以下语句查看:

select username,v$lock.sid,trunc(id1/power(2,16)) rbs,bitand(id1,to_number('ffff','xxxx'))+0 slot,id2 seq,lmode,request from v$lock, v$session where v$lock.type = 'TX' and v$lock.sid = v$session.sid and v$session.username = 'CENTER' ;

select

(select username||':'||sid||':'||serial# from v$session where sid=a.sid) ||

' 阻塞了 ' ||

(select username ||':'||sid||':'||serial# from v$session where sid=b.sid)

from v$lock a, v$lock b

where a.block = 1

and b.request > 0

and a.id1 = b.id1

and a.id2 = b.id2;

127862f4d3eb5c206d46c64347b30138.png

2.确定锁定表用户的sid与serial编号(可通过oracle用户确定也可通过系统用户确定)

a.通过oracle用户确定

select sid,serial# from v$session where username='center';

5b0f2f3247622022450e1615ad21743b.png

b.通过系统用户确定

select sid,serial# from v$session where username='administrator';

b996825adfa39abdf8081cb3a66dc69c.png

3.杀掉造成死锁的进程(已知是123阻塞了124号进程,杀掉即可解锁)

alter system kill session ‘123,3935';

cc3174232672d00e77736df83290419b.png

b880dabebdbd3d869dc19a65477b2383.png

至此表死锁解除,现在存在的是数据表正常的锁定,等事务提交后自然消失.

oracle rac 死锁检测机制rac环境下,死锁的检查是通过LMD进程来完成的,该进行默认情况下是60s 工作一次,也就是说死锁的检查至少需要1分钟甚至更长的时间,跟系统负载有关。

另外就是rac环境下,死锁的检测要在所有节点之间来回的通信,所以相对单机环境下,就要慢很多。其中隐含参数_lm_dd_interval 控制LMD工作的频率(一般情况下,不要调整该参数)

如何避免死锁?对应oracle内部死锁,oracle自己会进行处理,但是由于应用方面导致的死锁或人为导致的死锁,那么需要进行人工干预。

Oracle死锁产生的四个必要条件如下:

1)资源不能被共享,只能由一个进程使用。

2)已经得到资源的进程可以再次申请新的资源。

3)已经分配的资源不能从相应的进程中被强制地剥夺。

4)系统中若干进程组成环状,环状中每个进程都在等待相邻进程正占用的资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 分布式数据库查询,分布式数据库 · Thinkphp5.0完全开发手册 · 看云

# 分布式数据库ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。配置database.deploy 为1 可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下&#xff1…

matlab 电力系统动态仿真,基于Matlab的电力系统动态仿真分析

本文通过两个简单实例介绍了利用 !"#$"% &’(! )*, -./对电力系统进行仿真研究的方法! 包括"热工自动调节控制系统的仿真分析和电力电器系统的仿真分析# 0 热工调节控制系统仿真分析 对热工调节控制系统的性能分析包括静态特性和动态特性两个方面# 这里主要…

oracle read by other session,AWR报告中,read by other session ,如何解决?

你看你的top sql里全是动态采样的sql,默认10g以后optimizer_dynamic_sampling参数为level 2,一般为缺失统计信息会造成每次使用动态采样,虽然动态采样会在表频繁发生大批量改变时,一般可以生成更好的执行计划,但是也不…

oracle insert into as select,比较create table as select * 与 insert into table select *

实验环境:SYSaaron> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE …

unix 安装oracle,linux上安装Oracle

当前位置:我的异常网 Linux/Unix linux上安装Oraclelinux上安装Oraclewww.myexceptions.net 网友分享于:2013-09-03 浏览:26次linux下安装Oracle1.Linux下安装 jdk(Linux)建议从sun的主页上下载bin文件,运行后在/usr/会建立好java目录的Linux下相关命…

linux ftp用户指定多个目录,linux ftp服务器下用户限制目录的方法

我们使用服务器都要站在安全方面进行考虑,有必要将ftp服务下的用户限制在适当的范围内,那么linux ftp服务器下用户限制目录的方法有哪些呢?一起跟着爱站技术频道小编的步伐来了解一下吧!linux ftp服务器下用户只能在自己目录下的方法:第一步…

查找空目录Linux,Linux中find批量删除空文件及空文件夹脚本

find . -name "*" -type f -size 0c | xargs -n 1 rm -f #linux下批量删除空文件(大小等于0的文件)删除指定大小的文件,只要修改对应的 -size 参数就行:find . -name "*" -type f -size 1024c | xargs -n 1 rm -f #删除1k大小的文件…

linux关闭timewait端口,linux 如何强制关闭 time_wait 连接

匿名用户1级2016-04-16 回答# netstat -an|awk /tcp/ {print $6}|sort|uniq -c68 CLOSE_WAIT2 CLOSING136 ESTABLISHED38 FIN_WAIT116 FIN_WAIT22 LAST_ACK8 LISTEN71 SYN_RECV2936 TIME_WAIT#状态:描述CLOSED:无连接是活动的或正在进行LISTEN&#xff1…

memset头文件 linux,error: ‘memset’ was not declared in this scope

http://blog.sina.com.cn/s/blog_79d599dc0100r2vz.html昨天一同事把代码准备重新全新布置到新的环境上去的时候,代码报错了,先开始报错如下:error: ‘memset’ was not declared in this scopeerror: ‘strcat’ was not declared in this s…

linux中ls文件内存大小,Linux下用ls和du命令查看文件以及文件夹大小

webdriver零碎知识点#零碎知识点,用于记录平时遇到的比较杂的知识点 driver.current_url 获取当前url phantomjs 实现无浏览器界面自动化测试(driver webdriver.Phanto ...ORACLE删除当前用户下所有的表的方法1.如果有删除用户的权限,则可以: drop user user_name cascade; 加…

linux物理内存地址与iomem,一种Linux系统物理内存镜像文件分析方法_4

模块信息,如图7所示,给出了本发明的实施例中 模块结构关系图,modules变量指向某一个已加载模块结构体module地址,所有已加载模 块其module形成一个双向链表,如图7所示,据此可以获取到所有已加载模块。[0099…

linux设备分层优点,Linux设备驱动的分层设计思想

代码清单8第2行获取platform_data,而platform_data实际上是定义GPIO按键硬件信息的数组,第31行的for循环工具这些信息申请GPIO并初始化中断,对于LDD6140电路板而言,这些信息如代码清单10。代码清单10 LDD6410开发板GPIO按键的plat…

linux 关闭桌面环境,Ubuntu 14.04上的Cinnamon桌面环境PPA被关闭

今天Cinnamon桌面环境的开发者宣布关闭Cinnamon桌面环境的PPA,这意味着以后在Ubuntu上安装Cinnamon桌面环境将变得很难。关于为什么要关闭PPA,Cinnamon PPA的维护者Gwendal Le Bihan做出了以下解释:“稳定的Cinnamon PPA将不再提供&#xff0…

linux sd卡读写出错,linux系统SD卡读写问题

请教有过linux系统SD卡读写经验的前辈。我的项目是对FPGA上的SD卡部分做测试,在测试过程中发现在对SD卡所有领域进行读写操作时1、bus width 选择1-bit的速度4-bit是差不多的,这与我预想的不同,想知道问题出在哪里?(理论上4bit 速度应该是1-…

genymotion linux 32,Ubuntu Linux 32bit - 不是Genymotion虚拟设备

因为4天我没有找到解决方案我的genymotion有问题 我正在使用Ubuntu 12.04 32位(architecure:i686)并安装android studio并将genymotion的插件放入其中succefully ......现在我的问题,当点击genymotion设备管理器,列表是空的,当我试…

grub linux rootfs,rootfs文件系统(笔记)(草稿)

文件系统简介文件系统就是个软件,帮用户来管理一些二进制的信息,管理外存上存储的这些二进制各种文件在内存中都是以二进制的形式来存在的,如果没有文件系统,用户就需要自己去决定这些二进制的东西是什么,需要自己去和…

linux 如何查看属性,linux 下查看系统属性

linux 下查看系统属性(2009-06-28 19:01:34)标签:linux杂谈分类:OSlinux下查看系统属性1、查看cpu信息查看所有cpu信息:cat /proc/cpuinfo查看cpu类型: grep "model name" /proc/cpuinfo2、查看内存信息:查看…

幼儿学数数的c语言程序,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼编写程序,登录幼儿园200个小朋友的数据:姓名、性别、年龄、身高、体重、出生日期,分别按年龄排序后输出。要求:(1)登录数据用函数input()(2)按身高排序用函数sort()(3)输出排序结果用…

c语言传入参数不正确,请高手看看一下程序怎么回事啊?老是提示传参数错误...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#includevoid main(){ void average(float, int);void search(float,int);static float score[][4]{{65,67,70,60},{80,87,90,81},{99,90,100,98}};average(score,12);search(score,2);}void average(float *p,int n){float *p_end…

vs用c语言写贪吃蛇,熬书几个月,终于编出简易的贪吃蛇了,VS2013

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#include#define X 30#define Y 15void guozi(int *x, int *y);int main(void){char map[X][Y];int x;int y;//横纵坐标int i;int j;//标记蛇头int p, q;//标记蛇尾int t, d;//寻找蛇尾int n 4;//蛇的长度…