Troubleshooting Oracle RAC hang due to DBreplay capture write wcr file on NFS

我之前写过一篇关于的文章。在将 Oracle 迁移到国产数据库的过程中,为了进行负载重演,一些国产数据库需要在 Oracle 源库上进行 DBReplay 的 capture。然而,这种操作对源生产环境会带来一定风险,不仅有 license 商务风险,还存在可用性风险,比如空间或性能问题。在之前的文档中,我建议将 capture 产生的 WCR rec 文件存储在高吞吐量且稳定的文件系统设备上。然而还是因为没有足够的重视wcr文件存储,最近还是因为 WCR 文件存放在NFS写入问题,导致了源数据库的全库 hang 死等重大故障。这里简单记录一下这个事件。

Oracle 19c RAC(19.11) ‘crsctl stop crs’ without -f Terminated Database Another node Instances, and more about Flex ASM

最近,在对一套Oracle 19c RAC(Real Application Clusters)进行计划内的维护操作时,遇到了一个预料之外的问题。原本打算通过一个常规的滚动停实例操作来维护其中一个节点,即通过执行 crsctl stop crs 命令来停止节点1的实例。然而,在执行此命令后,意外地发现节点2的实例也随之自动终止了。这一情况发生在Oracle 19.11版本中,如果此类问题频发,无疑会对未来的维护操作带来不确定性。

在去年《Troubleshooting Oracle RAC node OS shutdown (‘crsctl stop crs -f’) cause db instance stop on another node》我们也曾遇到过类似的问题,当时使用的版本是19.10。

Troubleshooting Oracle 12c/19c logon and DML fail with ORA-00604 &ORA-00904: “DECL_OBJ#”: invalid identifier

最近在Oracle 12C环境中,一个用户在尝试登录备用数据库(standby)时失败。在修复主数据库(primary db)并执行datapatch之后,发现大量包(package)失效,导致正常业务运行也出现错误。特别是在递归调用一个触发器(trigger)时,出现了错误:ORA-00904: “DECL_OBJ#”。此外,尝试禁用或删除该触发器时也失败。这是一个需要重点记录的问题。

Troubleshooting Oracle RAC high active sessions wait log file sync &buffer busy waits & gc xx events due to Interconnect latency

最近有家半导体客户的oracle RAC间隔性出现了2次活动会话高负载的堵塞现象,找到我协助分析, 当时的主要活动会等待是buffer busy wait, enq: tx … 的hot object现象,同时有较高的log file sync 单次延时,当分析数据库性能问题时,从top event入手没错,但是也要防止被带偏,也可能是因为其它的影响,简单记录这个事件。

How to analyze enq: TM – Contention with LogMiner?

最近有个客户遇到了enq: TM – contention, 确认表上有大量的FK,并且存在FK 无索引的现象,同是一张表有近60个FK ,同时子表又有几十个子表的多层FK(外键关连) , 关于这个event十多年前有记录过一个笔记”Tuning enq: TM – contention with foreign key (外键引起的队列)”, 现在这个客户也是认可是有外键缺失索引的问题,但非要找到当时的堵塞者SQL, 当然如果SQL很快如果没进ASH, 可能就不好分析了,这里使用分享logminer如何查找线索。

Oracle 、Oceanbase、GoldenDB数据库比较系列(二十五):sql profile/ outline 影响范围(中)

在ORACLE中,SQL Profile 是对 SQL 语句文本的数据库级匹配。由于相同的 SQL 文本在不同用户下可能会受到影响,因此需要一些方法来避免这种情况。OceanBase 提供了 outline 功能,可以用于固定执行计划。那么在 OceanBase 中是否存在与 ORACLE 类似的、影响不同用户的问题呢?多个用户的相同 SQL 语句和相同的表是否共享同一个 outline 呢?outline 是全库共享的还是用户级私有的?

Oracle 、Oceanbase、GoldenDB数据库比较系列(二十四):sql profile/ outline 影响范围(上)

在关系数据库性能优化技术中,有时存在数据库优化器评估问题,产生了错误的执行计划或执行计划改变,导致SQL执行效率变差,在无法或短时间内修改应用SQL代码时,需要从数据库端快速固定指定的执行计划,问题:
多个用户多个table(含索引)相同结构,对于相同的SQL文本,是否会互相影响?
多个用户相同的table, 对于相同的SQL文本,是否会互相影响?

Oracle Incremental Statistics 忽略ESTIMATE_PERCENT ?

Oracle Database 11g 引入了增量统计信息维护(Incremental Statistics Maintenance),以提高大型分区表统计信息收集的性能。当为分区表启用增量统计信息维护时,Oracle 会通过聚合分区级别统计信息来准确生成全局级别统计信息。除了增量统计信息外,配置较小的采样率也是加快大表统计信息收集的另一种方法。今天有位同事问,为什么在同时配置增量统计信息和小采样率时,小采样率没有起作用。

在Oracle数据库中对象号(Object ID)耗尽、可复用?

在oracle 数据库对象由 object_id 和 data_object_id 定义,后者的值也使用与 object_id 相同的内部唯一标识符。数据库中的对象标识符object id数量有硬性限制,一旦达到该限制,数据库将无法使用,必须重建。数据库中的唯一约束标识符数量也有硬性限制。触发些上限是会提示ORA-600 [kkdlron-max-objid] or ORA-600 [15260]。

Oracle dataguard redo传输网络带宽不足哪些表现?

Oracle dataguard redo传输网络带宽不足通常如standby同步时延增加,数据库层还会有哪些表现吗?当standby 同步延时较大故障时, 故障排除最重要的阶段是正确识别问题的性质,例如能够判断问题是否与网络本身、DataGuard、Oracle 数据库(主数据库或备用数据库)或其他数据库有关。尽管 Oracle 提供了非常强大的工具,但这并不是一件容易的事。

Troubleshooting ORA-29783:GPnP Attribute SET Failed With Error [CLSGPNP_NOT_FOUND]

在oracle RAC 环境中节点的信息配置文件有些记录在gpnp profile,如asm_diskstring, 当修改其中的参数时需要在节点间同步,在root.sh时也需要校验,CSS守护进程在启动期间使用GPNP profile来发现 voting files(参数“DiscoveryString”)。发现字符串的不正确值将阻止CSS守护进程(最终阻止整个CRS堆栈)启动。相关的服务有gpnp.bin\mdns.bin。 如果因为一些原因无法push到远程节点时会提示如下错误,
ORA-29783:GPnP Attribute SET Failed With Error [CLSGPNP_NOT_FOUND]

哪些情况oracle dataguard无法使用ADG特性?

Oracle Active Data Guard 是 Data Guard 框架中的一个选项,允许在从主数据库对物理备用数据库应用更改时以只读方式打开该数据库。Oracle Data Guard在某些情况下可能无法使用Active Data Guard(ADG)特性。最近一个客户oracle 11g dataguard在open read only 然后再启用mrp应用日志变更时数据库自动变为mount状态,说明ADG功能无法使用,db alert中并无任何报错,这里也整理几个ADG无法使用的情况

Oracle到国产数据库的数据库负载重放(RAT or DBreply)

最近在跟客户沟通时,发现有些数据库厂家对外宣称,具备从oracle数据库迁移到目标国产库时,从源库到目标异构数据库真实负载重演能力,于是花了点时间研究一下,该功能原本在Oracle叫做ORACLE REAL APPLICATION TESTING (RAT)或其中的子Database replay, 相比另一功能SPA,是能重演生产库的真实业务到测试环境,国产库厂家是怎么做的呢?是真的可以RAT? 有没有什么风险呢? 这里简单描述。

Oracle升级利用从standalone到RAC standby switchover后,转换RAC和timezone时区升级?

最近,我们的一位客户需要将其 Oracle 11.2.0.1 环境从 Windows 平台迁移到 Oracle 11.2.0.4 RAC on Linux 平台。当前数据库大小为 3TB,基于数据量和停机时间的考虑,因为 Windows 和 Linux x86 同为小字节序,并且 Oracle 支持这两个异构平台之间的 Data Guard(Physical Standby),我们最终决定采用 Oracle Data Guard 的方案。在此过程中,需要注意的是由于数据字典是从原单实例同步的,可能会忽视当前 RAC 库缺少 RAC 组件的问题。此外,还需确认时区是否需要进行升级。

root.sh failed with OC4J start failed when install oracle 11g RAC on Linux 7

oracle 11.2.0.4 RAC 安装在OEL7没想到还能出这么多问题,几年前做过总结《RHEL7(Linux7)安装Oracle 11g R2(11.2.0.4) RAC 问题小结》,这次使用的是某软件的自动化安装部署,遇到了新的问题,root.sh时oc4j无法启动,虽然大部分情况该资源并不影响数据库的使用,甚至应对某些安全扫描的风险端口还需要停掉该服务,但这里是希望找到报错原因,使用crsctl stat res -t查看资源状态ora.oc4j ONLINE OFFLINE STARTING 状态