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 块的访问,我们对比一下几款数据库在该方面的能力。

Troubleshooting ORA-600: internal error code, arguments: [kksgaGetNoAlloc_Int0], [34], [24],

近期一套Oracle Database 12c (12.1.0.2.0)数据库在RAC ADG , 在standby端一个查询select语句涉及分区表, SQL解析时触发ora-600 [kksgaGetNoAlloc_Int0], [34], [24], 因为11.2.0.4对分区表对象在DDL后除了基础对象外引入了一个KGL handle 多版本对象,当分区计数和详细信息之间不匹配报错。

Troubleshooting RMAN backup datafile slow , ASM wait ‘buffer busy’ and ‘GCS lock esc’

最近在做一批Oracle database datafile 从1个ASM diskgroup 迁移到另1个ASM diskgroup时,单个datafile一直无法完成或挂起或多出几倍的时间,正常时1个datafile 30g在150s, 而突然间变的600s都没有完成, 数据库版本oracle 11.2.0.4 。 问题时尝试查询v$asm_diskgroup[_stats]或asmcmd lsdg一样很慢或hang。 登录ASM实例查询会话在等待“buffer busy”和”GCS lock esc” 这里简单的记录一下。

V$RECOVERY_FILE_DEST与V$FLASH_RECOVERY_AREA_USAGE显示不一致

最近一个客户的数据库归档空间满,导致数据库挂起,无法连接,sys登录时提示ORA-00257: Archiver Error, 确认数据库使用的是flash recovery area,从oracle 10g R2提供了V$FLASH_RECOVERY_AREA_USAGE 可以查看flash recovery area中每类文件使用的比例,但是加起来不足10%,且当前flash recover area size已经达2TB, 因为无法远程,临时更改数据库归档路径为具体ASM DISKGROUP不再使用FRA, 这里简单记录一下排查方法

介质污染 ORA-00600: internal error code, arguments: [16703], [1403], [20] 修复

如果你不幸数据库在启动时提示ora-600 16703,那很可能是从网上下载安装的oracle数据库软件安装介质中被人篡改了, 增加了启动时判断启动时间,然后删除tab$数据字典的老套的破坏方法, 这个网上的修复方法很多,情况有时也不同,建议找专业人事修复且不要造成二次破坏,这种如果只是最初的版本,修复还是相对比较简单,顺利的话个半小时,0数据丢失恢复

Goldengate Replicat Abends With ORA-00001处理方法

当GoldenGate复制进程(Replicat)在目标数据库上遇到ORA-00001唯一性冲突错误时,可以采取以下常见解决方法:

2023-1-617:57:36 WARNING OGG-02544 Unhandled error (ORA-00001: unique constraint (.) violated
ORA-00001: unique constraint (.) violated) while processing the record at SEQNO 936, RBA 67975402 in Integrated mode. REP
LICAT will retry in Direct mode.

Troubleshooting “enq: XR – database force logging” Wait Event

当您尝试在其中一个数据库会话正在执行 NOLOGGING 操作时,尝试将数据库置于 FORCE LOGGING 模式时,将观察到“enq: XR – database force logging”等待事件。这很容易证明。 连接到数据库(例如会话 1)并执行 NOLOGGING 操作:通过从不同的会话(例如会话 2)执行以下 SQL,将数据库置于 FORCE LOGGING 模式:您将观察到 Session-2 不会立即完成,而是等待enq: XR – database force logging。

HighGo(瀚高)V6 数据库单机初体验

瀚高数据库在我好多年前预学习PostgreSQL时就有耳闻,有瀚高公司维护,该公司在PostgreSQL国际社区贡献度中也是中国排名靠前的组织,发起了另一个开源项目IvorySQL,同样是兼容oracle的postgresql数据库,两者都是在PostgreSQL路线做了大量的创新与生态工具,我记录体验一把HighGo企业版。

如何查询OceanBase的数据字典或VIRTUAL TABLES?

在oracle数据库中有dictionary(dict)和v$fixed_table可以查询数据字典表和v$相关的系统内部对象,查询数据库内部对象不记的完整名称是可以直接从两个根对象记录中查找(TanelPoder‘s d.sql) , 对初学OceanBase的新手,也希望可以找到数据库中自带了哪些数据字典或view?兼容了oracle哪些view数据来源是哪里?如同在oracle中查询V$FIXED_VIEW_DEFINITION.

Oracle ASM rebalance 完成还有多久?

oracle ASM 从12c后引入了诸多特性,如FLEX ASM、Increased ASM storage limits、ASM instance V$ACTIVE_SESSION_HISOTRY 、ASM Disk Scrubbing外,最近发现还有一个关于ASM DISK rebalance 的增强EXPLAIN WORK FOR命令。12c 中新的 EXPLAIN WORK FOR 语句测量给定 ASM rebalance所需的工作量,并将结果输入 V$ASM_ESTIMATE 动态视图中.

Troubleshooting Oracle 19c wait event latch free 39 “object stats modification”

近日,一位客户的Oracle 19c(19.18)环境中出现了一些查询堵塞等待较高的“latch free”情况。通过分析AWR报告中的ASH(Active Session History)数据,我们发现某些查询频繁等待“latch free”,并且p2值对应的latch号为39,latch名称为“object stats modification”。

“latch free”等待事件在Oracle 11g之后相对较少见到,通常我们会看到具体的latch名称。 “object stats modification” latches 又是一个较为罕见的等待事件。为了便于后续跟踪和分析,这里记录一下该问题及其相关细节。