数据库的锁是比较耗费资源的,特别是发生锁等待的时候,我们必须找到发生等待的锁,有可能的话,杀掉该进程。

  可以通过alter system kill session‘sid,serial#’ 或者alter system disconnect session'sid,serial#' immediate; 来杀掉会话

  下面语句将查找到数据库中所有的DML语句产生的锁,还可以发现任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。

  SELECT /*+ rule */s.username,
  decode(l.type,'TM','TABLELOCK','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$lockl,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_objectl,dba_objects o,v$session s
  WHERE l.object_id=o.object_id
  AND l.session_id=s.sid
  ORDER BY o.object_id,xidusnDESC

  以上查询结果是一个树状结构,如果有子节点,则表示有等待发生。如果想知道锁用了哪个回滚段,还可以关联到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-tabledeallocate unused keep 2000m ( 原来大小的n-1/n);
  3. alter table big-tabledeallocate unused keep 1500m ;
  ....
  4. drop table big-table;

Oracle中快速查找锁与锁等待相关推荐

  1. php对pdf关键字定位,如何在PDF文件中快速查找关键字

    有时候我们在阅读和编辑PDF文章时需要对PDF文件里的重要关键词进行查找,但如果PDF文章内容过长,怎么才能快速查找出想要查找的关键字? 想要在PDF文件中快速查找出关键字,那么利用迅捷PDF编辑器进 ...

  2. Oracle中如何查找未使用绑定变量的SQL语句?

    Oracle中如何查找未使用绑定变量的SQL语句? 利用V$SQL 视图的 FORCE_MATCHING_SIGNATURE 字段可以识别可能从绑定变量或 CURSOR_SHARING 获益的 SQL ...

  3. Cadence OrCAD原理图中快速查找元件的方法

    Cadence OrCAD原理图中快速查找元件和网络方法 本章节将教大家如何在OrCAD原理图中根据元件位号快速查找元件的两个方法. 方法一:在.obj页面的"File"标签下查找 ...

  4. ora-00031:session marked for kill处理oracle中杀不掉的锁

    转: 一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库.现在提供一种方法解决这种问题,那就是在ORACLE ...

  5. 【转】ora-00031:session marked for kill处理oracle中杀不掉的锁

    一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库.现在提供一种方法解决这种问题,那就是在ORACLE中杀不 ...

  6. ORA-00031: session marked for kill 处理Oracle中杀不掉的锁

    转自:http://bbs.erp100.com/thread-5934-1-1.html marked 一些ORACLE 中的进程被杀掉后,状态被置为"killed",但是锁定的 ...

  7. 索引:如何在海量数据中快速查找某个数据?

    ------ 本文是学习算法的笔记,<数据结构与算法之美>,极客时间的课程 ------ 前面讲过MySQL数据库索引实现原理,底层是依赖B+树这种数据结构来实现的.那类似Redisp 这 ...

  8. 【索引】:如何在海量数据中快速查找某个数据?

    亲测可用,若有疑问请私信 在[B+树]:MySQL数据库索引是如何实现的?中,我们讲了MySQL数据库索引的实现原理.MySQL底层依赖的是B+树这种数据结构.那类似Redis这样的Key-Value ...

  9. 如何在 Windows 中快速查找文档

    近几年,随着硬盘介质价格的大幅度下降,各位电脑迷们的个人硬盘容量越来越大,动辄五六十G,甚至上百G都不足为奇,这在前几年是无法想象的.但是硬盘大了,存放的文档多了,查找速度慢的烦恼也随之来了.其实在W ...

最新文章

  1. dom刷新局部元素_JavaScript中DOM和BOM基础
  2. html动态加载js方法,如何通过JavaScript动态加载js
  3. hdu 1198 Farm Irrigation
  4. oracle导入视图报错,exp/imp 报错处理(EXP-00003 / IMP-00019 / IMP-00058)
  5. Centos7内核版安装nginx环境问题及解决方法
  6. vue aplayer 进度条无法拖动_「最近项目小结」使用Vue实现一个简单的鼠标拖拽滚动效果插件...
  7. 【转】郭敬明作品中100句经典的话
  8. shell---字体颜色
  9. java基数排序_Java实现基数排序
  10. KL散度、JS散度、Wasserstein距离
  11. max3490esa_max3490中文资料
  12. 数据库系统原理与应用教程(006)—— 编译安装 MySQL5.7(Linux 环境)
  13. 人工智能培训学校学哪些内容
  14. ugui 转轮_unity3D的FingerGestures小工具
  15. 怎样批评同事不会错!
  16. 如何在Office 365中使用Office剪贴板?
  17. ImageMagick将多张图片拼接成一张图片_爱剪辑如何把图片制作成视频
  18. 怎么做好网络营销推广引流客户?
  19. matlab如何求变换矩阵,如何用Matlab实现机器人的变换矩阵
  20. linux之小技巧netstat

热门文章

  1. 遇到 HTTP 错误 403.14 - Forbidden?
  2. html5 拖拽的简要介绍
  3. 一起学WP7 XNA游戏开发(三.二 Sprite Texture Font)
  4. 5G NGC — 关键技术 — 计算与存储分离
  5. VMware 虚拟化编程(9) — VMware 虚拟机的快照
  6. 深度 | AI掘金,非富即亡
  7. kafka官方文档学习笔记2--QuickStart
  8. 二周第一次课(12月18日)
  9. Python应用与实践【转】
  10. 《软件工程方法与实践》—— 导读