【Oracle锁表故障处理一例】教程文章相关的互联网学习教程文章

Oracle 表锁住,杀掉锁表进程【图】

背景在操作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_id = a.object_id;查找锁表进程的SID和Serial#,因为SID和Serial#...

Oracle锁表查询和解锁方法【图】

Oracle锁表查询和解锁方法qhzhen9 2019-05-22 10:07:07 8822 收藏 7展开我们这里一般用的PL/SQL,总是无意间把表锁住,所以我今天就整理了一下简单的解锁和查询锁表的方法;一、首先PL/SQL要以管理员的账号(system/admin等)登录,管理员的账号和密码根据个人设置而来,连接为一般选择Normal,也可选择SYSDBA; 二、相关SQL语句:--以下几个为相关表SELECT*FROMv$lock;SELECT*FROMv$sqlarea;SELECT*FROMv$session;SELECT*FROMv$pro...

oracle查看被锁的表和被锁的进程以及杀掉这个进程【代码】

-- 1. 查看被锁的表 SELECT p.spid, a.serial#, c.object_name, b.session_id, b.oracle_username,b.os_user_name FROM v$process p, v$session a, v$locked_object b, all_objects c WHERE p.addr = a.paddr AND a.process = b.process AND c.object_id = b.object_id-- 2. 查看是哪个进程锁的 SELECT sid, serial#, username, status, osuser FROM v$session where serial# = ‘5002‘SELECT sid, serial#, username, status, os...

Oracle锁表、解锁【代码】【图】

我遇到的情况:当使用select语句查询表时,后面跟着for update ,select * 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,3909...

oracle数据库查询锁表及杀进程

SELECT A.OWNER, A.OBJECT_NAME, B.XIDUSN, B.XIDSLOT, B.XIDSQN, B.SESSION_ID, B.ORACLE_USERNAME, B.OS_USER_NAME, B.PROCESS, B.LOCKED_MODE, C.MACHINE, C.STATUS, C.SERVER, C.SID, C.SERIAL#, C.PROGRAM FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, SYS.GV_$SESSION C WHERE (A.OBJECT_ID = B.OBJECT_ID) AND (B.PROCESS = C.P...

解除Oracle被锁的表

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#, ...

for update造成的Oracle锁表与解锁【代码】【图】

我遇到的情况:当使用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,即可...

Oracle锁表故障处理一例

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 ---------- ---------- -...

oracle数据库查询锁表与解锁语句

今天要删除一个失效的物化视图的时候;老是删除不掉;经理说是锁表了;然后百度了一下 下面是 查询 锁表 和 如何解锁 --查询现在的锁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....

Oracle锁表及解锁【代码】

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...

oracle的行级锁与表级锁

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 锁表查询及解锁【代码】

如果对 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...

Oracle的锁表与解锁

步骤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...

oracle 锁表 如何解锁

---查询 被锁的表 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

Oracle的锁表与解锁

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,...