oracle表锁

2024-06-08 1405阅读

--oracle提醒记录被另一个用户锁住:

oracle表锁
(图片来源网络,侵删)

--问题描述:你去修改数据时,报错“

--问题分析:你用select t.*,t.rowid from qxt_logsend_0728修改数据结果集时,计oracle会通过事务锁锁住这个记录,点击记录改变,还没提交修改时,由于网络卡死你关闭了pl/ sql,另一个人去修改同一个结果集,会报错"记录被另一个用户锁住"

--处理方法:

--1、查询数据库锁住的的sid和serial#,

select t2.username,t2.sid,t2.serial#,t2.logon_time,event,t2.BLOCKING_SESSION_STATUS

from v$locked_object t1,v$session t2

where t1.session_id=t2.sid order by t2.logon_time 

--2、执行杀死session,,即可

alter system kill session '1059,62485';



select /*+ ORDERED*/

 sql_text

  from v$sqltext a

 where (a.hash_value, a.address) in

       (select DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),

               DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)

          from v$session b

         where b.sid='1059')

         

-- ---------------------------------------------------

--查询进程所执行的sql语句

SELECT sql_text FROM v$sqltext a WHERE a.hash_value = ( SELECT sql_hash_value FROM v$session b, 

v$process c WHERE b.paddr = c.addr AND c.spid = 26568) ORDER BY piece ASC







--存过锁----------------------------------------------

1、查看存过是否锁住,locks不等于零,表示锁住,

SELECT * FROM V$DB_OBJECT_CACHE WHERE name='QXT_JOB' AND LOCKS!='0';--name大写

2、查询存过的sid,

select  SID from V$ACCESS WHERE object='QXT_JOB';

3、查sid和serial#,

SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='1557';

4、杀掉进程,

alter system kill session '1557,14895' immediate;

select  * from V$ACCESS 

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]