Troubleshooting oracle CRS start fail after OS reboot ASM device(udev) unable to open

最近一个客户的Oracle 11g RAC 一个节点操作系统(Linux7)重启后,CRS无法启动,另一个节点(NODE2)未重启暂时正常。查看GI日志是Vote disk无法读取,sd设备dd正常,kfed read asmdisk失败,使用udev映射,说明问题出在udev, 简单记录该问题。

, , ,

Oceanbase不建议你模仿Oracle的错误编号(ORA-NNNNN)!

故事从一个客户正在将数据库平台从Oracle迁移到OceanBase的过程中说起。在并轨生产运行过程中,应用报告了ORA-54错误号,这让Oracle的数据库管理员感到震惊,并花费了大量时间来进行分析。然而,他们最终发现这个错误是由OceanBase的驱动程序报出的。在尤其有些客户一点儿问题全中心排查躁动,这类报错让Oracle DBA分析oracle数据库,确实会让人要想爆粗,浪费了甲方的付费的乙方资源,同时还不利于故障定位。 下面对比一下oracle和oceanbase的resource busy报错。

, , ,

Oracle不同版本SQL执行计划差异的排查方法

朋友一篇《troubleshooting not JPPD cause View is a set query block》引起我的兴趣,想在测试环境尝试验证一下这个问题,除了统计信息外,这类问题可能是因为升级导致的或同版本的两个环境数据库执行计划不一致,可能因为DB参数不同或补丁修复相关,如何在那么多不同的配置中找它呢?在我们没有MOS或一些原厂内部资料时有没有一些小技巧? 之前有搞过一个pd_test.sql暴力尝试的方法,复现案例的过程往往有时也不易,这里从这个案例发现一些好玩的记录一下。

, ,

Troubleshooting Oracle Grid Infrastructure startup fails with Linux Inode full

最近一个客户一套较老的ORACLE RAC集群长时间无人看管,由于Oracle Grid Infrastructure(GI)的$ORACLE_HOME所在文件系统的inode耗尽,导致了gipcd无法启动,并且最终导致两个节点崩溃。 GI alert log提示gipcd无法启动,但实际是因为GI的$ORACLE_HOME所在文件系统inode耗尽,简单记录一下。
No space left on device (28)

,

Goldengate Integrated Extract集成模式抽取挂起?

最近一套ogg环境反馈做了些磁盘维护后抽取进程abended, 查看ggs日志发现有提示OGG-00662 OCI ERROR ora-03113 ora-03115和OGG-02078 extract encountered a fatal error错误,启动后使用ggsci info ext xx查看RBA无变化,简单记录一下该案例。

,

Oracle、MySQL、PostgreSQL、OceanBase、万里开源数据库比较系列(十七): IN ( MAX Subquery )

在关系数据库中两表关联在oracle中使用IN( subquery)的语法很常见, 但kevin发现在MySQL中subquery使用MAX聚合参数时,会导致主查询Full scan而无法使用索引范围扫描, 当遇到大表时可能性能下降明显 ,测试发现有的库使用子查询做为驱动表,有的是使用filter从主查询过滤。下面简单测试。

如何知道Oracle数据库统计信息收集下次收集哪些对象?

最近有个客户发现oracle数据库中有些分区表并未收集统计信息,需要确认是统计信息作业是否启用? 最近作业是否成功?如何列出需要收集统计数据的对象的问题?他的系统在周末收集统计数据,但想要检查本周是否有任何对象的统计数据已过时。如何加快统计信息收集? 实际上,执行此检查非常容易, 使用dbms_stats包可以提供需要收集的对象列表。

, ,

OceanBase执行计划(一):索引与回表访问

在oceanbase中对于表与索引的访问路径在查看执行计划时,发现和oracle理解还是有一定的区别, 例如在oracle中full table scan只访问表, TABLE ACCESS BY INDEX ROWID 配合 index range scan或INDEX UNIQUE SCAN是索引扫描加回表,如果没有带TABLE ACCESS BY INDEX ROWID 表示不用回表,从索引中取到数据,也可以叫做index only scan 或者是covering index. 那是因为oracle是heap table(这里不算IOT索引组织表), 所以索引与表分离, 但是像MySQL及同系的GoldenDB、GreatDB等、Oceanbase及达梦都是一种索引组织表,同Oracle中的IOT表及索引,创建的其它索引为二级索引。下面测试一下OB(以下表示oceanbase)的执行计划的显示.

, ,

Linux core.NNNN文件导致文件系统耗尽

在oracle rdbms on Linux的环境有时会在$ORACLE_HOME/dbs生成几十GB的core.NNNN的core dump文件,更甚至导致文件系统耗尽,影响oracle进程稳定性, core文件用于分析进程异常终止原因,不只是oracle数据库,在其它数据库环境也经常会产生,如openGauss系这类线程(threads) 式进程数据库如果遇到这类异常,就不会如oracle、postgresql这类进程(processes)式只影响某进程crash, 而是整个实例crash,这也是线程数据库缺点,但往往他们宣传时线程式时避而不谈。

,

Troubleshooting Oracle RAC Second instance start fail with ORA-01105 ORA-01677

一套测试环境因同事做过一些操作今天发现其中一个节点是crash,启动数据库第二个实例失败,提示ORA-01105: mount is incompatible with mounts by other instances, 我们都知道可能是两个节点间参数不一致. 简单记录一下处理,如果你遇到给希望可以参考减少诊断时间。

, , , ,

Linux 重启失败Superblock(SB) last mount time is in the future

最近一套华为虚拟化环境中的虚拟主机RHEL linux 6.N 操作系统,调整了memory资源后做reboot重启失败,检查控制台输出提示一个文件系统Superblock last mount time is in the future是2059年,但当前时间是2023年,可能还并不是类似cmos电池问题,重置时间为1988年等之前的时间。启动界面提示要做fsck 手动修复,这里简单记录一下。

,

分析SQL*Net message from client连接间断性问题

之前在我的blog记录过Troubleshooting Dataguard SYNC同步模式时网络问题 一则网络诊断的问题,通常如果因为网络不通因数白名单或防护墙问题较常见,或网络不稳定丢包使用ping traceroute也可能辅助诊断,但是对于一些客户端执行了几个SQL后随机出现中断或挂起还是比较少见,这里结合一个案例提供一个诊断方法。

LGWR/LGnn DBWn CKPT 等待多数是I/O问题

最近一周遇到2例LGWR/CKPT 等待的问题,但这类问题往往只从top event分析容易走入误区,如显示top event是Log file switch (checkpoint incomplete) 或Log file switch或enq: CF – contention ,或是一个IDLE类的rdbms ipc message等待, 有时会在db alert log中显示ckpt has not moved for N sec等,建议先确认当时的IO系统是否正常。

Oracle、MySQL、PostgreSQL/openGauss、达梦、OceanBase数据库比较系列(十六): Index scan MIN/MAX

在关系数据库中常见的一种需求统计表的记录的最大值或最小值,SQL中使用max min,为了最佳效率通常希望可以在列上创建索引,减少表段的IO量,如果可以可以使用更佳的执行计划如直接访问索引的头和尾(btree index的有序结构),减少index 块的访问,我们对比一下几款数据库在该方面的能力。