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国产化改造迁移openGauss时的问题: Error “remote table ‘xxx’ does not exist” 当使用Postgres_fdw时

在oracle中A库直接远程访问B库常见的有dblink, 在postgresql中有postgres_fdw和外部表,在opengauss系中同样有postgres_fdw、oracle_fdw(for Oracle)、mysql_fdw(for MySQL), 在EDB中postgres_fdw、oci_dblink(for Oracle)。但是发现对于opengauss到远程 opengauss的使用dblink访问时(有oracle应用迁移而来), 在oracle中常用的select * from t1@dblink1访问时,提示 remote table ‘t1’ does not exist, 即使创建user mapping时使用的t1表schema用户。如果应用中存在原oracle语法需要调整,影响postgresql和opengauss, 简单记录opengauss中的问题。

,

哪些情况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? 有没有什么风险呢? 这里简单描述。

,

MySQL 行锁lock 放大现象Oracle DBA无法理解

MySQL事务隔离级别默认的Repeatable Reade 下有Gap Lock问题,在更低的隔离级别下,如读已提交(Read Committed)或读未提交(Read Uncommitted),Gap Lock不会被使用,在READ-COMMITTED下同样存在类似“Gap Lock”的问题,如果Oracle 数据库向基于MySQL innodb的数据库迁移后,不知是否会出现原有应用经常行锁等待的现象,等待innodb_lock_wait_timeout参数配置的时间后报错, 而oracle lock是在行头(row header)上,MySQL这种导致锁定记录增加的现象,让从事oracle DBA转型的无法理解

,

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 组件的问题。此外,还需确认时区是否需要进行升级。

Oceanbase Memstore 使用分析

在业务租户内存结构中有个内存区叫做memstore, 主要用于保存数据库增量数据,对应MemTable属性,众所周知OB是基于LSM-tree存储引擎,数据分为磁盘上的静态数据(SSTable)、内存的增量数据(MEMTable)、以及记录事务的日志. 内存中的数据需要制定一些策略,控制从内存刷到磁盘,如同oracle的checkpoint, 在OB中叫做转储, 转储可能会产生I/O的较大影响,当然不希望业务高峰期做转储操作,这样就需要对MEMSTOR使用做监控

,

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 状态

PostgreSQL性能调优相关的参数配置 (最佳实践)

在PostgreSQL数据库中,与硬件基础环境依赖相关的参数,默认配置通常不适合生产环境。正如 PostgreSQL wiki 页面所述,默认配置的选择是为了在各种可能缺乏大量资源的设备上更容易地安装数据库。Oracle数据库也存在类似的问题,因此在内存相关的参数上基于Advisor框架推出了ASMM和AMM自动管理,但大部分参数如优化器相关的,仍然是针对通用场景设计的。当然,也有大量的Oracle DBA基于自己的经验整理出了一些最佳实践参数。相较之下,PostgreSQL的参数数量远少于Oracle。下面整理了几个基础的数据库调优参数。

Alert: Oracle SQL Parse Error绝不能放任不管, 产生未知bug

在早期接触 Oracle 12c 的生产环境时,我在数据库警告日志(db alert log)中发现了“WARNING: too many parse errors, count=NNNNN SQL hash=0x****”的警告信息。Oracle 通过这种方式提示我们,应用中有一些解析失败的无效 SQL 正在耗费系统资源。Oracle 建议根据这些 SQL 文本和错误信息来修正 SQL。然而,某些应用或 DBA 可能会对这些警告视而不见,尤其是从 12c 前版本升级上来的用户,更是觉得可以安全地忽略这些警告。 几年前,我记录过一个客户在 Oracle 12.2 中遇到的《Oracle 12.2 DB alert show “WARNING: too many parse errors” or “__Oracle_JDBC_internal_ROWID__” in sql》现象。最近,另一个客户也持续遇到解析失败的问题,我发现这绝对不能放任不管,因此做了简单记录。

Oracle LOB 在12c中的增强

前不久在研究《Oracle国产化改造迁移时的问题:Number 数据类型中的 invalid number》时,发现 TO_* 函数在 12c 中有一些增强,同样对 LOB 类型也有增强。正巧最近遇到一个 11g 数据库需要通过 dblink 更新 BLOB 字段的需求,因此对此进行了研究,并做了简单记录。

Oracle国产化改造迁移openGauss时的问题: 存储过程内部不要加”call”

在存储过程内可以调用其他多个存储过程或函数,这是支持 存储过程(procedure)的数据库都支持的,近日在做oracle到opengauss系(MogDB)的plsql对象做复审时,发现在一个主存储过程内部调用了其它多个子存储过程,但只执行了其中的第一个子存储过程,Exception捕捉了错误提示SQLERRM is: query has no destination for result data, 后来发现是因为存储过程改写时内部调用子存储过程前加了”call” ,其实用”PERFORM”也没问题

,

Oracle国产化改造迁移openGauss时的问题: 自定义聚合函数wm_concat

在Oracle 11g升级到更高版本时,默认不再提供 wm_concat 函数,而是用 listagg 函数替代。然而,很多应用程序在12c或19c中可能自定义了类似 wm_concat 的函数,例如 my_wm_concat。这些函数被广泛使用在应用程序中。当这些应用程序的数据库迁移到国产数据库如OpenGauss或PostgreSQL时,如果希望数据库层面兼容而不修改应用代码,通常迁移工具只能做语句规则替换。

对于自定义函数的迁移,由于人工改写时对Oracle或OpenGauss/PostgreSQL不熟悉,这可能会浪费一些时间。 简单纪录一个案例。

Oracle 23ai新特性: 事务优先级(Priority Transactions),自动回滚

相信oracle DBA一定遇到过enq: TX – row lock等待,假设一个会话修改了table中的数据,但一直未提交,此时其它会话相同行的任何DML事务都会挂起,并v$session.event显示enq: TX – row lock contention的等待事件,直到持有行锁的会话commit或rollback结束事务释放锁定行。 前几天发现在oracle 23版本引入了个有意思的功能”事务优先级”,可以在 LOW、MEDIUM 和 HIGH(默认值)之间进行选择, 如果“低级”的会话事务堵塞了更高级会话事务,在超过预定时间(秒)数据后会自动处理[rollback(default) 或者commit] ,默认事务都是High级别,自动事务回滚减少了管理负担。

,

Unix epochs and datetime convert in Oracle, MySQL, PostgreSQL (纪元秒数与日期转换)

前几日一客户问我在oracle执行unix_timestamp函数报错,心想这不是MySQL的函数吗?难道oracle引入了?找了一圈到oracle 23ai也没有自带该函数,可以自定义函数实现, 在去年的一个oracle迁移到PostgreSQL系数据库里,有套业务库大量使用epochs做为datetime,这里简单记录在oracle, mysql ,postgresql中如何做unix epoch到datetime的转换.

Oracle 11g ASM Alert log 频繁输出 “Attempting voting file refresh on diskgroup xx”

一套Oracle 11g r2 RAC环境,发现文件系统使用率很高,因为ASM alert log 中在不间断的输出”Attempting voting file refresh on diskgroup xx”信息,RBAL进程似乎因为PST问题一直在尝试,导致内存溢出,最终可能会报出Ora-7445等异常,最终ASM实例 CRASH, 这里简单的记录处理方法。

Oracle国产化改造迁移时的问题: Number data type中的 invalid number

当迁移Oracle数据库到其他数据库系统时,你可能会遇到一个棘手的问题:在Oracle表中存在无效的数字数据,导致在目标数据库(比如PostgreSQL系列)导入时报错。这些错误可能表现为类似“invalid input syntax for type numeric: ‘xxx’”的提示信息。最近,在将Oracle国产化改造项目迁移到商业发行的MogDB时,我也遇到了这个问题。看来Oracle的容错率太高了,不会像其他数据库那样严格检查数据的有效性。因此,我们需要一种方法来找出并修正这些错误数据。在本文中,我将分享一种解决这个问题的方法。

, ,

分分钟安装体验Oracle 23ai,SQL*Plus细致入微的创新

最近有朋友在问Oracle 23ai 如何下载和体验,这篇简单的分享,在 Oracle 23ai 版本的安装过程中,可以体验到一系列令人振奋的新特性和功能。从下载安装到启动运行,整个过程简单而顺畅,展现了 Oracle 在技术创新和用户体验方面的不断进步。让我们一起探索 Oracle 23ai 版本带来的全新体验,感受其为开发者和企业带来的价值和便利。您网络如果没有瓶颈,几分钟就可以安装部署一套oracle 23ai, 小试一下sqlplus客户端的微创新。

Exadata x5 Raid电池对IO性能的影响

前段时间一套Oracle Exadata X5环境遇到了严重的IO问题,从AWR top event IO延迟相当高,问题前虽然IO性能并不是很好,但这次突然的性能减半,影响对于cell multiblock physical read和direct path write,cell smart table scan wait avg ms翻倍,甚至达到100ms以上,对于oracle环境是无法接受的,当然通过分析问题在硬件层,更换RAID卡电池后恢复,10几年前遇到过因为RAID卡电池没电,影响无法使用RAID cache导致IO性能衰减的问题

,

通过最大分区数据错误看Oracle 23ai 错误提示友好增强

之前在写《Oracle 23c 几个开发相关新特性》有简单记录在报错上的友好增强,最近oracle发布了23版本命名为从C(cloud)系转向ai系,通过官方下载了个vmbox磁盘镜像分分钟运行起了oracle 23c free ,今天刚好公司内部讨论一个interval partition分区个数上限的问题,我们看看23ai版本的提示有多明确。