问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle表被锁了怎么办

发布网友 发布时间:2022-04-07 15:16

我来回答

2个回答

懂视网 时间:2022-04-07 19:38

    
SQL>

 

2. 查看数据库是否有锁

SQL> select * from v$lock where block=1;

 

3. 查询lock锁, 看谁锁谁

说明:BLOCK为1的行,表示资源由它锁定。REQUEST表示需要这个锁。

SQL> SELECT sid, id1, id2, lmode, block,request, type    
FROM V$LOCK    
WHERE id1 IN (SELECT id1 FROM V$LOCK WHERE lmode = 0)    
ORDER BY id1, request;

       SID        ID1        ID2      LMODE      BLOCK    REQUEST TY   
---------- ---------- ---------- ---------- ---------- ---------- --    
       153     655397        308          6          1          0 TX    
       157     655397        308          0          0          6 TX

 

4. 查询锁表的SID,Serial#,用户、开始时间,然后就可以杀掉该进程了。

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

       SID    SERIAL# USERNAME                       LOGON_TIME   
---------- ---------- ------------------------------ -------------------    
       153         12 ABC                            2014-11-17 09:19:33    
       157        106 ABC                            2014-11-17 09:54:24

 

5. 可以进一步查询出SID,SPID等信息

SQL> select s.username, s.osuser, s.sid, s.serial#, p.spid, s.program,s.STATUS  
from v$session s,v$process p  
where s.paddr = p.addr and s.username is not null; 

USERNAME                       OSUSER                                SID    SERIAL# SPID         PROGRAM                                          STATUS   
------------------------------ ------------------------------ ---------- ---------- ------------ ------------------------------------------------ --------    
ABC                            oracle                                153         12 4290         sqlplus@oradb (TNS V1-V3)                        INACTIVE    
SYS                            oracle                                150         12 4417         sqlplus@oradb (TNS V1-V3)                        ACTIVE    
ABC                            oracle                                157        119 4830         sqlplus@oradb (TNS V1-V3)                        ACTIVE

要么在oracle进行杀掉,以及在操作系统下杀掉,对于status为killed的语句,应用通过操作系统kill命令才能最终最快杀掉。

alter system kill session  ‘153,12‘;   
alter system kill session  ‘157,119‘;

或操作系统中

kill -9 4290   
kill -9 4830

 

6.  查询被锁的表的SID及相关资源

说明:出被锁的表及SQL,还是要结合上面的查询进行手工处理, 也可以通过SID找到SQL语句。

set pagesize 999;   
set linesize 200;    
col PROGRAM for a25;    
col TERMINAL for a10;

SQL> select s.status,s.sid,s.serial#,p.spid,  
       s.last_call_et as exec_seconds,t.sql_text as curr_sql  
from gv$session s,v$process p,v$instance i,v$lock k, v$sqltext t  
where s.paddr = p.addr  
and s.type != ‘BACKGROUND‘  
and s.lockwait = k.kaddr  
and s.sql_hash_value = t.hash_value  
and s.username is not null;  
STATUS          SID    SERIAL# SPID         EXEC_SECONDS CURR_SQL    
-------- ---------- ---------- ------------ ------------ ----------------------------------------------------------------    
ACTIVE          159         28 4072                 1285 update test_lock set name=‘aa4‘ where id = 1

SQL>

Oracle锁表故障处理一例

标签:oracle锁表

热心网友 时间:2022-04-07 16:46

自己百度吧
网上一堆博客 有解决方法
首先你要知道表锁住了是不是正常锁?因为任何DML语句都会对表加锁。

你要先查一下是那个会话那个sql锁住了表,有可能这是正常业务需求,不建议随便KILL session,如果这个锁表是正常业务你把session kill掉了会影响业务的。
建议先查原因再做决定。

(1)锁表查询的代码有以下的形式:
select count(*) from v$locked_object;
select * from v$locked_object;
(2)查看哪个表被锁
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;
(3)查看是哪个session引起的
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;

(4)查看是哪个sql引起的
select b.username,b.sid,b.serial#,c.* from v$locked_object a,v$session b,v$sql c where a.session_id = b.sid
and b.SQL_ID = c.sql_id and c.sql_id = ''
order by b.logon_time;

(5)杀掉对应进程
执行命令:alter system kill session'1025,41';
其中1025为sid,41为serial#.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 深圳数据可视化(或者数据分析)的培训要花多少钱?一般是要多长时间?是辞... mp3可以放电影吗? 有关mp4的详细内容 7950GT 512M 256位 24管与7800GS 512M/256位AGP 24管那个性能好 股票开户哪家网站不错啊?真好的给推荐下 我的电脑该换什么样的主板 STOP:0X0000007B(0XF7A2B528,0XC0000034,0X00000000,0X00000000 什么格式是MP4 格式???SMV是什么格式 怎么把视频转化为SMV 现在办股票开户有哪些优惠福利 电脑主板短路怎么办? mp4适合什么的电影格式? 我家现在这块主板上到底能插几条内存条,单条最高几G是只支持DDR2 667HZ 还是也可以支持别的型号内存条 请问MP4是什么格式电影??? 买香港股票开户需要什么资料 什么是:MP4 映泰nf50s a2b可以上AMD X215的CPU么? 万达密室逃脱《通天古墓》第二关被困,如何通关? 苹果手机游戏密室逃脱比赛系列1史上最难的密室第二关怎么破 密室逃脱之时空穿越第二关怎么过 第2关攻略 棱镜密室逃脱侦探社第二关密码,求解 求个魔兽世界键位修改插件 我要和朋友共享一个账号,俩人键位老改来改去烦人 魔兽世界 鼠标指针特效Cursor 占内存吗 青菜怎么烫好吃 烫青菜怎么做好吃窍门 饭店蒜蓉青菜的做法 三星note3 用什么软件可以root。 三星note3 n9002 升级5.0后怎么root 三星note3怎么才能开启root权限? 手机可以连接传真机发传真吗 页眉Word上面那条黑色横线如何去掉?不是页眉中的横线 手机可以收传真吗? 龙骨要怎么养? word页脚黑色的的横线怎么去掉, 龙骨花咋移植有视频吗? ¥后面暗色的横线用 word怎么打出来 求助求助 别人都是怎么实现手机接收传真的? 手机与传真机连接是否可以做到收发传真? word2010绘画出的单横线怎么变黑色 智能手机能不能直接收发传真? word文档多一条横线