oracle遇到的锁异常,oralce record is locked by another user

由于我在前不久的一次项目调试的时候,将一条数据的ID与另一条数据的ID相同了,但不知为什么没有报错,当在页面发现问题时,删除这条数据时就报错了,oralce record is locked by another user

将锁图标打开也不行,于是找了网上很多解决方式,但说得都不尽详细,最后自己根据其他人的写法,最终将错误数据成功删除

select session_id from v$locked_object;
SELECT sid, serial#, username, osuser FROM v$session where sid = 131;
ALTER SYSTEM KILL SESSION ‘131,498‘;

这是我当时的SQL代码

实际根据

select session_id from v$locked_object;
SELECT sid, serial#, username, osuser FROM v$session where sid = session_id;
ALTER SYSTEM KILL SESSION ‘sid,serial#‘;

在从另一个数据库导入表时,有时候两张表的数据字段并不一致相等,需要有其他的做法,我的做法是

insert into DM.DM_MAT_AUX_PLAN_REC(select SYS_GUID(),I_YEAR,I_MONTH,PLANTCODE,‘‘,DEPARTCODE,‘‘,MAT_NO,MAT_DESC,UNIT,F_PRICE,F_NUMBER,INSERTDATE,RECFLAG from NAMM.mm_plan_fc_rec);
select distinct COM_CODE_,COM_NAME_ from DM.DM_MAT_AUX_PLAN_REC
update DM.DM_MAT_AUX_PLAN_REC set COM_NAME_ = (select ORG_NAME_ from OM.om_org where ORG_CODE_ = ‘6‘) where COM_CODE_ = ‘6‘
select distinct DEPT_CODE_,DEPT_NAME_ from DM.DM_MAT_AUX_PLAN_REC
update DM.DM_MAT_AUX_PLAN_REC set DEPT_NAME_ = (select ORG_NAME_ from OM.om_org where ORG_CODE_ = ‘605‘) where DEPT_CODE_ = ‘605‘

对于空缺的再去重逐个导入

时间: 2024-10-17 14:46:22

oracle遇到的锁异常,oralce record is locked by another user的相关文章

Record is locked by another user --Oracle行锁解锁

Oracle修改表中记录时出现record is locked by another user的问题 在操作表时没有commit,导致表被锁,只要执行下面两行语句,就可以了将行锁解锁了. Select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid; -- 查看被锁表的sid 和 serial# 2.  alter system

Oracle知识分类之异常

Oracle异常分类                                                                                                                        Oracle预定义异常(即已定义的内部异常) Oracle非预定义异常(即未定义的内部异常) 用户自定义异常 常见的预定义异常                                                         

oracle事务和锁

数据库事务概括 1. 说明 一组SQL,一个逻辑工作单位,执行时整体修改或者整体回退. 2.事务相关概念 1)事务的提交和回滚:COMMIT/ROLLBACK 2)事务的开始和结束 开始事务:连接到数据库,执行DML.DCL.DDL语句 结束事务: 1. 执行DDL(例如CREATE TABLE),DCL(例如GRANT),系统自动执行COMMIT语句 2. 执行COMMIT/ROLLBACK 3. 退出/断开数据库的连接自动执行COMMIT语句 4. 进程意外终止,事务自动rollback 5

Oracle查询被锁的表及进程的方法

Oracle查询可以有多种方法,下面为您介绍的是如何Oracle查询被锁的表及Oracle查询连接的进程的方法,希望对您能够有所帮助. 一.查看被锁的表 select p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a, v$locked_object b,all_objects c where p.addr=a.paddr and a

Oracle:record is locked by another user

折腾好久不行,问题关键是找不到到底是哪个进程造成了锁死,v$locked_object这个视图又没有权限. 最终解决方法如下: PL/SQL Developer 中 Tools->Sessions打开session窗口,在窗口的下半部分有一个locks的tab页,切换到该页,挨个点击上面session的列表,如果点了某个session后,locks里面出现了记录,那么这条就是导致锁死的session. 使用命令 alter system kill session 'sid,serial#' ;

Oracle数据库悲观锁与乐观锁详解

数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁.什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住.而乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让用户返回错误的信息,让用户决定如何去做. 先从悲观锁开始说.在SqlServer等其余很多数据库中,数据的锁定通常采用页级锁的方式,也就是说对一张表内的数据是一种串行化的更新插

Oracle用户被锁原因及办法

Oracle用户被锁原因及办法   在登陆时被告知test用户被锁 1.用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间 SQL> alter session set nls_date_format=’yyyy-mm-dd hh24:mi:ss’; Session altered. 2.查看具体的被锁时间 SQL> select username,lock_date from dba_users where username=’TEST’; USERNAME LOCK_D

oracle 死锁和锁等待的区别

所谓的锁等待:就是一个事务a对一个数据表进行ddl或是dml操作时,系统就会对该表加上表级的排它锁,此时其他的事务对该表进行操作的时候会等待a提交或是回滚后,才可以继续b的操作 所谓的死锁:当两个或多个用户相互等待锁定的数据时就会发生死锁,这时这些用户被卡在不能继续处理业务,oracle可以自动检测死锁并解决他们,通过回滚一个死锁中的语句,释放锁定的数据,回滚的话会遇到ora-00060 deadlock detected while waiting for resource 模拟锁等待: 两个

oracle查看被锁的表和被锁的进程,杀掉进程

-- 1. 查看被锁的表 SELECT p.spid, a.serial#, c.object_name, b.session_id, b.oracle_username,b.os_user_name FROM v$process p, v$session a, v$locked_object b, all_objects c WHERE p.addr = a.paddr AND a.process = b.process AND c.object_id = b.object_id -- 2.