在新项目中,有个新同事写的service,其中要对数据库进行update或者insert的操作时,他并 没有对该方法添加@Transactional(readOnly = false)
,此时插入数据保存的时候,就会出现表被锁住,因此需要解锁,其中还需要对表进行update或者insert的方法进行事务注解的添加。
当数据库表被锁住的时候,应该按照如下的步骤操作,来解锁表:
--1、查看数据库锁,诊断锁的来源及类型:SELECT OBJECT_ID, SESSION_ID, LOCKED_MODE FROM V$LOCKED_OBJECT;--2、找出数据库的serial#,以备杀死:SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIMEFROM V$LOCKED_OBJECT T1, V$SESSION T2WHERE T1.SESSION_ID = T2.SIDORDER BY T2.LOGON_TIME;
--3、杀死该session alter system kill session 'sid,serial#' ps: sid ,serial# --为步骤2中查出来的值