oracle数据中记录被另一个用户锁住

原因:PL/SQL里面执行语句执行了很久都没有结果,于是中断执行,于是就直接在上面改字段,在点打钩(记入改变)的时候提示,记录被另一个用户锁住。

解决方法:

第一步:(只是用于查看哪些表被锁住,真正有用的是第二、第三步)

select b.owner,b.object_name,l.session_id,l.locked_mode
from v$locked_object l, dba_objects b
where b.object_id=l.object_id

显示如下:

OWNER    OBJECT_NAME      SESSION_ID  LOCKED_MODE

1   BSZCGL TDISPOSE_ACCEPT_F    1115         3
2   BSZCGL TDISPOSE_ACCEPT_F    1097         3
3   BSZCGL TDISPOSE_ACCEPT_Z    1116         3
4   BSZCGL TDISPOSE_ACCEPT_Z    1111         3
5   BSZCGL TDISPOSE_ACCEPT_Z    1103         3
6   BSZCGL TDISPOSE_ACCEPT_Z    1100         3
7   BSZCGL TDISPOSE_ACCEPT_Z    1097         3
8   BSZCGL TDISPOSE_ACCEPT_Z    1092         3
9   BSZCGL TDISPOSE_DAMAGE_Z    1106         3
10  BSZCGL TZC6_22CL            1097         3

可以看出,那些表被锁住

第二步:

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

显示如下:

USERNAME SID  SERIAL#  LOGON_TIME

1 BSZCGL   1115   132   2011-12-6 14:51:35
2 BSZCGL   1097   116   2011-12-6 14:51:57
3 BSZCGL   1097   116   2011-12-6 14:51:57
4 BSZCGL   1097   116   2011-12-6 14:51:57
5 BSZCGL   1111   155   2011-12-6 14:56:29
6 BSZCGL   1103   292   2011-12-6 14:57:34
7 BSZCGL   1116   388   2011-12-6 15:04:56
8 BSZCGL   1100   240   2011-12-6 15:08:13
9 BSZCGL   1106   228   2011-12-6 15:26:20
10 BSZCGL  1092   10    2011-12-6 15:26:46

第三步:(关键)

执行:(alter system kill session ‘sid,serial#‘)具体如下:

alter system kill session ‘1115,132‘

alter system kill session ‘1097,116‘

alter system kill session ‘1111,155‘

alter system kill session ‘1103,292‘

alter system kill session ‘1116,388‘

alter system kill session ‘1100,240‘

alter system kill session ‘1106,228‘

alter system kill session ‘1092,10‘

执行成功,会提示执行完毕!

有可能执行完一条之后,其他的ID也跟着消失,执行完3后,在执行2,检查时候清除完毕 

时间: 2024-08-21 17:10:11

oracle数据中记录被另一个用户锁住的相关文章

oracle中记录被另一个用户锁住的原因与解决办法

oracle数据中删除数据时提示“记录被另一个用户锁住” 解决方法: 1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 或者用以下命令: select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id

Oracle 数据操作提示“记录被另一个用户锁住”

oracle数据中删除数据时提示“记录被另一个用户锁住” 解决方法: 1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 或者用以下命令: select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id

oracle“记录被另一个用户锁住”

1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 或者用以下命令: select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id SELECT lpad(' ',decode(l.xidusn ,0,

Oracle记录被另一个用户锁住

1.查看哪个表被锁 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id 2.查看引起表锁住的Session select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_i

oracle 表被另一个用户锁住后的解决办法

oracle 表被另一个用户锁住后的解决办法 1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 2.找出数据库的serial#,以备杀死: select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by

Oracle 11g中解锁被锁定的用户

Oracle 11g中修改被锁定的用户:scott 在安装完Oracle11g和创建完oracle数据库之后,想用数据库自带的用户scott登录,看看连接是否成功. 在cmd命令中,用“sqlplus  scott/ tiger”登录时, 老是提示如下信息: ERROR:ORA-28000:账户已被锁定. 在cmd命令提示符中可直接登录oracle,输入如下命令: sqlplus / as sysdba; 接着执行如下命令: SQL> alter user scott account unloc

oracle中出现"数据被另一用户锁住"的解决方法

在oracle中执行: select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; alter system kill session 'SID,serial#' 版权声明:本文为博主原创文章,未经博主允许不得转载.

处理Oracle数据中的无效对象

今天还原了一份数据库(在服务器上没有无效对象),还原在本地之后有三十几个无效对象,当时很是郁闷,然后我发现还原之后的数据库中缺少表! 开始我怀疑Oracle数据库的还原功能,但是在我创建表的时候发现,原来是我本地数据库中表空间和服务器上的不一致.然后我在网上找到了解决方案: select username, default_tablespace from dba_users where username='NAXZXXBM';--查找某用户的默认表空间alter tablespace USERS

oracle数据中特殊字符处理

最近数据处理时经常发现有数字中含有大量字符,执行过程报"ORA-01722: invalid number"异常,整理了一下,可以有以下几种方法去除: 1.replace 用法简单,写法较复杂,只能处理已知字符   With test_table1 As ( Select 1 seq_num, '2134?654?ag d35' strings From dual   Union All Select 2 seq_num, '651 354a g5 dd21' strings From