- 博客(46)
- 资源 (25)
- 收藏
- 关注
原创 性能优化-失败的SQL改写
SQL优化案例总结:针对统计交易商户数的SQL查询,原执行耗时15分钟以上。优化过程中发现:1. 索引使用不当反而降低性能,强制全表扫描后效率提升88%;2. GROUP BY与DISTINCT效率对比需结合实际数据验证;3. HASH JOIN比排序合并连接更适合大数据量关联。最终通过指定FULL提示优化执行计划,将查询时间从15分钟缩短至2分钟内。关键结论:索引并非总是有利,连接方式的选择对性能影响重大,优化需结合数据特性和执行计划分析。
2025-08-21 08:45:00
1280
原创 性能优化-不合理的索引
文章摘要:作者在处理交易统计查询时发现原SQL执行效率低下,在主备库均出现全表扫描耗时2小时。通过创建索引优化后,执行时间反而增加80%,对比发现HASH JOIN比索引嵌套循环更高效。分析指出HASH连接适合大数据量关联,而嵌套循环依赖索引且适合小结果集。文章还探讨了SELECT操作产生redo日志的多种原因,如延迟块清除、读一致性维护等。最后提出索引优化并非万能,并对备库与压测库性能差异及redo生成原因存疑,寻求读者交流解答。
2025-08-20 10:00:00
979
原创 Char与Varchar2 的使用共识
摘要: 项目评审时发现开发人员对CHAR和VARCHAR2类型的特性认知不足。开发将CHAR(1)改为CHAR(2)后,因定长类型自动填充空格导致程序逻辑错误。紧急修复方案包括:将字段改为VARCHAR2(2),用正则剔除旧数据的空格,并通过MERGE更新。总结了两者的核心差异:CHAR适合固定长度数据(如编码),VARCHAR2更高效灵活。建议加强基础培训,将技术常识转化为团队共识,以减少类似问题。最终通过案例测试验证解决方案,确保团队理解数据类型的选择逻辑。
2025-08-20 08:45:00
345
原创 这是关于Oracle碎片的文章
Oracle数据库碎片问题分析与解决方案 摘要: 本文分析了Oracle数据库中碎片产生的原因及其影响,包括表碎片和表空间碎片。碎片主要由频繁DML操作导致,会造成存储空间浪费和性能下降。文章详细介绍了检测行迁移/链接的方法,并提供了多种解决方案:1)在线重定义(dbms_redefinition);2)表迁移和索引重建;3)Shrink命令整理碎片。通过测试验证,Shrink操作能有效减少碎片,其中完全收缩可降低高水位线并显著提升查询性能。最后建议优先考虑在线重定义方案,并提供了碎片检测的SQL脚本。
2025-08-19 19:51:31
875
原创 OR+DBLINK的关联SQL优化思路
摘要:本文针对一个包含多个OR条件和DBLink的复杂SQL查询性能问题进行分析,该查询涉及5张表(数据量从4k到79w不等),执行耗时近3小时。通过排除DBLink干扰后发现主要问题:NAME_LIST表全表扫描和高达4682万次逻辑读。提出三种优化方案:1)使用CTE+MATERIALIZE提示物化临时表;2)UNION ALL拆分OR条件;3)添加索引。测试表明创建组合索引(SOURCE,TYPE,TAG)效果最佳,显著提升性能。文章对比了不同优化方法的优缺点,强调应根据实际场景选择最适合的方案。
2025-08-19 19:39:58
851
原创 案例-索引对于并发Insert性能优化测试
普通索引和分区索引(尤其是本地分区索引)在索引分裂时的行为存在显著差异。2、单节点比双节点插入效率-50%左右,原因为双节点分摊了并发压力,相关于单节点的:并发50,40w的数据插入,因此双节点要比单节点同样的压力要更优。原因分析:Insert 语句导致:直接复制表中的单条记录,然后对唯一索引字段修改为UUID值,日期字段为:sysdate,其它字段为固定值。索引字段有3个索引值为Null(索引无操作),另一个索引插入的值为固定值(无法做到IO分散),仅唯一索引的值为UUID(有效果)。
2025-04-14 22:26:32
1056
原创 AI与我共创WEB界面
数据库连接配置# 压测用户# 负载监控用户整个代码比较简单,基本80%都是由AI生成,剩下20%自己与AI对话完成调式,以上功能实现耗时1天。这次折腾让我发现,AI不是来取代程序员的,倒是特别适合我这种"脚本小子"。为我们DBA实现一些简单的运维工具,一定要适应时代的产物,使其为自己赋能,避免被时代所淘汰。此次开发只是简单的实现功能,后续会增加各种数据库的操作选项,及针对不同数据库的不同参数进行监控,逐渐锻炼自己与AI的沟通,从而完成自己的需求。
2025-04-14 22:21:37
565
原创 DeepSeek 为我赋能 Python 编程能力
1、个性化很强,思路很清晰,同时也为我提供了更多思路;2、代码很全面,密码安全(我都没怎么考虑);3、很惊艳;
2025-02-17 20:07:51
837
原创 Oracle Rac 多路径链路不稳定引发IO降速-光弱
1、对日志的巡检不是很到位,本来查看系统日志就能快速的定位问题。(当时同事表示看过日志没有任何报错,必定同事也是10年经验的老DBA了,主观了忽略了第一时间去查看系统日志。2、对多路径认识不到位,浅意识认为:4条路径坏1条的话应该不会影响IO,谁成想这种半死不活的状态最要命。
2025-02-17 20:07:22
625
原创 AI协助处理-罕见的Oracle内存溢出
最近刚在客户的私有云主机部署了一套Oracle DG环境,昨天开发联系我说数据库有问题连上不去了。我上机器排查发现晚上22:00 alert 日志报好多进程超时,因为环境还未投产目前仅是开发测试阶段,又是22点出现的异常,怀疑是不是客户导的表数据太多,数据库自己的维护任务卡住了。排查了一圈都没找到问题原因,没想到AI为我指明了思路。根据AI提供的思路,排查HugePages配置及使用情况。欢迎赞赏支持或留言指正。alert 日志报错。服务器重启,库未启动。
2025-02-06 13:39:58
815
原创 一次报警了解:direct path read、enq: KO - fast object checkpoint
经与开发人员确认,是因为有客户批量处理订单导致性能SQL:“f9h1zk5z96gqv”的全表扫描20G的并发量过大,从而导致等待事件直接路径读取(direct path read),而direct path read 是需要将数据从磁盘读取到各session 的PGA中,因为不是读入SGA, 所以读取这些表之前需要在所有数据库节点(如果是RAC)触发object level checkpoint,将这些表被修改过的dirty buffer写入磁盘,以保证读取数据的一致性。----- 经验在于多沉淀。
2025-02-06 11:19:14
983
原创 Oracle PMON进程清洗功能
1,在进程非正常中断后,做清理工作。例如:dedicated server失败了或者因为一些原因被杀死,这是PMON的工作分两种。第一,是对dedicated server所做的工作进行恢复或撤销。第二:是释放dedicated server占用的资源。PMON会把失败进程的未提交的工作进行rollback,释放锁,释放SGA空间2,在进程abort后,PMON进行清理工作。PMON会监视oracle其他的后台进程,并在需要的时候对它们进行重建。
2025-01-28 11:00:00
900
原创 深夜惊雷.客户炸群
联系机房更换了硬盘没一会又故障了,联系厂商需要现场排查问题,考虑到业务不能再等了,于是领导决定启用备库恢复业务,RAC环境继续维修,如果能抢修过来到时候重做DG-RAC再切回来(此次领导与甲方沟通环节略)。深夜一声惊雷,窗外,大雨倾盆而下,雨滴噼里啪啦地打在窗户上,拿起手机一看,2套Oracl RAC 集群同时宕掉了,信息还在不停的刷新着。,当时方向指向了光纤交换机或存储,于是赶快给我们的存储工程师打电话确认,让其确认光纤和存储状态。注:为啥2套RAC一块宕,因为用一了套存储。三块硬盘状态都故障了。
2025-01-27 10:00:00
332
原创 恢复搭建STANDBY-RAC细节满满
深夜一声惊雷.客户炸了群,2套数据库都由原来的RAC切换到了备库(单点),考虑业务的高可用性,因此计划恢复原来的RAC环境。 首先将搭建STANDBY-RAC,然后再做一次Failover切换将STANDBY-RAC切换为主环境。 切换过程:ORACLE-主备备-Failover,此次单独简述STANDBY-RAC的搭建过程。
2025-01-27 09:30:00
628
原创 ORACLE-主备备-Failover
随着业务的不断增涨,至使现有的单节点DG环境的连接已经无法满足当前业务需求,并且随着业务的重要性,同时也要求数据库的高可用性,减少数据库故障对业务的影响。注:Failover 操作后并不会破坏它下面的备库关系,断开的原主无法再挂回到Standby-RAC 当备库(SWITCHOVER可避免)1、Primary 断开与 Standby 连接。2、Standby-Rac 各节点创建TNS。2、Standby-Rac 查看同步状态。3、Standby-Rac 调整。4、Standby 调整。
2025-01-26 19:41:35
1415
原创 SQL在DBA手里-改写篇
交易毛利表:仅记录每天毛利数据线下订单表:记录线下订单情况线上订单表:记录线上订单情况SQL在其它部门的作用是以实现需求为主,但在DBA手里需要考虑在不改变需求结果的前提下,要让SQL更具有可读性及良好的性能。
2025-01-26 16:52:02
837
原创 SQL在DBA手里-变快篇
如下对话,在协助运营出全年汇总数据时,遇到关于TO_DATE与TO_TIMESTAMP两个函数执行效率不同的情况。2.4、TO_TIMESTAMP:字段类型【TIMESTAMP】了解更多的Oracle运维案例关注:微信公众号:布衣530。2.1、TO_TIMESTAMP :字段类型【DATE】2.3、TO_DATE:字段类型【TIMESTAMP】2.2、TO_DATE:字段类型【DATE】扫描方式:INDEX RANGE SCAN。扫描方式:INDEX RANGE SCAN。
2025-01-26 11:45:00
454
原创 SQL在DBA手里-变装篇 (9亿+表自关联)
在每天的AWR报告巡检中发现一性能SQL情况,发现 db file sequential read等待事件消耗在User I/O,再看SQL有个UPDATE语句16.81%的IO消耗,然后再查看这张表的数据达到了9亿+,大表还自关联,头痛来袭。数据恢复: STATUS= ‘Y’ => STATUS=‘N’了解更多的Oracle运维案例关注:微信公众号:布衣530。使用过程完成对固定数据的更新,对比效率。性能SQL(已做脱敏处理)Cost提升了1747+倍。变装前后性能对比(测试)测试查询(加索引)效率。
2025-01-26 09:21:23
676
原创 数据裁剪偶遇【enq: TX - index contention】
可以认为一个session在向一个索引块中执行插入时产生了索引块的split,而其它的session也要往该索引块中插入数据,此时,其它session必须要等待split完成,由此引发了该等待事件。裁剪任务每月凌晨自动执行,今天正好是裁剪任务执行完成,开发反馈:“裁剪任务期间订单失败率偏高”,根据开发提供的时间段查看执行日志,发现当时正是在裁剪:AATD_DTL(脱敏处理)表。Hash索引:pk_t3_hash_id。1、创建分区表:T1;索引:pk_t1_id。8、T1、T3 1小时AWR报告对比分析。
2025-01-25 08:34:44
699
原创 索引:Rebuild Online 被坑的知识点-ORA-08106
最近一直通过rebuild online 做索引碎片整理,因表均为分区表,大部分为本地索引及分区索引,有的表涉及上千个索引分区,于是我就用脚本放在后台执行了。分区从凌晨4:29开始到中午12点都还没有结果,意识到执行不正常,查看了下索引涉及到的数据有数据正常入表,数据也可查询,目前看不影响此表的dml操作。注:以下结果是被验证N次后,Rebuild Online 和 Insert 执行1小时以上再Kill会话,才会偶尔出现。【注1】:插入表任务影响到了rebuild online操作。
2025-01-25 08:06:29
1102
原创 Oracle-Java JDBC 连接超时之后的认知纠正
今天正好有国产数据库工程师师给我们培训的时候也提到了这一点,表示:“JDBC连接ORACLE,在断开连接时会把未提交的事务进行提交,在Oracle 23ai版本进行了修复,其它数据库都是回滚事务。通过文章的测试JAVA程序,可以表明,JDBC中的语句超时,只会使当前的SQL中止运行,但如果是在一个事务中,之前运行的DML语句并没有提交。复现一下熊老师的测试,实践出真知。了解到:JAVA代码的最后正常断开数据库连接,在默认情况下,正常断开的数据库连接会自动提交没有提交的事务。欢迎赞赏支持或留言指正。
2025-01-24 17:22:26
1404
原创 Oracle Rac 集群文件目录迁移
一、rac 环境修改spfile位置二、控制文件路径修改三、数据库表空间迁移四、redo 文件迁移五、数据文件迁移
2022-07-27 21:53:45
669
原创 记录一起索引rebuild与收集统计信息的事故
一、背景:业务核心数据库每月定期做数据裁剪(保留一年数据),表中的索引存在大量的碎片。最近业务低迷,因此想为索引rebuild整理碎片。 因涉及的表都是业务订单大表(分区表),涉及分区索引,每个分区索引操作均为20-30分钟不等。为了不影响生产DML操作,采用rebuild online 方案操作。 自己写了一个脚本,将拼接好的rebuild online SQL文本放在sh 脚本执行,使其24小时执行。当时考虑业务本身是平时的1/10,又加了online 操作,因此不会影响生产。 没想到在
2022-05-27 09:59:46
302
原创 Oracle_索引重建—优化索引碎片
– 查询是否需要重建索引:– 分析索引的数据块是否有坏块,以及根据分析得到的数据(存放在index_stats)來判断索引是否需要重新建立。SQL> analyze index 索引名称validate structure;validate structure有二中模式: online :(默认)会对表加一个4级別的锁(表共享),对run系統可能造成一定的影响。 offline :没有表lock的影响,但当以online模式分析时, 在视图index_stats没有统计信息。从.
2022-05-02 19:55:02
764
原创 Django 学习实例 第四节:实现列表的增删改查
一、界面列表:二、增加:三、删除三、修改四、搜索:五、部分代码:模型:modes.pyfrom django.db import models# Create your models here.class DBINFO(models.Model): id = models.AutoField(primary_key=True) dbname = models.CharField('数据库名称', max_length=32, defau.
2022-04-30 16:35:29
645
原创 Django 学习实例 第三节:实现城市级联查询
1、实现效果:2、数据导入到mysql数据库中:城市区域数据_存放一张表district-Linux文档类资源-优快云文库导入mysql数据库:pydbSQL>select * from district where upid=1;id |name|level|upid|---+----+-----+----+ 35|北京市 | 2| 1|SQL>select * from district where upid=35;id |name|level|up
2022-03-06 18:36:53
726
原创 Django 学习实例 第二节:实现web页面增删改查
一.准备模板文件,创建模板目录1.在项目目录下创建templates模板目录2.进入模板目录templates,在模板目录下创建应用名mytest的目录3.进行mytest目录,在里面创建一个users目录4.进入users目录,在里面创建文件:index.html,add.html,edit.html,info.html编辑:add.html<!DOCTYPE html><html lang="en"><head> <me..
2022-03-04 20:51:53
500
原创 Django 学习实例 第一节:创建项目
1.创建项目:web和应用 WebAppdjango-admin startproject web1.1切换到项目目录:cd web/1.2在项目中创建一个mytest应用python3.6 manage.py startapp webapp2.执行数据库连接配置,网站配置:import pymysqlpymysql.install_as_MySQLdb()2.2编辑web/web/settings.py文件,配置数据库连接#配置自己的服务器ip地址:AL
2022-03-04 15:30:03
585
原创 python实现Oracle/Mysql ETL 导入greenplum 使用说明
一、配置文件 :config 参数说明:[Path]#脚本解压目录Path = /home/kettle/PyETL/[Url]#源URL:支持Oracle / Msql #Oracle 源SrcUrl = {'dbtype':'oracle','user': '用户名','passwd': '密码', 'tns': 'ip:1521/server_name', 'encoding': 'utf-8'}#mysql源#SrcUrl = {'dbtype':'mysql','us
2022-02-28 15:04:10
1029
原创 Oracle 导入jar包:ora-29532
加载JAVA包loadjava ‐u 用户名/密码 ‐v ‐resolve jar包.java**删除JAVA包:dropjava ‐u 用户名/密码 ‐v jar包.javajava 引用报错需要加权限 :SQL>GRANT EXECUTE ON dbms_crypto TO 用户名;SQL>GRANT EXECUTE ON dbms_java TO 用户名;SQL>此处省略创建sm4_encrypt函数SQL> select sm4_encrypt
2022-02-18 11:36:31
1267
原创 《终日打雁,叫雁啄了眼》-- Error is 16047
DG搭建过程中一直报错:Sat Feb 12 15:50:09 2022 PING[ARC2]: Heartbeat failed to connect to standby 'standby'. Error is 16047. Sat Feb 12 15:51:10 2022 PING[ARC2]: Heartbeat failed to connect to standby 'standby'. Error is 16047. Sat Feb 12 15:52:10 2022 PING[ARC
2022-02-12 16:36:54
834
原创 DG 每周一至周五 上午10点 同步延迟报警
背景生产数据库异地灾备环境,因专线带宽问题,经常出现DG同步延迟的问题,因为报警异常在夜里、周六日、上班时间段。痛点在休息时间段报警影响休息,同时容易忽略严重报警。脚本实现#每周一至周五上午10点至11点同步异常报警,其它时间段不报#每周一至周五week=`date +%w`if [ $week -gt 0 -o $week -gt 6 ];then #上午10点至11点异常报警 hour=`date +%T | awk -F':' '{print $1}'`
2022-02-08 10:41:09
2044
原创 19c 密码文件报错:OPW-00029:
报错[oracle@localhost dbs]$ orapwd file=/u01/oracle/19.2.0/product/dbs/orapwtwocdb password='oracle' force=yOPW-00029: Password complexity failed for SYS user : Password must contain at least 8 characters.原因:这是因为Oracle 增强了密码验证函数:ora12c_verify_funct
2021-09-24 09:31:34
2431
原创 集群删除数据组更新残留信息(CRS-2640报错)
操作溯源:删除了一个磁盘组(NEW_ASM_DATA)后没有及时在crs里更新,这样当你重启crs后 db不会起来,因为crs里仍然记录以前的 diskgroup操作命令如下:-- 所有节点卸载数据组alter diskgroup ASM_NEW_DATA dismount;-- 强制删除drop diskgroup ASM_NEW_DATA FORCE including contents;报错:-- 通过集群启动数据库[grid@test010rac0..
2021-09-23 13:39:35
466
原创 ORA-00376 & ORA-01110
-- 报错:ORA-00376: file 10 cannot be read at this timeORA-01110: data file 10: '+NEW_DATA/test/datafile/test_dat.262.1083956499'-- 查看数据文件状态:SQL> select file#,status from v$datafile where status = 'OFFLINE'; FILE# STATUS---------- -------
2021-09-23 09:46:24
969
记录一次隐含参数也不好解决的备份恢复.pdf
2021-11-07
oracle数据同步到Greenplum的python脚本
2021-08-31
greenplum数据库扩展分区函数.rar
2021-08-26
oracle_监控脚本.rar
2022-01-08
glibc2.14 .rar
2021-11-24
【数据库同步】Oracle GoldenGate实现Oracle到PostgreSQL的数据同步:安装配置与问题解决
2025-08-20
【数据库性能优化】Oracle与Python并发Insert测试:优化索引结构提升订单表插入效率及并发处理能力
2025-04-08
Oracle RAC部署 STANDBY RAC
2025-01-26
DG standby-time 监控脚本
2022-11-09
Oracle Rac 集群数据文件改变目录操作
2022-07-27
oracle DBA_TAB_MODIFICATIONS 刷新
2022-07-08
Greenplum底层是postgresql,客户端自然也是psql。由于psql本身不支持通过参数来指定密码进行登录,所以需要
2022-07-08
python+Django+layui 实现web 列表增删改查
2022-04-30
Spacedesk PC端是一款非常实用的分屏软件,支持跨平台,包括Windows、Mac、Android及iOS等多个平台。
2022-03-05
城市区域数据_存放一张表district
2022-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
4