故障诊断: OceanbaseV3 insert失败”-4184: ChunkServer out of disk space”

最近有个客户在Oceanbase数据库上有套多租户环境,其中某一个租主insert values失败,提示ORA-00600 internal error code , arguments: -4184: ChunkServer out of disk space 错误, 版本V3.2.3,在 OceanBase 中遇到错误 -4184: ChunkServer out of disk space 表示集群中的某个或多个 ChunkServer 节点磁盘空间不足,导致无法执行写入操作(如 INSERT),简单记录排查方法。

性能诊断: PostgreSQL系中数字类型隐式转换导致无法使用索引

在oracle数据库同样也会出现因为隐式转换导致的索引无法使用,但是在PostgreSQL系的数据库中如kingbase, highgoDB, GaussDB, openGauss等,对于对于常用的“数字”对应多个datatype,增加了转换的概率,近期在一套oracle迁移到某国产postgresql系数据库后,之前一个正常高频执行的SQL把数据库CPU瞬间拉到了70%, 如 numval>=power(10,19) 未在索引列使用索引,下面记录这一问题。

性能诊断PostgreSQL中attach partition越来越慢一案例?(pg_partman)

分区表(partition)在大型数据库中是较为常用的技术,PostgreSQL中 v10版本后支持了原生分区语法,之前多是约束注册方式,v11后又至此了default分区,近日一客户反馈他们的PostgreSQL在分区使用pg_partman管理分区增加空分区时越来越慢(≈3sec一个分区), 这里简单记录原因。

2025年修了一套oracle 9i(9.2.0.7)的库

最近帮一位朋友查看一套老旧业务系统的问题,登录环境一看,竟是二十多年前的经典组合:Sun 小型机、Solaris 8 操作系统和 Oracle 9i 数据库。主机的 CPU 和内存配置以现在的眼光来看非常有限,但令人感慨的是,就是这样一套资源拮据的系统,却在某大型国企的核心业务中稳定运行了这么多年。

达梦如何开启SQL慢日志跟踪?

在达梦数据库中,虽然尚未提供完全对等的细粒度跟踪机制,但同样支持类似慢日志记录功能。通过开启相关库级日志,可将关键执行信息记录到日志文件中,包括:, 事务、执行时间、执行用户、客户端IP、SQL文本,客户端工具等会话信息。随后,可使用达梦提供的 dmlog 工具对日志进行分析(支持异地分析),并生成可视化图表。分析结果可按执行时间、逻辑读、物理读等维度排序,呈现类似 Oracle AWR 报告中的“Top SQL by XXX”视图,便于快速识别性能热点 SQL,辅助应用优化与问题排查。

OGG ERROR OGG-02650 Source wildcard specification .* does not include a catalog name

最近一个朋友在测试Oracle GoldenGate(V12)从oracle 19c到kafka同步时,extract, pump进程都正常,extract有抽取到,但是pump进程running无投递数据。在我修改pump进程从某文件的时间开始后,再次启动终于提示了错误信息:

ERROR OGG-02650 Source wildcard specification USER1.T1 does not include a catalog name, but the source table name PDB1.USER1.T1includes a catalog name.

达梦数据库日志挖掘(Similar to Oracle logminer)

众所周知数据库的DML操作会记录在REDO日志中,如果开了归档REDO可以存储的更久,有时当闪回查询无法使用,或需要从日志中挖掘过去某操作时间或操作人信息,做恢复依据。在oracle提供数据库挖掘logminer使用dbms_logmnr, 在国产数据库达梦中同样支持,而且语法和oracle几乎一样。

Oceanbase中的 Optimizer trace Event (Similar to Oracle 10053 event)

前一篇记录了《Oceanbase中的Session SQL Trace DBMS_MONITOR (Similar to Oracle 10046 event)》, 这里我简单记录Oracle 诊断SQL问题时的另一个常用event 10053在Oceanbase中的体验, 对应的是dbms_xplan.enable_opt_trace(); 使用SET_OPT_TRACE_PARAMETER 配置当前session。下面记录如果OCEANBASE 优化器没有产生预期的执行计划时,如何使用trace跟踪生成更多的诊断信息。

Oceanbase中的Session SQL Trace DBMS_MONITOR (Similar to Oracle 10046 event)

在oracle中诊断session级SQL执行跟踪是最常见的SQL Trace的方法有很多,如sql_trace、10046 event, DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION, DBMS_SUPPORT.START_TRACE, DBMS_MONITOR.SESSION_TRACE_ENABLE 还有Oracle 11g 后更加灵活的Events++ 语法, 甚至还有围绕trace file 解读的一堆工具,如trprof, TRCSESS , tvdxtat, 10046.pl, orasrp等工具。但在国产数据库中生态工具并不完善,之前记录过达梦的10053 event, 这里简单记录Oceanbase 数据库中配置 session SQL Trace使用DBMS_MONITOR的方法OB_SESSION_TRACE_ENABLE,功能基本雷同Oracle DBMS_MONITOR的 SESSION_TRACE_ENABLE.

如何查找其他session级alter session set修改的参数? Oracle 和Kingbase/HighgoDB(PostgreSQL)

ALTER SESSION命令会更改运行时配置参数,仅影响当前会话使用的值,对其他会话或系统级没有影响,有时需要知道某个会话当前的session级参数,在oracle中比较方便,目前postgresql及基于postgresql的国产库如Kingbase、Highgodb中不太容易,这里我演示gdb的方法。

存储磁盘测试工具fio和dd常用场景

Linux 系统中有多种工具可用于测试存储设备的 I/O 性能,以下是主要是OS一般自带的dd或FIO (Flexible I/O Tester),因为数据库是一个对I/O敏感的应用软件,对于云上或虚拟环境有时存储性能不理想,通常需要工具在上线前做基准测试,避免上线后出现数据库性能问题,最近有个客户咨询生产一套达梦DMDPC环境在某云环境IaSS上,业务反应慢的无法接受,怀疑I/O不是很理想, 这里记录几个常用的命令。

Oracle迁移到Oceanbase加密数据注意事项

最近有个项目上oracle迁移到ocenabase,但是应用中使用Oracle的数据库内加密函数,数据库中存储的是加密数据,这里有两个注意事项,首先是对于加密函数是否兼容,其次是数据库内的加密数据,如何同步及同步到目标库后已加密码数据能否解密的问题。

Oceanbase 分布事务XA注意事项

Oceanbase中使用 XA 功能时,事务管理器将使用 XA 资源实例来准备和协调每个事务分支,然后适当地提交或回滚所有事务分支。XA 功能的关键组件包括 XA 数据源、XA 连接、XA 资源和事务 ID。概念参考分布式事务概述.
在早期的OB V3版本存在一些问题,如XA异常返回值未被应用捕捉,而影响了业务一致性逻辑;和连接未释放或事务未正常结束问题,尤其在使用oceanbase-client-2.4.7.1驱动时。

在数据库国产化改造后,为什么运维人员需要增加?

最近时常有些负责数据库运维客户或企业的IT管理者开始为国产化后的运维配置担忧,会咨询我们做的快的行业客户,他们现在运维几个人?已经察觉到国产化带来的运维复杂度提升,希望我们列几个“理由”,解释国产化改造后为什么需要增加运维人员,说服高层管理者,因为部分高层对国产的认识是来自原厂或标杆成功案例的宣传,继续逐年“降本”减少运维投入。

Oracle GoldenGate Parallel Replication

Serial apply =使用1个apply会话应用, 但是源数据库:有多个连接和多个并发事务, 这样会存在多个生产端一个消费端,这样串行应用因为无法扩展,当源库事务量大时,应用端会出现应用慢,同步延迟增加的现象。

OGG也一直在该方向创新,以提升速度,如抽取端可以使用集成抽取,可以拆成多个抽取任务,应用端可以手动拆成多个应用进程, 和Integrated Replicat、Parallel Nonintegrated Replicat、Parallel Integrated Replicat。

HighgoDB (PostgreSQL)利用pg_trgm的gin索引优化前后模糊查询

在数据库中文本的模糊查询是ES等数据库的强项,但在关系型数据库中也有一些手段,如后缀%普通索引就可以使用,前缀可以创建reverse反转索引,但是前后模糊的话,在oracle中可以创建索引使用index full scan+加回表查询,今天发现在PostgreSQL中还有pg_trgm扩展,配合GIN索引有不错的性能表现。

HighgoDB (PostgreSQL) %SYS CPU newfstatat() high 调优一例(终篇)

前不久整理了一《HighgoDB (PostgreSQL) %SYS CPU newfstatat() high 调优一例》, 这个问题还在持续,并且原因并不只是一个,从调了文件系统级atime,到调整wal size减少日志被动清理,还有在验证temp 文件,这里后来又发现了sysdate函数的timezone调用,简单记录。前面有提到是newfsatat()函数产生的system CPU, 用于文件验证…

Troubleshooting Oracle RMAN duplicate Dataguard failed with ORA-17628 19505 ORA-27040

最近有个客户在1个40多TB的AIX 平台Oracle国产化改造项目中,配合创建Oracle dataguard 时失败,当使用 RMAN 进行数据库复制(duplicate)操作时出现此错误,提示 ORA-17628 19505 ORA-27040错误,ORA-27040 错误是 Oracle 数据库在尝试访问文件时遇到的 I/O 相关错误,简单记录。