首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle 数据库发生等待事件:enq: TX - row lock contention ,排查思路

of Findings Finding 2: Row Lock Waits 应用确认 写在最后 前言 最近看 awr 报告时,经常会看到一些 enq: TX - row lock contention 的等待事件...通常,产生enq: TX - row lock contention事件的原因有以下几种可能: 不同的session更新或删除同一条记录; 唯一索引有重复索引; 位图索引同时被更新或同时并发的向位图索引字段上插入相同字段值...; 并发的对同一个数据块上的数据进行update操作; 等待索引块完成分裂; 现象 应用反馈系统使用存在延时,需要排查情况。...查看监控服务器,发现数据库存在 enq: TX - row lock contention 锁的情况。 排查 首先确认发生问题的时间段,然后抓取问题时间段的报告来分析。...Segments by Row Lock Waits 项,可以发现发生锁的对象主要是两张表 A 和 B和 A 表的索引: 与应用确认后,发现其中一张表 A 为核心业务表,暂时怀疑另一张表可能存在问题

2.1K31

【DB笔试面试652】在Oracle中,等待事件有哪些常见的分类?常见等待事件有哪些?

♣ 题目部分 在Oracle中,等待事件有哪些常见的分类?常见等待事件有哪些?...随着等待事件的逐步完善,也能够反映出对于问题的诊断粒度越来越细化。虽然不同版本会有不同数目的等待事件,但是这些等待事件都可以通过查询V$EVENT_NAME视图获得。...Oracle的等待事件主要可以分为两类:空闲(Idle)等待事件和非空闲(Non-Idle)等待事件。...(2)非空闲等待事件专门针对Oracle的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的。...除了上表中列举出来的等待事件还有很多其它常见的等待事件,这里就不再列举了,读者可以关注作者的微信公众号或博客,里面会有所有等待事件的详细介绍。

88310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    sqlite3 命令创建新的 SQLite 数据库方法

    SQLite 创建数据库 SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库。您不需要任何特殊的权限即可创建一个数据。...语法 sqlite3 命令的基本语法如下: $ sqlite3 DatabaseName.db 通常情况下,数据库名称在 RDBMS 内应该是唯一的。...实例 如果您想创建一个新的数据库 ,SQLITE3 语句如下所示: $ sqlite3 testDB.db SQLite version 3.7.15.2 2013-01-09 11...: $sqlite3 testDB.db .dump > testDB.sql 上面的命令将转换整个 testDB.db 数据库的内容到 SQLite 的语句中,并将其转储到 ASCII 文本文件 testDB.sql...您可以通过简单的方式从生成的 testDB.sql 恢复,如下所示: $sqlite3 testDB.db < testDB.sql 此时的数据库是空的,一旦数据库中有表和数据,您可以尝试上述两个程序。

    1.9K10

    使用sqlite3命令创建新的 SQLite 数据库

    SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库。您不需要任何特殊的权限即可创建一个数据。...语法 sqlite3 命令的基本语法如下: $ sqlite3 DatabaseName.db 通常情况下,数据库名称在 RDBMS 内应该是唯一的。...实例 如果您想创建一个新的数据库 ,SQLITE3 语句如下所示: $ sqlite3 testDB.db SQLite version 3.7.15.2 2013-01-09 11...: $sqlite3 testDB.db .dump > testDB.sql 上面的命令将转换整个 testDB.db 数据库的内容到 SQLite 的语句中,并将其转储到 ASCII 文本文件 testDB.sql...您可以通过简单的方式从生成的 testDB.sql 恢复,如下所示: $sqlite3 testDB.db < testDB.sql 此时的数据库是空的,一旦数据库中有表和数据,您可以尝试上述两个程序。

    1.8K10

    【Web前端】系统中正在发生的“事件”

    事件是在你编写的程序中发生的特定行为,系统会传递这些事件的信息,以便你的代码能够做出相应的反应。举个例子,当用户在网页上点击一个按钮时,你可能希望通过弹出一个信息框来回应这一操作。 什么是事件?...这可以是单个元素、一组元素、当前加载的HTML文档,或整个浏览器窗口。各种类型的事件都有可能发生。 例如: 用户选择、点击或将光标悬停在某个元素上。 用户按下键盘上的某个键。...这通常是你作为程序员编写的 JavaScript 函数,它会在事件发生时被执行。当你定义了一个代码块来响应该事件时,我们称之为注册事件处理器。...尽管从严格意义上讲,这段代码既监控又处理事件,但监听器主要关注事件的发生,而处理器则负责对事件采取相应的行动。 处理点击事件 假设用户在网页上单击一个按钮,我们希望在用户单击时显示一条消息。...事件对象 当事件发生时,JavaScript会生成一个事件对象,包含有关事件的详细信息。在事件处理程序中,可以通过参数访问此对象。

    7510

    与IO相关的等待事件troubleshooting-系列6

    'db file parallel read' 当Oracle从多个数据文件并行读到内存(PGA或Buffer Cache)的非连续缓冲时,可以看到这种等待事件。...在恢复操作或为了优化而预处理缓冲(代替执行多个单块读)时也会有这种等待事件。         如果这种等待事件的事件占据大部分,可以按照“db file sequential read”的处理方法。...IO操作时,会出现这种等待事件,这种操作会绕过Buffer Cache。...用这种方式中等待的时间都会被记录(不会衡量用于执行IO操作的时间),但不能用Statspack的“Top 5 Wait/Timed Events”节中列表的相对位置来评估他们的真实影响。        ...通过查询VSESSION_EVENT(等待事件)或VSESSTAT(统计数据),明确执行直接IO操作的session。

    84120

    与IO相关的等待事件troubleshooting-系列7

    与控制文件IO相关的等待事件:         这种等待事件通常产生于一个或多个控制文件的IO。像redo日志切换和检查点事件,都会产生频繁的控制文件访问。...因此调优这些实践可以间接地影响这种等待事件。 'control file parallel write' 这种等待事件通常发生于服务器进程正在更新所有控制文件副本的时候。...如果这种等待事件占据大部分事件,那么需要检查所有控制文件副本在IO路径(控制器,物理磁盘)的瓶颈。 可以用的方法: 1. 降低控制文件副本的数量,确保所有副本不会同时丢失。 2....'control file sequential read' and 'control file single write'         这种等待事件通常发生于单个控制文件副本的IO。...如果这种等待占据大部分事件,需要检查是否正在进行控制文件的特殊拷贝,IO路径是否已饱和。         接下来的查询能够用来查找哪些控制文件正在被访问。

    30530

    与IO相关的等待事件troubleshooting-系列8

    与Redo日志IO相关的等待事件:         Redo日志活动期间会有很多的等待事件,而且他们大多是和IO相关的。...尽管我们通常会从Statspack报告的“Top 5 Wait/Timed Events”节中看到‘log file sync’等待事件,为了理解这个等待事件的原因,我们首先看下‘log file parallel...'log file parallel write'         当正在将日志记录从内存的日志缓冲区拷贝到当前磁盘的redo日志组成员的日志文件时,LGWR后台进程会等待这种等待事件。...然而,LGWR不得不一直等待,直到这个等待事件完成之前,所有成员日志文件的IO操作完成。因此,决定等待时间长度的因 素是IO子系统执行日志文件成员写操作的速度。        ...为了减少这种等待事件的等待时间,一种方法就是降低数据库产生的redo日志量: 1. 充分使用UNRECOVERABLE/NOLOGGING选项。 2.

    48520

    与IO相关的等待事件troubleshooting-系列2

    ‘等待时间’则是所有等待事件用时之和。 注:尽管很像,但这个公式绝对不是排队理论的基础公式。...判断IO等待事件的真实重要性:         包括AWR和Statspack在内的许多工具都可以列出最重要的等待事件。...当看到这样的top等待事件列表,通常就会很容易地开始处理这些等待事件,但往往忽视了首先可以分析下他们对总体响应时间的影响。        ...这就意味着可以更容易、更准确地衡量等待事件对总体“响应时间”的影响,正确地指导接下来的调优方向。...从上面的例子,我们能够再次看到等待事件的用时少于20%,家下来的调优重点应该放在服务处理时间的组件上,例如CPU消耗。 (未完待续)

    41520

    与IO相关的等待事件troubleshooting-系列1

    近来XX应用充分暴露出开发人员最初只关心功能,未考虑性能的问题,夜维、OLTP应用均出现了不同程度的与数据库相关的性能问题。...这个应用所在磁盘的IO较差,原因在于这块磁盘较旧,已进入更换的流程,但短期内还不能更换,对应用是个极大的隐患。而且也出现过某段时间IO非常差,导致应用处理速度非常缓慢。...针对与IO相关的性能问题,MOS有篇文章(223117.1)介绍的就是与IO相关的troubleshooting,拜读一下。...这篇文章的目的:针对主要争用是IO相关的场景下,Oracle调优的一些思路。 主要用到的技术或方法: 1....Statspack或AWR报告显示“Top 5 Wait/Timed Events”节中的IO等待事件。 2. 对session进行SQL Tracing表明限制主要源自于IO等待事件。 3.

    30920

    全面解析Oracle等待事件的分类、发现及优化

    非空闲等待事件,专门针对Oracle的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是调整数据库的时候应该关注与研究的。 2....后面,我会介绍一下常见的等待事件。 四、观察等待事件 系统内置了一些视图,通过这些视图可以了解整体(系统级)、局部(会话级)的等待事件发生情况及各类别事件的分类统计。...下面将会话等待事件与各视图之间的关系,总结整理如下: 一个会话一次只发生一个等待事件。如果看到了其他的等待事件,那仅仅表示在下一个时间片上发生了等待。在某个时刻只存在一个等待。...除此之外,还有一种情况就是会话在做一致性读时,需要构造数据块在某个时刻的前映像。此时需要申请内存块来存放这些新构造的数据块,如果内存中无法找到这样的内存块,也会发生这个等待事件。...8、library cache pin 发生原因: 这个等待事件和library cache lock一样是发生在共享池中并发操作引起的等待事件。

    3.3K21

    与IO相关的等待事件troubleshooting-系列5

    'db file scattered read'         这是另一种常见的等待事件。...如果这个等待事件占据大部分等待时间,下面的方法可以用到: 1. 找到执行全表扫描或全索引快速扫描的SQL语句,进行调优以确保这些扫描是必须的,而不是非最优执行计划导致的。        ...从Oracle 9i开始,新的V$SQL_PLAN视图可以帮上忙:(忽略在这些查询结果中的数据字典SQL) 对于全表扫描: select sql_text from v$sqltext t, v...p.operation='INDEX' and p.options='FULL SCAN' order by p.hash_value, t.piece;         在Oracle 8i,对于这种等待事件...最后,可以考虑最长访问的段包含的数据数量(通过将旧的、不需要的数据移出数据库),或将这些段移动到新的、更快的磁盘,以降低IO的响应时间。 (未完待续)

    41620

    与IO相关的等待事件troubleshooting-系列3

    解决IO问题的常用方法:         使用Statspack类似的工具对数据库响应时间分析之后,已经表明与IO相关的等待事件限制了系统性能,有许多的方法可以判断这种问题。        ...接下来的章节会介绍排查等待事件的方法。         有一些方法可以不用管特定的等待事件。在这个章节,会介绍和解释每个方法背后的概念和基本原理。...最终由数据库产生的IO都会直接或间接地源于用户执行的SQL的本质和数量。         这就意味着通过控制SQL语句产生IO的数量,有可能限制数据库的IO请求。...在典型的问题场景下,可能只有很少的SQL,由于他的执行计划非最优,导致产生比常用更多的物理IO,降低数据库的整体性能。        ...在大多数据库中IO是肯定存在的。之前介绍的所有方法都考虑后,如果已存系统的性能仍旧不满足,那可以考虑: 通过将旧的数据迁移,降低当前数据库的数据卷容量。 使用更多、更快的硬件。 (未完待续)

    41010

    与IO相关的等待事件troubleshooting-系列4

    与数据文件IO相关的等待事件: 接下来的等待事件是与数据文件的IO操作时产生的。 'db file sequential read'         这是一种最常见的IO相关的等待。...大多数情况下,他指的是单块读,例如索引数据块或通过索引访问的表数据块,也能在读取数据文件头块时看到这种等待事件。...在更早的版本中,这种等待事件也会产生于从磁盘的排序段通过多快读的方式读入Buffer Cache的连续("sequential")缓冲。        ...如果这种等待事件占据了大部分的等待时间,可以尝试以下的若干方法: 1....如果没有特殊的SQL语句使用了较差的执行计划,但仍旧产生了比正常更多的物理IO,以下情况可能发生: (1) 特殊的数据文件IO可能处理非常缓慢,原因可能是磁盘的过度访问。

    39220

    匪夷所思:罕见的 Oracle 全局事务锁等待事件分析

    ,这个等待事件造成应用的阻塞也很容易理解,但是Global transaction acquire instance locks并不是常见等待,从字面上理解,是全局事务在尝试获取实例锁。...这个等待在等待时间占比上,消耗了将近75%的DB TIME。...当然数据库中TOP 5中最严重的等待不一定是问题的根源,分析问题时刻的 ASH 信息,在问题时刻,最先出现的是全局事务获取锁的等待,随后开始出现行锁等待: SQL> select to_char(sample_time...询问客户近期是否进行过应用和数据库的调整,可以确认的是客户的应用程序并未发生任何变化,在之前也未出现过类似的问题,不过在出现问题之前,数据库做过主库和Data Guard备库之间的切换演练,而切换演练完成后...这个案例给我们的警示是: 数据库的工作非常紧密,不同版本的变化也不断向前,了解数据库不同版本的新特性,在进行变更时进行详细的检查确认,才能确保数据库安全稳定运行,少出问题。

    1.3K10

    域名劫持事件发生后的应急响应策略

    这听起来像是公司网站出现了混乱,其实可能发生了更严重的的事情。当你深入研究后会发现,公司整个域名都被黑客劫持了,他们试图从你们客户那里窃取数据并且传播恶意代码。...DNS基础知识 为了更好地理解到底发生了什么,我们需要了解一些DNS的基本概念。 DNS即域名系统,是互联网能够正常运营的基础。...这次事件发生在周六早上11点,直到下午5点左右该公司才将DNS配置为正确的服务器。...在这次事件发生之前,他的手机至少在4小时内出现无服务的情况,而重置Gmail密码的短信正需要这台手机。 经过公司调查人员的努力,发现Gmail的密码确实在那段时间被人通过手机进行了更改。...建立事件响应计划 你需要有一个针对这类事件的详尽的应对措施,咱们总会有用到的时候。

    3.4K60

    回顾HTTPS在2017年发生的事件

    又到了辞旧迎新的时候。回顾过去的2017年,在互联网行业中,也发生了众多的变化。其中今年“网络安全”的话题对比去年呈现大幅度的提升。...如中国首部《网络安全法》的颁发、史上最大规模的勒索病毒Wannacry席卷全球,将网络安全推向了浪尖风口,令网络安全上升国家安全的高度。...与此同时,网络传输协议在2017年也发生了重大的变化,HTTPS加密协议迎来了历史上的重要阶段。...4、CAB 论坛:SSL证书最长有效期更改为两年 CAB 论坛第193号提案正式通过投票表决:将所有公开受信任的SSL证书的最长有效期提出新的限制,新的限制时间为825天(即2年),有效期间,证书的内容允许更新...同时会议达成了一致的理念,整个行业都需要更多的时间来确保一切都准备好进行生态系统范围的推广。

    97070
    领券