1.开一个会话session1SQL>select sid from v$mystat where rownum=1;SID158SQL>create table t(x int primary key);table createdSQL>insert into t values(1);commit;SQL>update t1 set t=10 where x=1;2.再开一个会话SQL>select sid from v$mystat where rowunm=1;SID157SQL>update t1 se x=10 where x=1;这个时候session2被session1锁住3、执行以下语句查看是哪个进程和序列锁住了表select sess.sid, sess.serial#, ...
我遇到的情况:当使用select语句查询表时,后面跟着for update ,select * from table for update当修改表中数据,但是没有commit就关掉PL/SQL,下次再打开,执行带for update的sql语句,就会卡死 一、锁表查看锁表进程SQL语句: select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID; 如果有记录,可查到如下锁表记录 二、解锁杀掉锁表进程: 记录下SID和serial# ,分别替换掉下面的1155,39095,即可...
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
---------- ---------- -...
今天要删除一个失效的物化视图的时候;老是删除不掉;经理说是锁表了;然后百度了一下
下面是 查询 锁表 和 如何解锁
--查询现在的锁SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username, l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time FROM v$locked_object l, all_objects o, v$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid ORDER BY sid, s....
lock table 表名 in <share or share update or exclusive mode>共有三种锁表模式:
共享模式(in share mode)
共享更新模式(in share update mode)
排他锁模式(in exclusive mode)锁表实例:
//以排他锁模式锁定tRun表
lock table tRun in exclusive mode
2,查看某个表被锁定查看被锁定的表:
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b
where b.objec...
1、在操作DML(create,insert,update)语句时,oracle会自动加上行级锁,在select * from table for update 【of column】【nowait|wait 3】时,oracle也会自动加锁
建议(1)一般在for update 时加nowait,这样就不用等待其他事务执行了,一判断有事务,立马抛出错误。
建议(2)一般的of column都是在多表操作的时候,能锁定其中一个表的某些列,如果还是同一张表的话,并不能锁定某些列
2、表级锁
表级锁包含了行级锁...
如果对 Oracle 数据表中的数据进行 增删改 操作时卡住无响应,很可能是表已被锁定。使用下面的命令可以解决锁定问题。
锁表状态查询。 直接复制粘贴就可以。
--锁表查询SQL
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
解锁,需要填入上一步中查处的 SID 和 SERIAL
--释放SESSION SQL:
--alter sys...
步骤1:用以下SQL查看进程列表,判断出被锁定的表SELECT dob.OBJECT_NAME Table_Name,lo.SESSION_ID||‘, ‘||vss.SERIAL# 删除号,lo.locked_mode,lo.SESSION_ID, vss.SERIAL#,vss.action Action,vss.osuser OSUSER, vss.LOGON_TIME,vss.process AP_PID, VPS.SPID DB_PID ,vss.*From v$locked_object lo, dba_objects dob, v$session vss, V$PROCESS VPSWhere lo.OBJECT_ID = dob.OBJECT_IDand lo.SESSION_ID = vss.SIDAND VSS.pad...
---查询 被锁的表 SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid;
--alter system kill session ‘sid, serial#‘; ALTER system kill session ‘85, 289‘; oracle 锁表 如何解锁标签:本文系统来源:http://www.cnblogs.com/li-xy/p/5674373.html
SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,
l.os_user_name,s.machine, s.terminal,a.sql_text, a.action
FROM v$sqlarea a,v$session s, v$locked_object l
WHERE l.session_id = s.sid
AND s.prev_sql_addr = a.address
ORDER BY sid, s.serial#;
--3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
SELECT s.sid, s.serial#, s.username, s.schemaname,...
2、SELECT sid, serial#, username, osuser FROM v$session where sid = 162; 将162换成你查出来的session_id
3、kill掉session
ALTER SYSTEM KILL SESSION ‘162,4294‘; 4294为第二步查出来的serial#;
转自 http://www.cnblogs.com/yuxiaona/p/5862021.html解决ora-00054 Oracle锁表问题标签:本文系统来源:http://www.cnblogs.com/cmyxn/p/5906793.html
* from table for update当修改表中数据,但是没有commit就关掉PL/SQL,下次再打开执行上面sql语句,就会卡死,不能再for update
一、锁表
查看锁表进程SQL语句: select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;
如果有记录,可查到如下锁表记录
二、解锁
杀掉锁表进程: 记录下SID和serial# ,分别替换掉下面的1155,39095,即可解除锁表alter system kill session ‘1155,39095‘;
Or...
(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)杀...
--以下几个为相关表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 * FROM v$session_wait;
--查看被锁的表 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;
--查看那个用户那个进程照成死锁select b.username,b.sid,b.seria...
1.用下列sql语句查询操作不当引起锁表的进程的SESSION_ID及USERNAME
SELECT S.SID SESSION_ID, S.USERNAME, DECODE(LMODE, 0, ‘None’, 1, ‘Null’, 2, ‘Row-S (SS)’, 3, ‘Row-X (SX)’, 4, ‘Share’, 5, ‘S/Row-X (SSX)’, 6, ‘Exclusive’, TO_CHAR(LMODE)) MODE_HELD, DECODE(REQUEST, 0, ‘None’, 1, ‘Null’, 2, ‘Row-S (SS)’, 3, ‘Row-X (SX)’, 4, ‘Share’, 5, ‘S/Row-X (SSX)’, 6, ‘Exclusive’, TO_CHA...