示例:Oracle表锁、行锁模拟和处理
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 a15
SELECT l.sid, s.blocking_session blocker, s.event, l.type, l.lmode, l.request, o.object_name, o.object_type
FROM v$lock l, dba_objects o, v$session s
WHERE UPPER(s.username) = UPPER('&User')
AND l.id1 = o.object_id (+)
AND l.sid = s.sid
ORDER BY sid, type;
Enter value for user: zylong
old 3: WHERE UPPER(s.username) = UPPER('&User')
new 3: WHERE UPPER(s.username) = UPPER('zylong') SID BLOCKER EVENT TYPE LMODE REQUEST OBJECT_NAME OBJECT_TYPE
---------- ---------- ------------------------------ ---------- ---------- ---------- --------------- ---------------
27 SQL*Net message from client AE 4 0 ORA$BASE EDITION
32 SQL*Net message from client AE 4 0 ORA$BASE EDITION
35 SQL*Net message from client AE 4 0 ORA$BASE EDITION
35 SQL*Net message from client TM 3 0 TT TABLE
35 SQL*Net message from client TX 6 0
40 35 enq: TX - row lock contention AE 4 0 ORA$BASE EDITION
40 35 enq: TX - row lock contention TM 3 0 TT TABLE
40 35 enq: TX - row lock contention TX 0 6 8 rows selected.
查询锁的源头
with lk as (select blocking_instance||'.'||blocking_session blocker, inst_id||'.'||sid waiter
from gv$session
where blocking_instance is not null
and blocking_session is not null)
select lpad(' ',2*(level-1))||waiter lock_tree from
(select * from lk
union all
select distinct 'root', blocker from lk
where blocker not in (select waiter from lk))
connect by prior waiter=blocker start with blocker='root'; LOCK_TREE
--------------------------------------------------------------------------------------------------
1.35
1.40
查询进程信息
col SPID for a10
col MACHINE for a15
col PROGRAM for a25
col OBJECT_NAME for a15
col ORACLE_USERNAME for a15
col OS_USER_NAME for a15
select b.session_id,
a.serial#,
p.spid,
a.machine,
a.program,
a.status,
c.object_name,
b.oracle_username,
b.os_user_name,
a.sql_id
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; SESSION_ID SERIAL# SPID MACHINE PROGRAM STATUS OBJECT_NAME ORACLE_USERNAME OS_USER_NAME SQL_ID
---------- ---------- ---------- --------------- ------------------------- -------- --------------- --------------- --------------- -------------
40 2237 13530 test sqlplus@test (TNS V1-V3) ACTIVE TT ZYLONG oracle 1t3admr0mnxd6
35 1675 13248 test sqlplus@test (TNS V1-V3) INACTIVE TT ZYLONG oracle
查询SQL信息
SQL> select SQL_TEXT from v$sql where SQL_ID='1t3admr0mnxd6'; SQL_TEXT
------------------------------------------------------------------------
update tt set id=1 where id=2 --or
set long 500000
select SQL_FULLTEXT from v$sql where SQL_ID='1t3admr0mnxd6';
kill session
alter system kill session '35,1675' immediate; --or
$ ps -ef |grep spid
% kill -9 spid
c:\> orakill <SID> <spid>
其中<SID> = Oracle实例名称(ORACLE_SID) <spid> =要杀死的线程的线程ID
示例:Oracle表锁、行锁模拟和处理的更多相关文章
- MySQL学习之——锁(行锁、表锁、页锁、乐观锁、悲观锁等)
转载. https://blog.csdn.net/mysteryhaohao/article/details/51669741 锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是 ...
- MySQL锁(行锁、表锁、页锁、乐观锁、悲观锁等)
锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是协调多个进程或县城并发访问某一资源的一种机制.在数据库当中,除了传统的计算资源(CPU.RAM.I/O等等)的争用之外,数据也是一 ...
- MySQL锁(表锁,行锁,共享锁,排它锁,间隙锁)使用详解
锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是协调多个进程或县城并发访问某一资源的一种机制.在数据库当中,除了传统的计算资源(CPU.RAM.I/O等等)的争用之外,数据也是一 ...
- mysql的锁--行锁,表锁,乐观锁,悲观锁
一 引言--为什么mysql提供了锁 最近看到了mysql有行锁和表锁两个概念,越想越疑惑.为什么mysql要提供锁机制,而且这种机制不是一个摆设,还有很多人在用.在现代数据库里几乎有事务机制,aci ...
- 【MySQL 读书笔记】全局锁 | 表锁 | 行锁
全局锁 全局锁是针对数据库实例的直接加锁,MySQL 提供了一个加全局锁的方法, Flush tables with read lock 可以使用锁将整个表的增删改操作都锁上其中包括 ddl 语句,只 ...
- Mysql MyISAM与InnoDB 表锁行锁以及分库分表优化
一. 两种存储引擎:MyISAM与InnoDB 区别与作用 1. count运算上的区别: 因为MyISAM缓存有表meta-data(行数等),因此在做COUNT(*)时对于一个结构很好的查询是不需 ...
- MySQL锁行锁表
select..for update; 给数据库表手动上锁 --锁行Begin; for update; --给 id=1 的行加上排它锁且 id 有索引 ; Commit; -- 锁表 BEGIN; ...
- 【Mysql】表锁 行锁 记录锁 间隙锁
Mysql中的锁 基于锁的属性分类:共享锁.排他锁. 基于锁的状态分类:意向共享锁.意向排它锁 根据锁的粒度分类:全局锁.页锁.表级锁.行锁(记录锁.间隙锁.和临键锁),实际上的锁就这些,上面两种分类 ...
- DM存储过程示例子-表的行数对比
1.DM存储过程示例子,表的行数对比 1 --1. ================全量 2 --select * from DM_VERI where c2 != c3; 3 --drop tabl ...
- Oracle 表的行数、表占用空间大小,列的非空行数、列占用空间大小 查询
--表名,表占用空间大小(MB),行数select table_name, round(num_rows * avg_row_len /1024/1024, 8) as total_len, num_ ...
随机推荐
- 关于css布局的记录(一) --table和flex布局
1.table方式布局 效果图: 直接用table等标签布局,table布局自动垂直居中 亦可用 display:table == <table>.display:table-cell = ...
- 2019icpc银川站 复现赛
打了计蒜客上的银川重现赛,总体感觉难度上确实比平时区域赛要低上一些. 这里补一下F题和G题的思路和代码. upd:I题也补了,理解差不多都在注释里. F题 做法,玩一下n=10的样例就出 ...
- 前端小白webpack学习(二)
前一篇写了自我总结的webpack定义:为JavaScript服务的静态模块打包器 和几大基本概念 entry.output.plugins.loaders等.指路前端小白webpack学习(一) 下 ...
- IT兄弟连 HTML5教程 CSS3属性特效 定义省略文本的处理方式
text-overflow属性仅是注解,当文本溢出时是否显示省略标记,并不具备其它的样式属性定义.我们想要实现溢出时产生省略号的效果.还必须定义:强制文本在一行内显示(white-space:nowr ...
- 一道ctf-内存取证volatility的学习使用
环境:kali 0x00 volatility官方文档 https://github.com/volatilityfoundation/volatility 在分析之前,需要先判断当前的镜像信息,分析 ...
- 系统 (一) Windows10安装Ubuntu子系统
前言 本文将基于 Windows10专业版 安装 Ubuntu子系统 1.控制面板 -> 程序 -> 选择启用或关闭Windows功能 -> 勾上 适用Linux的Windwos子系 ...
- SQL server 2014 安装
一.规划并成功的完成SQLSERVER 2014的安装 1.规划系统 安装SQL server 前,第一步应该是合理的规划.以下是规划时的任务和要点: ① 当前工作负载的基准 ② 估计工作负载的增长情 ...
- C#DataTable转List<T>互转
using System; using System.Collections.Generic; using System.Data; using System.Reflection; namespac ...
- C# -- RSA加密与解密
1. RSA加密与解密 -- 使用公钥加密.私钥解密 public class RSATool { public string Encrypt(string strText, string st ...
- js中关于constructor与prototype的理解
1.①__proto__和constructor属性是对象所独有的:② prototype属性是函数所独有的,因为函数也是一种对象,所以函数也拥有__proto__和constructor属性. 2. ...