Linux多路经DM multipathd注意事项

对于服务器与存储分离的数据库环境中,业务数据存储在外挂存储设备上,常见于之前的oracle RAC等集中式数据库,同样也可以用于达梦或mysql数据库,服务器与存储连接常用的有基于NSF的NAS存储和基于Fabric协议的SAN存储,而企业中对于数据库常使用SAN存储,需要专业硬件如HBA卡和SAN交换机。进一步为了高可用一般是多条路径的方式。对于multipath环境遇到过几个客户配置了4条链路甚至6条,因为一批链路offline,没有switch链路,导致数据库一样会出现I/O失败现象。这里简单整理几个multipath相关的配置参数。

如何查看Oceanbase Table隐藏自增列值?

众所周知,在MySQL中通常建议增加主键,如MySQL的innoDB存储引擎一种索引组织表(B+tree)的形式,如果未指定主键时?数据库会自动创建隐藏PK索引(6字节)做为CLUSTER PRIMARY KEY,像达梦数据库默认也是这种B+Tree组织形式。OceanBase企业租户目前有两种兼容模式,兼容 Oracle 或 MySQL。无论是Oracle租户还是MySQL租户,同样在创建表时如果未指定PK, 会自动创建一个隐藏的自增列PK。这里演示如何查询隐藏自增列值?

, ,

Oracle 12c 在bigfile表空间可能dba_segment 显示不正确的大小

在Oracle存储空间中,表空间的大小(dba_data_files size)几乎等于空闲空间的大小(dba_free_space size)加上段的大小(dba_segments size)。通常情况下,这两个值之间的差异是很小的,可能是由于一些header和bitmap block未计算在其中,但这些差异通常是很小的,以KB或MB为单位。然而,同事遇到了在一个bigfile表空间发现巨大的差异,达到了10TB以上。现在的问题是,这些空间去了哪里?

, ,

Troubleshooting Linux7 panic System crash shows exception RIP: pagetypeinfo_showfree_print

最近一套oracle RAC on Linux 7环境1节点操作系统重启,分析又是DB和CRS层无错误日志,还好OS有配置kdump, 生成了vmcore文件, 分析是在cat命令时触发操作系统panic, cpu 遭遇hard lockup,出现system crash. 调用堆栈显示exception RIP pagetypeinfo_showfree_print。

,

Gbase 8s 生成的 af.xxx shmem.xxx文件是什么?

今天有客户在南大通用数据库Gbase 8S生产环境发现/tmp目录下产生了较大的文件,属主是gbase产生,文件名如af.xxxx.rawstk和shmem.xxxxx.0, 这是什么呢?

,

Troubleshooting Oracle 12c 导出失败expdp ORA-31626 ORA-31637 ORA-12805, exp EXP-00064

最近遇到一套oracle 12c r2 RAC 多租户 +ADG的环境, 所有PDB中使用expdp导出失败报错 ORA-31626 ORA-31637 ORA-12805, 尝试改用exp更奇怪的现象是,exp部分表报EXP-00064错误,但该表确实不是嵌套表,而且CTAS创建一个复制表就可以正常导出exp, 但expdp同样报错,表列类型就只是number,char,blob。经过反复诊断测试找到问题并还原..

, ,

Troubleshooting Exadata X8 machine node reboot frequently rds_send_remove_from_sock

最近有个客户的Oracle Exadata x8 数据库主机操作系统总是频繁的重启,重启前在DB,CRS层没有任何错误信息, 当时的OS负载也比较低,仅从exawatcher的mpstat能发现在重启前15s左右部分CPU core sys使用达100%。 操作系统有配置kdump生成了dump信息,发现在CPU在等待Watchdog detected hard LOCKUP on cpu 11, 堆栈调用中包含rds_send_remove_from_sock,简单记录。

, ,

Oracle有没有可能move Segment对象到指定的数据文件在同一个表空间?

试想一种场景:如果一个tablespace有100个数据文件, 90%+表空间USED,后来drop table 70%, 现在因为ASM DISKGROUP 紧张,要回收部分datafile(drop)归还ASM 给其它TABLESPACE使用 , 原表空间move table/lob 都是按oracle内部算法find free extent 从所有可用datafile(bitmap in header for LMT ), 目前除了新扩存储空间,move到新表空间还有其他方法吗?这是一个难题。

如何在oracle PL/SQL loop中捕获异常Exception继续?

在Oracle PL/SQL中,在循环中捕获异常并继续执行可以通过使用异常块实现。如循环kill session 可能会遇到session marked killed报错中断,或flush shared pool 中的sql时,因为有部分sql keep, 遍历时会遇到ora-6596 错误 ,下面是一个简单的示例,演示了如何在PL/SQL循环中捕获异常并继续执行:

,

如何Onine Move LOB段到其它表空间在Oracle 12c+ ?

在Oracle 12c中你可以使用 “ALTER TABLE…MOVE ONLINE”, 在线移动LOB段 (Large Object)到其它表空间,而不会影响在线业务. 在移动空间或整理表空间碎片场景提供了遍历,此方法适用与CLOB和BLOB。 下面演示一下使用方法。

Oracle、Kingbase、OceanBase、TIDB、达梦数据库比较系列(十八): for update nowait 报错信息可读性

前几天看到有OB用户留言,提到OceanBase很可能是出于对他们需求的考虑,而应用中以前对ORACLE报错的依赖。这表明现在数据库厂家在满足各种甲方要求时也颇为无奈,在应用的兼容性上做了种种让步。就对于会话1事务中,会话2 select for update nowait相同的报错场景,我简单测试一下在其它国产库上是否还不如Oceanbase. 为了方便横向对比,这里我再简单的附上ORACLE 与OB的报错。

,

Troubleshooting Standby database recover failed with ORA-19906 ORA-10576 ORA-19909

常常有客户配置oracle dataguard 1对多或级连(cascade) standby, 当需要一个测试环境时,通常考虑拿一个standby激活或snapshot dg,但如果在激活为可读写数据库时(Failover),如果提前DG参数没有清理,可能导致剩余standby database无法继续应用日志,这里简单记录。

, , ,