首页 > 数据库 >Oracle 数据库锁表问题及相关解决方法

Oracle 数据库锁表问题及相关解决方法

时间:2022-12-09 17:12:36浏览次数:40  
标签:锁表 数据库 object session 报错 Oracle id

Oracle 数据库锁表问题及相关解决方法

问题描述:

  • 今天在公司运行服务的时候,需要查询300多万的数据,再进行排序之后放到kafka的消息队列中,供flink进行消费。在服务器上直接运行后,服务报错,显示内存超出java的堆栈内存。导致服务停止。在反过来进行数据库表的插入时,数据库表操作的进度条直接和卡死了一样,直接不动。(此时意识到会不会有事务在报错的时候未提交之类的问题,并没有意识到数据库的锁表)。

  • 在操作了好几次还是不行后,一气之下准备删表重建,咦??
    drop table 之后数据库报错了:

ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效

好家伙!心中默念(什么傻逼玩意儿,删都删不掉...)---我还没意识到锁表了

在经过百度之后,才发现是锁表了。回到刚才的问题描述,是对表的操作短时间内太过快速和频繁而导致的数据库锁表。即由于其他Session已经对目标表做了操作,并且已经有排他锁在表上了,所以新的Session无法再对表进行DDL操作。

解决方法

  1. 找出是哪个会话锁住了哪张表

    select l.session_id,o.owner,o.object_name from v$locked_object l,dba_objects o where l.object_id=o.object_id;
  • session_id 为会话 ID。
  • object_name 表名。
  1. 找出引发锁的会话

    select s.username,s.sid,s.serial#,s.logon_time from v$locked_object l,v$session s where l.session_id=s.sid order by s.logon_time;

    其中的 serial# 是我们需要用到的会话序列号。

  2. 杀掉会话

    命令格式为:alter system kill session 'sid,serial#'
    比如:
    alter system kill session '115,7355';

在执行完成后,会发现数据库表的锁已经解除,可以正常进行相关的增删改查操作了

标签:锁表,数据库,object,session,报错,Oracle,id
From: https://www.cnblogs.com/JerryLau-213/p/16969351.html

相关文章

  • mysql数据库为什么不建议select * from操作
    为什么select*from不是好的选择?在这里只是针对innodb数据库引擎来说明。我每次看到select*fromtableName时,我都觉得有没有必要?取出全部的列会让优化器无法完成索引覆盖......
  • Oracle的LAST_DAY函数
    原文地址:https://blog.csdn.net/WuLex/article/details/80855523Oracle中last_day()函数的用法last_day(time):返回指定日期所在月份的最后一天;查询当前月份的最后一天:......
  • 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别
    要讲清楚范式,就先讲讲几个名词的含义吧:部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。举个例子:学生基本信息表R中(学号,......
  • 创建数据库表、数据表的类型
    创建数据库表、数据表的类型创建数据库表--目标:创建一个school数据库--创建学生表(列,字段)使用SQL创建--学号int,登陆密码varchar(20),姓名,性别varchar(2),出生日......
  • 最小支持度、最小置信度、全国三级数据库考试
    首先解释一下什么是置信度、什么是支持度置信度=在事务中已经包含X的情况下包含Y的百分比;支持度=事务中同时包含X、Y的百分比;下面看一个三级数据库题库的真题吧1)以下是某商......
  • 数据库对比shell脚本
    这是一个通过nacos获取数据库配置然后自动对比数据库和topic区别的工具,头和尾去掉也就是“*********************”前后去掉中间部分是单独的数据库对比脚本,用的时候要注意......
  • Maven - oracle ojdbc jar包报错:Could not find artifact com.oracle:ojdbc8
    oracleojdbcjar包报错:Couldnotfindartifactcom.oracle:ojdbc8 在IDEA中引入一个新项目时,由于项目中引入了如下依赖:<dependency><groupId>c......
  • oracle每日挑战-第二天
    当发出altertabletabaddprimarykey(object_id)usingindexind_tab_object_id;命令,在tab_p表的object_id列上创建主键约束,并指定使用此前已事先创建好的,名为ind_ta......
  • oracle - 数据库版本说明
    1998年Oracle8i:i指internet,表示oracle向互联网发展,8i之前数据库只能对应1个实例2001年Oracle9i:8i的升级,性能更佳,管理更人性化2003年Oracle10g:g指grid,表示采用网格计算的......
  • springboot集成kettle实现对接oracle数据
    简单记录一下springboot引用kettle对接数据第一步(这一步讲述了下载kettle、创建数据库连接、转换等,如果这一步会的可以略过,直接看第二步)先从kettle官网下载kettle,官网地......