你先查一下你的数据表示不是锁表了。
select sesssid,
sessserial#,
looracle_username,
loos_user_name,
aoobject_name,
lolocked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where aoobject_id = loobject_id and losession_id = sesssid
通过以上sql就可以知道哪个进程、序列,oracle用户名、 *** 作系统用户名、表名、锁表模式几个字段
下面一步就是将改锁表的进程和序列杀掉了,执行下面的语句即可。
alter system kill session '1020,38953' --(1020,就是执行第一步语句得到的sid字段值,38953就是serial#字段值)
详细的请参照:网页链接
1、找到并进入运行窗口:(可以用windows+r快捷键哦)输入sqlplus命令:如图
2、进入新窗口后使用scott/tiger用户和密码进行登录会发现登录不成功:如图
3、这时我们可以使用system用户进行登录,应为此用户的权限排第二,并且密码我们已经在安装时输入了了,所以是可以登录进入的:如图
4、system登录成功之后就可以使用命令给用户进行解锁了:如图
5、最后再用scott/tiger用户时,你可以神奇的发现此时能连接成功了:如图
用下面的语句检查数据库锁,然后kill 掉产生锁的进程就ok了。
查锁:
select nvl(SUSERNAME,'Internal') username,
nvl(STERMINAL,'None') terminal,
LSID||','||SSERIAL# Kill,
U1NAME||''||substr(T1NAME,1,20) tab,
decode(LLMODE,1,'No Lock',
2,'Row Share',
3,'Row Exclusive',
4,'Share',
5,'Share Row Exclusive',
6,'Exclusive',null) lmode,
decode(LREQUEST,1,'No Lock',
2,'Row Share',
3,'Row Exclusive',
4,'Share',
5,'Share Row Exclusive',
6,'Exclusive',null) request
from V$LOCK L,
V$SESSION S,
SYSUSER$ U1,
SYSOBJ$ T1
where LSID = SSID
and T1OBJ# = decode(LID2,0,LID1,LID2)
and U1USER# = T1OWNER#
and STYPE != 'BACKGROUND'
order by 1,2,5
杀锁:
alter system kill session 'sid,#serial';
sid和#serial用前面查询到的结果替换。
以上就是关于sql数据库如何解锁呢全部的内容,包括:sql数据库如何解锁呢、怎样给oracle数据库的用户解锁、数据库中某条数据被锁了。如何解锁等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)