`
winie
  • 浏览: 216961 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

怎么快速查找锁与锁等待

阅读更多
/*怎么快速查找锁与锁等待
   数据库的锁是比较耗费资源的,特别是发生锁等待的时候,我们必须找到发生等待的锁,有可能的话,杀掉该进程。
   这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。
   可以通过alter system kill session ‘sid,serial#’来杀掉会话
*/
  SELECT /*+ rule */ s.username,
   decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',NULL) LOCK_LEVEL,
   o.owner,o.object_name,o.object_type,
   s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
   FROM v$session s,v$lock l,dba_objects o
   WHERE l.sid = s.sid
   AND l.id1 = o.object_id(+)
   AND s.username is NOT NULL

--如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待,以下的语句可以查询到谁锁了表,而谁在等待。
  SELECT /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name,
   o.owner,o.object_name,o.object_type,s.sid,s.serial#
   FROM v$locked_object l,dba_objects o,v$session s
   WHERE l.object_id=o.object_id
   AND l.session_id=s.sid
   ORDER BY o.object_id,xidusn DESC

  --以上查询结果是一个树状结构,如果有子节点,则表示有等待发生。如果想知道锁用了哪个回滚段,还可以关联到V$rollname,其中xidusn就是回滚段的USN

  --[Q] 如何有效的删除一个大表(extent数很多的表)
  -- [A] 一个有很多(100k)extent的表,如果只是简单地用drop table的话,会很大量消耗CPU(Oracle要对fet$、uet$数据字典进行操作),可能会用上几天的时间,较好的方法是分多次删除extent,以减轻这种消耗:
   1. truncate table big-table reuse storage;
   2. alter table big-table deallocate unused keep 2000m ( 原来大小的n-1/n);
   3. alter table big-table deallocate unused keep 1500m ;
   ....
   4. drop table big-table;


-----查找什么sql锁表

Select Event, Count(*) From V$session_Wait Group By Event;
Select Sid, Event
From V$session_Wait
Where Event In ('enqueue', 'latch free', 'db file sequential read', 'library cache lock', 'db file scattered read', '
buffer busy waits');

Select /*+ ordered */
--s.sid,
--s.serial#,
--s.LAST_CALL_ET,
--s.username,
--p.spid,
Sql.Sql_Text
--s.machine
From V$session s, V$process p, V$sqltext Sql
Where Sql.Address = s.Sql_Address And Sql.Hash_Value = s.Sql_Hash_Value And s.Sid = &Sid And s.Paddr = p.Addr And
s.Status = 'ACTIVE' And s.Username Is Not Null And s.Username In ('DEVELOP', 'NEVA2', 'UPTEL2H', 'UPTEL2L', 'GJ')
Order By s.Username, s.Sid, s.Serial#, Sql.Piece

Select * From v$locked_object
分享到:
评论

相关推荐

    ORACLE之常用FAQ V1.0(整理)

    [Q]怎么快速查找锁与锁等待 42 [Q] 如何有效的删除一个大表(extent数很多的表) 43 [Q]如何收缩临时数据文件的大小 43 [Q]怎么清理临时段 44 [Q]怎么样dump数据库内部结构,如上面显示的控制文件的结构 44 [Q]如何...

    orcale常用命令

    1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>sqlplus SQL>connect internal SQL>startup SQL>quit b、关闭ORACLE系统 ...SQL*Plus: Release 9.2....

    Duolingo Premium 4.9.2.apk

    通过玩游戏来学习新的词汇 - 通过快速课程和每天回答问题来练习新单词。 •它很有效。Duolingo的34个小时相当于一个学期的大学教育。数以百万计的学生使用Duolingo在学校的语言课上学习和学习! 说明:[无根本需要]...

    AutoScriptBase:AutoJS项目框架,用于快速构建自动化项目

    封装了基于文本、ID控件正则查找工具 WidgetUtils,支持控件等待,批量获取匹配控件等等 日志工具 LogUtils,可以保存日志到文件,支持日志级别 error\warn\info\log\debug,不同级别日志控制台中不同颜色显示,且...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    从就业与择业的角度来讲,计算机相关专业的大学生从事oracle方面的技术是职业发展中的最佳选择。 其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的...

    迷你SQL2000

    +托盘区菜单添加“查找”项,用来快速打开程序所在目录,方便开启多个副本的用户查找对应目录; ^数据库页右键菜单启动事件探查器时,自动加载标准模板,方便使用。 1.2.6 *还原数据库时,修正输入库名时点取消后...

    UNIX 高级教程系统技术内幕

    9.5 伯克利快速文件系统(FFS) 9.6 硬盘结构 9.7 磁盘组织 9.7.1 块和碎片 9.7.2 分配策略 9.8 FFS 的增强功能 9.9 分析 9.10 临时文件系统 9.10.1 内存文件系统 9.10.2 tmpfs 文件系统 9.11 特殊目的文件系统 9.11.1...

    DroidKit_v1.0.0.20210528.rar

    凭借创新的快速恢复技术,它可以快速扫描您的手机存储,并挽救照片、聊天和文件、消息、联系人以及多达13种类型的更多基本数据,几乎涵盖了您日常所需的一切。支持所有Android手机和平板电脑。您的设备没有root。...

    fourinone-3.04.25

    如果对一个中小型的互联网或者企业应用,仅仅利用domain/node进行k/v的存储即可,因为domain/node都是内存操作而且读写锁分离,同时拥有复制备份,完全满足缓存的高性能与可靠性。对于大型互联网应用,高峰访问量上...

    Oracle数据库管理员技术指南

    2.4.1 怎样查找产生锁的 SQL 语句 2.4.2 怎样释放锁 2.4.3 怎样删除用户会话 2.4.4 怎样从数据字典中提取视图创建 命令 2.4.5 怎样从数据字典中提取索引定义 2.5 回顾 第3章 导出和导入技术 3.1 导出/导入...

    超级有影响力霸气的Java面试题大全文档

    wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 17、...

    java 面试题 总结

    wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 14、Overload...

    DirectX修复工具V4.0增强版

    如扩展失败,可点击“扩展”界面左上角小锁图标切换为加密连接,即可很大程度上避免因防火墙或其他原因导致的连接失败。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、...

    DirectX修复工具V4.0标准版

    如扩展失败,可点击“扩展”界面左上角小锁图标切换为加密连接,即可很大程度上避免因防火墙或其他原因导致的连接失败。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、...

    DirectX修复工具V4.0在线修复版

    如扩展失败,可点击“扩展”界面左上角小锁图标切换为加密连接,即可很大程度上避免因防火墙或其他原因导致的连接失败。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、...

    Java范例开发大全 (源程序)

     实例213 二分查找法的实现方法 377  实例214 模拟操作系统的进程调度 379  实例215 利用栈将字符串逆序输出 381  实例216 动态的数组链表 382  实例217 你能猜出鱼是谁的宠物吗? 387  实例218 使用...

    java范例开发大全(pdf&源码)

    实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝购物买卖双方交易问题 412 实例226 携子之手 与子偕老(join) 415 实例227 线程让步(Yield) 417 实例228 会走动的钟(多线程) 419 实例229 变形...

    java范例开发大全源代码

     实例78 快速排序法 106  第6章 字符串(教学视频:138分钟) 108  6.1 字符串类String 108  实例79 创建字符串类 108  实例80 如何使用charAt()方法计算重复字符 109  实例81 按字母顺序比较大小 ...

Global site tag (gtag.js) - Google Analytics