Oracle 、MySql 数据库表被锁的原因分析
记录一次准备给客户预演示出现的问题
事故的背景:
当所以功能开发完成后,开发人员在本地进行了测视已经没问题了。就把所有开发的功能模块合并到
dev
分支,进行打包,发布到预演示的线上环境。当在给相关人员进行演示的时候,出现了问题。我们使用
https
调用对方的接口发送Json
数据,对方进行校验马上返回校验的响应结果。问题出现在我们每次发送数据都是成功的,但是对方发送回来的数据,一直不能正常插入DB(使用的是 Oracle)
。事故的真正原因:
因为有个同事在进行了
delete
后没有进行commit
提交。导致表一直被锁住,不能被其他人使用。但是杀死进程和本地
commit
几次后,依旧无法插入数据,提示还是DB
被这个同事锁住。最后查出的真正原因是,这个同事首先使用了
无线网络
进行了DB
的操作,当时并没有commit
提交操作。而后又插上网线继续工作,问题就出现在这里。首先,当我们使用无线网络操作
DB
时,Oracle
会默认这是一次会话(session)
,当开发人员对DB
进行操作后(没有commit
),又切换到了有线网络状态下,而这 2 种状态下的本机IP
是不一样的(有兴趣的朋友可以试试使用无线和有线连接状态下,同一台电脑的IP
地址是否一样)。
Oracle
会认为第一次session
没有关闭,会将表锁住,等待这次session
会话的提交直到结束。所以当同事再连接上网线,使用有线网络进行
commit
时候会提示操作失败。因为Oracle
数据库认为这又是一次新的session
会话。而第一次的session
会话并没有结束,就会导致出现了DB
一直被锁的情况。事故的解决办法:
首先使用语句查询
(只有 Admin 用户才可以)
出被锁住的表和锁表的开发人员的工号。然后杀死这个进程或者进行
DB
重启即可。
Oracle 、MySql 数据库表被锁的原因分析的更多相关文章
- 将Hive统计分析结果导入到MySQL数据库表中(一)——Sqoop导入方式
https://blog.csdn.net/niityzu/article/details/45190787 交通流的数据分析,需求是对于海量的城市交通数据,需要使用MapReduce清洗后导入到HB ...
- mysql数据库表的基本操作sql语句总结
1,命令行登录命令 mysql -h localhost -u root -p C:\Users\lenovo>mysql -u root -p Enter password: ***** We ...
- Mysql的表级锁
我们首先需要知道的一个大前提是:mysql的锁是由具体的存储引擎实现的.所以像Mysql的默认引擎MyISAM和第三方插件引擎 InnoDB的锁实现机制是有区别的.可根据不同的场景选用不同的锁定机制. ...
- mysql数据库表的自增主键号不规律,重新排列
mysql数据库表的自增主键ID乱了,需要重新排序. 原理:删除原有的自增ID,重新建立新的自增ID. 1.删除原有主键: ALTER TABLE `table_name` DROP `id`; 2. ...
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...
- 用户中心mysql数据库表结构的脚本
/* Navicat MySQL Data Transfer Source Server : rm-m5e3xn7k26i026e75o.mysql.rds.aliyuncs.com Source S ...
- mysql数据库表结构导出
mysql数据库表结构导出 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据 mysqldump -h localh ...
- 关于mysql数据库行级锁的使用(一)
项目上一个业务需要对某条数据库记录加锁,使用的是mysql数据库 因此做了一个关于mysql数据库行级锁的例子做测试 package com.robert.RedisTest; import java ...
- Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题
Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字 ...
随机推荐
- VS2013+Opencv3.3配置教程
转载自: https://blog.csdn.net/u014797226/article/details/78283873?locationNum=5&fps=1 参考博文1: 操作环境: ...
- 【Muduo库】【base】基本类
一.Timestamp类 1.类图如下: 2. 知识点 (1) 这个类继承了 muduo::copyable, 以及 boost::less_than_comparable. (2) ...
- 【LeetCode】贪心
[452] Minimum Number of Arrows to Burst Balloons [Medium] 给一堆线段,使用最少的arrow,穿过所有的线段.陈题,第一条线段的终点. Inpu ...
- 非关系型数据库MongoDB入门
本文分为以下四块简单介绍非关系型数据库MongoDB:1.MongoDB简介.2.MongoDB和关系数据库对比.3.MongoDB基本概念.4.mongo shell的使用以及对MongoDB的增删 ...
- leetcode-163周赛-1260-二维网格迁移
题目描述: 自己的提交: class Solution: def shiftGrid(self, grid: List[List[int]], k: int) -> List[List[int] ...
- Vue学习笔记【19】——Vue中的动画(使用第三方 CSS 动画库)
导入动画类库: <link rel="stylesheet" type="text/css" href="./lib/animate.css& ...
- Vue学习笔记【1】——什么是Vue.js
什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于We ...
- curl查看index以及settings
1.查看mapping curl -u elastic:elastic -XGET "127.0.0.1:9200/index_name/_mapping" 2.查看setting ...
- 关于类中的参数类型和return返回值
基础有些忘了,现在重新巩固一下 先定义一个Person类 class Person(): def __init__(self,name,age,height): self.name=name, sel ...
- 剑指offer第二版面试题8:用两个栈实现队列(JAVA版)
题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能. 分析: 我们通过一个具体的例子来分析 ...