Author Archives: Alfred Zhao
同样的SQL,怎么突然就慢了?
本篇文章素材来源于某银行系统的一次性能问题分析。 许久没写这种troubleshooting类型的技术文章了,因为曾在服务公司呆过多年,工作原因,这方面之前做的多,听的更多,导致已经达到在自己认知维度下的一个小瓶颈,纯技术型的问题,稍微常见的基本都遇到过,非常少见的也基本是bug类(软件缺陷只能通过补丁或一些workaround的方式绕过去),感觉实在是没啥可写的。 另外注意,我这里说的“常见”指的是所有客户群中相对常见,而对单个具体客户而言,就非常可能从没有见过,这也是纯甲方技术人员(这里的纯甲方是指毕业就在一个甲方呆着,只能看到自己公司系统运行情况)的局限性,在早些年时,一些行业前辈们还会建议新的技术从业者即使想去甲方,也要先在乙方吃几年苦,能多见一些场景,再去甲方,这样会有比较准确的判断力,不至于轻易被乙方忽悠,也不会瞎挑毛病挑不到点子上让人鄙视。 前些日子有客户遇到问题,申请出差过去现场帮客户分析解决了,这个分析过程还是有些意思的,但最终结论简单来说就是DPR(直接路径读)问题,定位那一刻就觉得没啥可写的了,相关文章也太多了,今天突然想换个思路,看能否以故事线的方式来呈现这个问题,并解释所有技术细节,试图能够让所有人(包括技术小白)都能看得懂,所有用户相关信息均已做遮蔽处理。 首先你要忘掉这是个DPR的问题,让我们一起体会下这个分析问题的历程。 起初是被同事叫来帮忙一起分析客户问题,搞了一个微信群,客户先发了一些所谓异常时间的AWR、ASH、ADDM报告。 说明环境是普通X86服务器上的一套Oracle RAC数据库,版本是11.2.0.4,有应用补丁,触发BUG风险相对较低。嗯,还是要强调下,这里说的低只是说主观感觉上,因为11g已经摸爬滚打了那么多年,无数客户曾趟出的bug也都做了修复,遇到新bug的概率相对小而已,但并不是遇不到,一旦运气不好遇到就麻烦了,所以我们现在会强烈建议你升级到现有的LTS(长期支持版本)19c,可不要再用11g了。 这里提到非常有用的报告: AWR(Automatic Workload Repository) ASH(Active Session History) ADDM(Automatic Database Diagnostic Monitor) 其中ADDM相对用的少,它可以自动分析 AWR 中的性能数据,识别潜在的性能问题,并生成相应的建议报告。对于复杂问题可能不够准确,但至少也能给我们提供一个思路。 AWR可以记录某个时段下的真实负载情况,ASH可以在某个时段下看到是哪些会话在运行,非常好用,对等待事件的细致划分程度,也是其他数据库梦寐以求的东西。 和应用配合明确这个业务感知慢的SQL是否是AWR中显示的Top SQL,同时明确对应的具体sql_id,开始深入分析。 起初明确的sql_id,有一个对应的是一个存储过程,但此时没有进一步去查。 因为另外一个sql_id被认为更值得关注,这是一条简单的SQL,查询一个分区表,谓词条件只有一个定位到某一天的日期,该表是按月分区的。该SQL奇怪是正常的时候1分钟以内完成,异常的时候要接近10分钟完成,前者客户认为正常可接受,后者认为无法接受。 同样的SQL,查询不同日期,效率差距如此明显,另外客户反馈每天数据量基本相当,并没有数量级的差异。 此时最先想要排查的是是否有不同的执行计划? 可结果并不是,执行计划虽然是全表扫,但是前后并没有任何变化。 当时给的AWR中,我也看了IO部分,但只有3.3G的量级,感觉影响并不大,就忽略掉了。 后来去现场,实际动手分析发现,其实故障时刻远没有之前的AWR报告那样轻描淡写,重新收集后续故障时刻的AWR(1小时间隔)可以看到此时的DPR非常显著,达到了314G+,要是之前做紧急救援服务,看到这就已经结束了,直接凭借经验断定,DPR禁用掉再看效果。因为再慢的话,会影响其他客户问题的处理进度。 其实那种凭借历史经验直接判断问题虽然有很快很厉害的感觉,但却是不严谨的,现在我们要进一步确认细节,确认是否是这个问题。既然是DPR,再看TOP SQL中通过Reads的排序,发现Top 2都值得关注,因为物理读几千万,和后面SQL存在数量级上的差异: Top 1是一个存储过程,Top 2是一个SQL,经确认这个SQL也是存储过程之内的一条SQL,但是并不是之前我们分析的那条SQL,说明之前提供的方向有一定错误。这也说明这个Top 2才是问题根本。 同时配合ASH也可以看到的确就是这SQL引发的DPR,导致性能严重下降。 … Continue reading
如何快速获取AWR中涉及到的表
最近遇到一个很少见的需求,是关于应用测试方面的。 具体来说,这个应用的测试需求要基于一个固定的时间点数据,而且只能测试一轮,再测试就需要还原到测试前状态。 因为我们使用的存储是分层的(热数据在Flash上,冷数据在传统机械盘),但因为每次测试都需要将数据库闪回还原到固定时间点,效果不佳,所以需要尽可能的预热测试涉及的对象。 方法也很简单,尽可能将所有使用到的相关对象提前全扫下,将其预热。 而相关对象,最佳方式是应用直接提供,这样最准确;但是各种原因,应用无法提供,那么DB层面观察,从测试期间的AWR获取,可以有不同维度: 1.精确找到所有I/O慢的TOP SQL,收集相关表进行预热 2.尽可能找更多AWR中的SQL,收集相关表进行预热 如果是第一种方式,需要人工去定位,SQL数量会很少的几条。 如果是第二种方式,会列出大量SQL,但工作量很大。 那有什么简单的方式吗? AWR本质就是文本内容,我们可以依据通常出现在表名前的关键字来定位。同样是有多种维度,比如SELECT语句表名前会有FROM关键字。 通过Shell列出: grep -o -i ‘\bFROM\s\+\(\w\+\)’ awr.html | sort -u 上面会把所有from关键字及之后的名字列出,然后再人为过滤下不是表的行,好为预热脚本做准备。 这个命令将使用 grep 工具, -o 表示只输出匹配的部分 -i 表示不区分大小写 \b 表示单词边界 FROM 表示匹配 FROM 关键字 \s+ 表示一个或多个空白字符 (\w+) 表示一个或多个字母数字字符(表名或视图名) sort … Continue reading
Oracle CloudWorld 2023:Safra Catz主题演讲——把客户的成功放在首要位置
Safra Catz在Oracle CloudWorld 2023的开场演讲主题是“把客户的成功放在首要位置”。她强调了客户的重要性,并说大家通过合作和技术可以实现几乎一切。她感谢在场的观众,强调了学习和分享的重要性,以及公司致力于为客户提供更好服务的承诺。 在演讲中,她还邀请了来自其他公司的高管一同演讲,展示了在拥有适当技术和正确思维方式时所能实现的各种可能性。这些演讲突出了Oracle公司关注客户需求、强调合作伙伴关系、推动技术创新以及鼓励教育和知识分享的承诺,以实现客户的成功和公司的持续增长。 下面,我们就一起来具体看看Safra和这些高管的精彩演讲内容吧: 第1位嘉宾:Uber的CEO, Dara Khosrowshahi Uber是一家主要提供乘车服务的科技公司。 Dara Khosrowshahi和Safra Catz在演讲讨论时强调了关注客户的重要性:Dara充分理解满足客户需求的重要性,对话中还提到他自己亲自驾驶Uber来了解客户的需求。这也说明了关注客户的重要性。 而在技术和变革方面,对话讨论了技术和变革对企业的影响,以及如何在增长和盈利之间取得平衡。Oracle Cloud被认为是Uber成功增长和盈利的关键组成部分。他们强调了Uber与Oracle之间的紧密合作,以实现共同的目标。Dara 还提到了Uber Direct,这是一项与Oracle技术共同支持的服务,为客户提供快速的产品交付。Safra Catz强调了合作伙伴之间的信任和合作,以实现共同目标的重要性。 Safra和Dara的对话突出了对客户的关注、重视客户的成功,最终达到双赢的目标。 第2位嘉宾:AON的CEO, Lori Goltermann AON是一家全球领先的专业服务公司,为客户提供风险、退休和健康方面的筹划咨询和解决方案。 Lori Goltermann将在演讲中分享AON的客户导向战略:AON以客户需求为中心,致力于建立紧密的客户关系,提供相关性的服务,以及实现业务影响。这表明AON的核心战略是确保客户的成功和满意度。 在技术的关键作用方面:Lori强调了Oracle CX Cloud在帮助构建有效战略和实现客户成功方面的关键作用。她指出,技术是实现这一目标的关键要素之一。 同时Lori还提到AI将成为重要话题,特别是AI如何根据不同行业的需求进行定制。她还分享了AON正在快速但谨慎地探索AI的应用,以提高效率。 Safra和Lori的对话突出了客户导向、技术的关键作用以及对AI的探索。这些因素对于实现客户成功和推动业务增长同样至关重要。 第3位嘉宾:Loblaw的EVP, David Markwell Loblaw Companies Limited 是一家加拿大零售商,包括在 22 个区域和细分市场运营公司和特许经营超市,以及药店、银行和服装。 David … Continue reading
Mac上使用Royal TSX快速连接到OCI主机
问题: 每次使用Royal TSX连接到OCI主机都要交互式输入opc这个用户名,次数多了也蛮烦。 那如何既指定用户名,又想要通过ssh私钥登陆机器呢? 这个需求确实很初级,但也着实困扰过我,因为开始我真的以为不支持,认为这两种连接方式只能选其一。结果没想到人家是可以组合使用实现这样的需求。 具体操作方法就是: 在“Credential”选择“Specify username and password”时,这里是可以支持只输入用户名,密码那里可以不填写的; 然后再同时去设置“Private Key File”指向你的ssh私钥即可。 具体设置如下截图所示: 1.指定用户名: 2.指定ssh密钥: 这样如此配合使用后,每次连接就不需要交互式的去输入用户名了,直接双击连接,属实方便多了。
小知识:PPT的幻灯片放映设置
最近给某客户讲课时,碰到了幻灯片自动翻页的情况,发现是因为之前做过粗略的计时演练,有些片子就快速过了。 问题现象: 结果导致放映时也出现了某些片子快速被自动翻页。 解决方案: 设置成手动推进幻灯片的方式即可解决,具体如下图所示: 我是第一次遇到此问题。问题虽简单,但很可能在遇到时正给客户演示,一时找不到原因就会很捉急,还好我有同事提示,同时也记录下来分享给遇到此问题的朋友们。
如何计算DG环境下Redo传输所需的带宽?
MOS有篇文章:
How To Calculate The Required Network Bandwidth Transfer Of Redo In Data Guard Environments (Doc ID 736755.1)
还提供了一个参考公式 Continue reading
部署19c ADG过程中的问题处理
回忆起来也是有些年没亲自动手搭建ADG了,今天正好有个机会重温,客户环境是19.16,恍惚记得上一次搭ADG还是在11.2.0.4的时代,时光荏苒啊。正好看下19c的ADG和11g的ADG在部署方面有啥不同? Continue reading
Excel快速调整单元格行高和列宽
之前使用的是鼠标双击的方法,但是只适用于少量调整时。 Continue reading
尴尬:在zoom中找不到会议密码
在哪里可以看到明文的会议密码? 如何用自己的个人会议号快速开启会议呢? Continue reading
超简单实用的4个PPT操作技巧
作为我们IT岗位的兄弟姐妹们,一定少不了各种PPT的展示,很多IT大佬总是不屑于PPT的美观,认为只要演讲有干货,格式无所谓,甚至都不需要PPT… Continue reading