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 相关错误,简单记录。

, , ,

Troubleshooting Oracle 19c RAC DB crash after ora-600 [kjblpgorm:!antilock] and start fail with Ora-600 [kfmdPriRegRclient04]

最近有个客户的oracle 19c 3nodes RAC 有一个节点意外crash ORA-600 kjblpgorm:!antilock, 启动时报ORA-600[kfmdPriRegRclient04],并启动过程中重导致之前的幸存节点hang并且重启,Oracle 的基础版本bug 比较多,找我分析并临时解决了该问题,简单记录该问题。

, ,

Alert: PostgreSQL JDBC 记得配置Fetch Size

在使用PostgreSQL JDBC处理大型结果集时,正确配置fetch size对于优化性能和内存使用至关重要。最近我们在国产化改造过程中总有一些差异导致应用性能问题,有时不只在数据库还可能在驱动中,如分页查询或其他OLTP场景,我们总希望尽快的返回结果,这里我分享一下Oracle和Postgresql JDBC 默认fetchsize 从服务向客户端发送数据的差异。

,

PL/SQL run error after Migrate Oracle from Windows To Linux using dataguard switchover

oracle支持一些异构平台的dataguard,如Windows 到Linux, 在做了平台迁移后可能会出现一些PLSQL 对象执行报错的现象,如ora-7445 type: SIGsEGv, Address not mapped to object或ORA-600 [PL/SQL Native Code: Wrong Platform] Errors, 是因为plsql对象在Windows是可能已编译为NATIVE本地机器码,换平台后不认证,简单记录解决方法

Troubleshooting Oracle Top event ‘gc index operation’

今天一个客户的oracle 19c(19.17)环境显示top event中出现了一个比较稀奇的event ‘gc index operation’, 也可能是12cR2 RAC新特性”fast index split wait”引入的相同问题, 19c前已知bug常发生成 BASICFILE LOB 对象上,仅记录.

How to Expdp Unified Audit Trail(AUDSYS.AUD$UNIFIED) in 12c 19c ..

我们可以使用datapump进行 Oracle 的 AUDIT 审计记录导出到其它库,但是导出时有一些限制,使用expdp或exp可能会提示ORA-39166或EXP-00064错误, 如之前审计记录在sys.aud$,使用了统一审计后,记录在audsys.AUD$UNIFIED。导出方法一样,仅记录。

Oracle database Life Cycle Support 23ai, 19c,18c, 12cR2, 11g

好久没有关注oracle database服务支持周期,最初还是到2025年结束,今年就要过期了吗?显然数据库发展已经进入了成熟期,或没有那么多的新功能需求,大版本的更新周期延长终止了过去每4年一个大版本的神话,oracle 19c发布已经6年了,最近才发现oracle一个重要更新,自 2024 年 11 月 19 日起, Oracle Database 19c 的支持时间表已进行调整。查看MOS 说明:742060.1 – 当前数据库版本的发布时间表,19c又延长了服务支持周期到2029-12-31, ES 到2032年

改变操作系统时间对Oracle RAC的影响

在服务器运维中,由于未配置NTP服务或存在CPU时钟精度问题,操作系统时间常会逐渐产生偏差。当需要修正这类时间差异时,通常希望在不停库的前提下完成操作以避免影响业务。
对于采用本地文件系统的Oracle单实例数据库,时间修正主要风险在于业务逻辑中若直接调用SYSDATE函数,可能导致事务时间戳跳跃(如业务单据时间异常),但一般不会影响数据库可用性。然而在Oracle RAC(Real Application Clusters)环境中,时间同步问题可能引发更严重的后果——包括集群实例崩溃和强制重启。

How to release still “killed“ status session in v$session? (释放killed的session) (五)

继续oracle “killed” 状态的session无法释放的问题,持有的锁可能会堵塞业务,之前有几种情况可以尝试,也有需要要重启实例才能解决的,这里再记录一种oracle 19c RAC的case, “killed” session在操作系统层的进程已不存在。在数据库中尝试kill session也无法正常清理,后台清理进程无法自动清理。

Troubleshooting Oracle 19c RAC a PDB open failed to start with terminating the instance due to ORA error 481

最近一个比较新鲜的案例,环境ORACLE 2-nodes RAC,有3个PDB 多租户架构,在节点2在仅做了某1个PDB级的PGA大小参数后,实例2 crash,并且,重启node2 db instance后,逐个open PDB, 仅当open 此PDB时,实例2会再次crash, 并提示错误:
2025-04-15T12:33:53.433625+08:00
Errors in file /u01/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_lmon_50145.trc:
ORA-29740: evicted by instance number 2, group incarnation 121

, ,

Oracle Data Pump Best Practices Speed UP

Exporting BasicFile LOBs can be quite a pain. If your maintenance window is too short, here is a way to make the export faster.When Data Pump starts to export a table with a BasicFile LOB, only one worker will be assigned (due to the limited parallel access methods). If you have a large table, it will take a lot of time for that one worker to process the table.

, ,

Troubleshooting Oracle Wait Chains ‘buffer busy wait’、’log file sync’、 ‘enq: CF – contention’ during RMAN backup

最近一个客户的数据库出现了短暂1分钟左右的高负载,环境为oracle 11.2.0.4 2nodes RAC , 看当时的top event主要是buffer busy wait和log file sync, 关于buffer busy wait 在Troubleshooting Oracle wait event ‘buffer busy wait’ 有记录过分析方法,是一种hot block现象, 而log file sync又是提交类的,当两者同时发生时,可能是后者影响前者,首先建议排查I/O, 而另1个节点此时正在做RMAN增量备份,简单记录该问题.

, ,

Troubleshooting Oracle 19c RAC bug ORA-00600 [krccfl_chunk] When Block Change Tracking enabled

最近遇到一客户一套Oracle 19c(19.13) RAC 所有实例在提示ORA-00600 [krccfl_chunk] crash,并且无法启动,该问题发生前提是启用了Block Change Tracking,但并不是它的问题,而是前一天做了一个增加表空间的错误操作,如果有低于19.17的RAC数据库,并且启用了BCT时,注意这个未公开的bug,如果加文件人为失误. 可能会导致您所有的业务中断,这里简单记录。

,

Oracle 19c wait ‘cursor: mutex x’ and SQL high version count due to ROLL_INVALID_MISMATCH

最近一套oracle 19c的环境出现较高的cursor: mutex x等待,查询SQL ID有近4000+ version count, 从12c “_cursor_obsolete_threshold “参数值达8k,所以这么高的version也未过期,cursor: mutex x是因为version count高引起,哪什么引起high version count呢?MOS上有一篇比输全面的doc. 通过 v$sql_shared_cursor可以发现主要是USER_BIND_PEEK_MISMATCH和ROLL_INVALI

从数据库管理角度聊聊AI医疗

2025年初,DeepSeek 作为一家专注于大规模深度学习模型研发与部署的前沿企业,以其卓越的技术突破,推动了大模型智能应用在多个领域的蓬勃发展。其成功不仅证明了人工智能的强大潜力,众多大模型的崛起,也为AI与医疗的深度融合提供了更广阔的想象空间。如可以提高疾病诊断的精准度,加速药物研发,推动个性化治疗方案的发展等。此外,AI还能改善医疗管理效率,提升了医生的工作体验,同时增强了患者的就医体验。那AI医疗和数据库还有关吗?

如何配置Oracle Gateway 到MySQL?

oracle 的gateway透明网管支持像oracle dblink一样访问异构数据库如mysql, sql server等,在十四年前当时在维护oracle和sql server时,安装配置过还写了个整理了《安装透明网关 for sql server》,时间过的真快,没想到这次oracle的交接已经全面展开,在过渡阶段可能会存在一些异构数据库的访问,使用 Oracle ODBC 网关和异构服务技术从 Oracle 系统访问 MySQL 数据,本文介绍如何使用 ODBC Driver for MySQL 创建MySQL 和 Oracle 的数据库链接,并通过 SQL*Plus 工具查询 MySQL 数据。

What is new in Oracle Database 23ai VS 19c?

这前总是通过 修改optimizer_feature_enable为不同版本,然后对比级联的参数变化,比较不同的数据库版本之间的参数差异,在Oracle 有个 ORAdiff app: https://oradiff.oracle.com/ 你也可以自己查询。

OGG Integrated replicat process Abend with error Ora-4031 “streams pool” “apply shared t”,”commbuf_knasctx[0]”

在 Oracle GoldenGate 中使用集成模式时,STREAMS_POOL 起着至关重要的作用。集成进程从“STREAMS POOL”获取共享内存。STREAMS POOL 是 SGA 的内存组件之一。STREAMS_POOL_SIZE 的大小应根据数据库系统中使用的集成提取的数量来确定。我们还应该考虑在数据库中使用 STREAMS POOL 的其他进程。最近一个案例ogg异常报错,因ora-4031 streams pool不足,简单记录。

, ,

如何在 PostgreSQL中强制Join连接顺序?

在oracle多表关连中有SQL hint可以干预CBO产生的不合理的表join顺序,如ordered, leading等,但PostgreSQL和部分基于PG国产数据库如Highgo V9.5, 目前也还不支持SQL hint。当遇到SQL性能问题,明确某个join 顺序更好时,如何影响PG数据库优化器执行指定的执行计划呢?如果您真的需要SQL hint,在pg中可以安装 pg_hint_plan 扩展,但目前应该是因为highgo的oracle和pg的双兼容模式,如果实现pg_hint_plan在解析器上隔离上要复杂了些,所以暂未实现,又或者不想安装第三方扩展,在这种情况下,记录几个可以强制执行join ordered的替代方法。

, ,