第87期 Oracle执行计划,彻底搞懂Oracle的执行计划 II
在上一篇《第86期 Oracle执行计划,彻底搞懂Oracle的执行计划》中,我们学习了以下操作:- 展示 SQL 语句**实际(TYPICAL 模式)**执行计划,包含基数预估与成本值。- 通过 GATHER_PLAN_STATISTICS Hint,展示 SQL 语句**实际(ALLSTATS LAST 模式)**执行计划,用来对比预估基数和计划里每一步操作返回的真实行数,同时获取语句最终实际
第86期 Oracle执行计划,彻底搞懂Oracle的执行计划
Oracle的执行计划,在哪里能找到执行?对于经常和数据库打交道的朋友,优化sql时,最常见的就是执行计划,那么,什么是执行计划呢?市面上有非常多资料可以帮助理解执行计划,各类资料的实际参考效果参差不齐。我个人认为讲解质量最高的资料来自《Troubleshooting Oracle Performance》(ISBN:1590599179)。也可以参考 Oracle 11g 的官方文档也是最权威的
第85期 为什么直方图和绑定变量一起使用时,有时会引发性能问题
前段时间,给大家做Oracle 培训时,有同学提出了几个很有价值的问题:为什么直方图和绑定变量一起使用时,有时会引发性能问题。同学们希望好好学习一下借助直方图来解决绑定变量窥视(bind peeking)带来的问题。我对直方图和绑定变量做了一下具体问题的总结,总结如下:1. 当 SQL 使用绑定变量时,直方图会对执行计划产生怎样的影响?2. 为什么直方图和绑定变量无法很好地协同工作?3. 使用绑定
第84期 查询RAC之间私网的流量信息,监控 RAC 私网流量变化
在oracle的RAC环境中,我们可以通过DBA_HIST_IC_DEVICE_STATS试图读取 AWR 历史网卡设备统计信息, DBA_HIST_IC_DEVICE_STATS,用于查看 Oracle RAC 实例内部网卡(Interconnect,私网)的历史流量增量,筛选指定网卡实例 1、IP 段的流量信息,计算两次 AWR 快照之间的收发流量差值(MB),用来排查 RAC 私网
第83期 MySQL JSON Duality View + HeatWave Vector Search for RAG
Prerequisites: MySQL 9.7+, HeatWave enabled, vector plugin loaded.Scenario: Knowledge base documents stored in relational tables. JSON Duality View exposes nested JSON documents for LLM consumption. C
第82期 Oracle 19c RAC集群:如何在线迁移/替换 OCR 磁盘组
如果存储老旧要淘汰,新存储划了盘过来,怎么平移过去的呢? 假设新存储划了 3 块 LUN 过来,建立了一个新磁盘组叫 +NEWOCR。遇到这种绝境,平时如果没有深刻的底层认知和反复的实战演练,当场就得蒙。今天,我们将以 Oracle 19c RAC 为例,彻底盘透 OCR磁盘组。不仅告诉你它里面到底装了什么、怎么规划、日常怎么维护;最硬核的是,我还会手把手带大家模拟如何在线迁移/替换 O
第81期 批量抓取数据库中耗时最高的SQL自动生成【Active HTML格式的SQL Monitor报告】
set linesize 300 pagesize 0 SET DEF ^ TERM OFF ECHO ON AUTOP OFF VER OFF SERVEROUT ON SIZE 1000000; SET 
第80期 追踪 SQL 性能随时间变化、执行计划是否漂移、资源消耗变化
先上sql语句,在详细讲解这条sql的作用,下面这条sql,在工作中经常使用。select to_char (b.END_INTERVAL_TIME,'yyyymmddhh24mi') shijian, a.plan_hash_value plan_hash, sum (a.EXECUTIONS_DELTA) execu_d,
第79期 Oracle Buffer Busy Waits 等待事件 P3 参数详解
几年前,OTN 论坛上有人提出了这样一个问题: “谁知道在哪里可以找到所有不同等待事件的原因代码?”有时候问题需要更详细的描述才能避免混淆,否则可能会出现 “答非所问” 的情况。这位发帖者实际上是在询问direct path write(直接路径写)等待事件的 P3 参数含义,而 “原因代码” 这个说法通常让人联想到buffer busy waits(缓冲区忙等待)等待事件。这个帖子最终演变成了对
第78期 Oracle Buffer Busy Waits等待事件深入解读
缓冲区忙等待(Buffer Busy Waits)常见于 Oracle10g、11g,主要原因是向表或索引执行插入操作时产生争用。还有少数其他场景会发生争用:老式回滚段(RBS)、文件头块、空闲链表(freelists)。 在 Oracle10g 之前,还有一大诱因:读进程等待另一个读进程。即一个用户把数
第77期 ogg实现REPLICAT进程FILTER数据过滤
今天的目标是在ogg的目标端通过REPLICAT进程FILTER数据过滤的目的,OGG 过滤函数,满足条件才执行应用到目标库;不满足直接丢弃这条 trail 记录。把过滤后的数据推送到ActiveMQ中。一、语句完整解析主要实现的方式,是在目标端的oggREPLICAT进程中配置如下参数MAP TEST.LCCONT, TARGET TEST.LCCONT,FILTER(@STREQ("
第76期 明明Oracle表LCADDRESS列定义VARCHAR2(80)ORA-12899报错值太大
明明Oracle表LCADDRESS的"COMPANYADDRESS"列定义VARCHAR2(80),但是开发再执行update语句时,还是报错,ORA-12899报错"COMPANYADDRESS" 的值太大 (实际值: 82, 最大值: 80),开发同事使用update更新数据时使用如下sql时收到了ORA-12899的错误。update的sql进行了简
第75期 ORA-27104: system-defined limits for shared memory was misconfigured
oracle在安装过程或者是修改Oracle 启动实例分配 SGA 时,操作系统内核共享内存参数不满足需求,无法申请足够大小的共享内存段。报如下错误:ORA-27104: system-defined limits for shared memory was misconfigured Additional info
第74期 ogg Downstream 集成捕获max_sga_size 过小导致EXTRACT 进程ABENDING
今日在开发一个核心系统库上执行一个非常大的数据库脱敏脚本,由于脚本涉及到40多个表,开发保证要一次脱敏成功,一次,在执行40多个表的脱敏脚本时,不能一个一个表的提交数据,要等待最后一次提交,这样就造成一个非常大的事务。由于这个开发库还使用了ogg同步数据,使用的ogg Downstream 集成捕获方式,因此ogg抽取进程ABENDING,查看ogg的报错信息如下。我猜想应该是事务太大,造成的抽取
第73期 MySQL一条SELECT从回车到返回结果内部经历了什么
大家好,我是酋长彭。今天我们来做一件事情,把你每天都在敲的select语句拆开,看看从你按下回车的那一刻到屏幕上显示结果,mysql有SQL内部到底经历了哪些步骤。理解了这条链路,你对慢查询优化和索引设计的认知就会从背规则升级到懂原理。先看全景图,一条sql从客服端出发,依次经过连接器,解析器,预处理器,优化器,执行器,这五个组件都属于MySQL server,然后通过handler API跨越分
第72期 NULL 字段索引会不会失效?
如果说性能优化是数据库技术中的明珠,那么索引无疑是其中最耀眼的一颗,特别是 OLTP业务数据库。掌握了索引技术,基本上性能就不会有太大的问题。 有时我们创建了字段上的索引,但是通过执行计划却发现索引并没有被使用,还是会 使用全表扫描。随着表上数据量的增长,性能会越来越差。如果不能查明原因,就只能盲 目的靠不断扩容硬件来缓解(不是解决)这类问题,投资巨大,收益甚微。有时实在没办 法,只能通
第71期 通过SQL Monitor 实时执行监控抓取TOP N慢SQL
通过SQL Monitor 实时执行监控抓取TOP N慢SQL,首先上SQLset linesize 300 pagesize 0 SET DEF ^ TERM OFF ECHO ON AUTOP OFF VER OFF SERVEROUT&nbs
第70期 检查大名鼎鼎的SCN 急速增长漏洞的脚本
define LOWTHRESHOLD=10 define MIDTHRESHOLD=62 define VERBOSE=TRUE set veri off; set feedback off; set serverout on DECLARE verbose bo
第69期 自己手写Oracle AWR 近 3 小时 TOP5 非空闲等待事件采集脚本(二)
在上一篇的文章中《第68期 自己手写Oracle AWR 近 3 小时 TOP5 非空闲等待事件采集脚本(一)》我们详细解释了脚本的编写过程。本次主要给大家分享一下使用的案例。一、先给执行环境 + 输出样例1、执行方式复制整条脚本粘贴到 sqlplus / as sysdba 执行,必须开启输出:[oracle@zbyl ~]$ sqlplus / as&n
第68期 自己手写Oracle AWR 近 3 小时 TOP5 非空闲等待事件采集脚本(一)
最近自己手写Oracle AWR 近 3 小时 TOP5 非空闲等待事件采集脚本,用于日常做数据库维护时的小工具,具体的sql如下:set lines 400 set pages 1000 set feedback off set serverout on declare vevent varcha