Oracle 表锁与解锁】的更多相关文章

第一种方法: 用系统账户如sys      as  SYSDBA 登录进去 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.ob…
1. 查询 Oralce 被锁定的表信息 select object_name,machine,s.sid,s.serial#from v$locked_object l,dba_objects o ,v$session swhere l.object_id = o.object_id and l.session_id=s.sid; 2. 解锁 alter system kill session '24,111'; (其中24,111分别是上面查询出的sid,serial#)…
场景: 在执行insert into或insert overwrite任务时,中途手动将程序停掉,会出现卡死情况(无法提交MapReduce),只能执行查询操作,而drop insert操作均不可操作,无论执行多久,都会保持卡死状态 临时解决办法是……把表名换一个…… 根本原因是:hive表被锁或者某个分区被锁,需要解锁 show locks 表名: 可以查看表被锁的情况 解锁 unlock table 表名;  -- 解锁表unlock table 表名 partition(dt='2014-…
--kill session语句 1 alter system kill SESSION '2171,60490'; --以下几个为相关表 1 2 3 4 5 6 7 SELECT * FROM v$lock; SELECT * FROM v$sqlarea; SELECT * FROM v$session; SELECT * FROM v$process ; SELECT * FROM v$locked_object; SELECT * FROM all_objects; SELECT * F…
背景 在操作Oracle时,多人同时操作oracle数据库的同一张表的时候,经常会造成锁表现象,这时需要手动进行解锁. 步骤 以dba身份登录Oracle数据库(否则用户缺少杀掉进程权限,需要给用户分配权限) sqlplus  /  as sysdba,如下图 查看被锁住的表进程 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_i…
--查询行锁语句 select sql_text from v$sql a,v$session b where a.sql_id=b.sql_id and b.event='enq: TX - row lock contention'; --找到被锁定的表 SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.…
for update模拟锁表 --session 1 SQL> select * from tt for update; --session 2 SQL> update tt set id=1 where id=2; 按用户查询锁的情况 set line 300 col OBJECT_NAME format a30 col event format a30 col type format a10 col object_name format a15 col object_type format…
-- 查看数据库锁明细 select a.sid, b.serial#, b.username, b.osuser, b.machine, b.program, c.object_name,d.spid, decode(a.type, 'mr', 'media recovery', 'rt','redo thread', 'un','user name', 'tx', 'transaction', 'tm', 'dml', 'ul', 'pl/sql user lock', 'dx', 'dis…
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 t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked…
下午代码迁移,更新数据库记录时for update语句无法执行,数据库被锁,KILL掉几个进程搞定. Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?简要介绍一下. 锁表查询的代码有以下的形式: select count(*) from v$locked_object; select * from v$locked_object; 查看哪个表被锁 select b.owner,b.object_name,a.session_id,a.lo…