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文本,是否会互相影响?

案例: FC HBA固件升级后Linux6启动失败分析过程

前几天,一位朋友的Oracle RAC 2-nodes(Linux 6物理主机,HPE)系统计划进行HBA固件升级。幸运的是,他们采用了滚动节点的升级方式。在节点1升级FC HBA固件(Firmware version)并重启后,CRS启动失败,所有ASM DISK丢失,且在重启时遇到了操作系统无法启动的惊险情况。这里,我分享一下处理这种问题的经验。

GoldenDB TEMP Tablespace(#innodb_temp)导致文件系统使用率高

最近,我注意到一位朋友在处理一个以G字开头的MySQL系国产数据库时遇到了一些问题。具体来说,该数据库占用了超过1TB的临时文件,导致文件系统告警,之前kill session并且未能释放。这是由于在杀掉dbproxy上的session后,db node上的session仍然存在。这样的情况可能是非原生分布式数据库的一个风险点,因为每个data node都是一个独立的MySQL实例。最终,我们通过登录到data node并手动kill session解决了问题。我在另一款国产MySQL系分布式数据库GoldenDB上进行了类似的模拟测试,仅记录处理方法。

Oracle、Oceanbase、TiDB、GaussDB集中式数据库比较系列(二十三):同城双中心常用架构

数据是企业的重要生产要素,确保数据不丢失是大多数客户的核心目标。然而,要实现这一目标的高可用容灾方案不仅依赖于数据库产品的架构支持,还需要硬件成本的投入。同城双机房的配置在客户中较为普遍,如果追求RPO=0,无论是分布式数据库还是集中式数据库,个人了解到目前主流的数据库使用架构

Alert: 不要升级到 MySQL 8.0.38( 8.4.1, 9.0.0) 任何版本?

上周,Percona 发布了一篇警告博客,提醒用户<不要升级到 MySQL 8.0.37 之后的任何版本>。然而,现在访问 MySQL 官方下载页面,依然可以在主推的下拉列表中看到这些版本。
Percona 在文章中提到,Jean-François Gagné 在 bug.mysql.com 上报告了一个编号为 #115517 的 bug。不幸的是,这个 bug 目前处于私密状态。简而言之,如果您创建大量表(例如 10000 个),MySQL 守护进程在重新启动时会崩溃。当然,也有人认为这是危言耸听,因为单个数据库实例中有超过1万张表的用户可能不足0.0000001%。

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]。

MySQL的DDL注意事项,在Goldendb中有改进吗?

Oracle 数据库在在线维护操作方面引入了大量特性,旨在实现日常维护和升级时无需停机。相比之下,MySQL 在这方面的表现稍逊一筹。作为 Oracle 的 DBA 是一件很幸福的事情,因为日常的分区维护、发现性能问题时的紧急创建索引等操作都可以在线完成。而 MySQL 虽然也宣称支持 DDL,但这是真的吗?

我们有一个 GoldenDB 的客户要求以后所有的 DDL 操作只能在停所有业务的情况下执行。对于拥有大量数据库实例且需要频繁进行 DDL 维护的情况,请问你能提供多少停机时间?

Oceanbase BLOB/CLOB LO(Large Object)注意事项

OceanBase v4作为一款分布式关系型数据库,提供了与Oracle数据库相似的LOB(Large Object)类型支持,包括BLOB(Binary Large Object)、CLOB(Character Large Object)以及NCLOB(National Character Large Object)。这些数据类型主要用于存储大量文本、图像、JSON、地理信息等非结构化或半结构化数据。在从 Oracle 迁移到 OceanBase 时,需要关注LOB对象的存储类型和属性,确保它们在OceanBase中得到适当的处理。我们所说的兼容性不仅包括类型兼容,还包括语法语义和行为兼容。如果 OceanBase 的限制比 Oracle 更宽松,则迁移过程可以正常进行。但如果 OceanBase 的限制更严格,则可能会导致数据无法迁入目标数据库。

MySQL Backup/Restore tools 总结

数据库存放着组织拥有的最重要的资产之一——数据。保持数据安全和不受破坏是关键任务。对于大多数应用程序来说,停机比数据丢失或损坏更痛苦。DBA的核心职责包括数据库的备份恢复,到了关键时刻非常考验方案的有效性。在MySQL开源数据库也存在一些备份工具,但存在一些差异,备份应根据恢复需求进行规划, 这里简单整理。

Oceanbase Partition注意事项

OceanBase Database也同oracle一样支持partition table,但存在一些注意事项,甚至和oracle存在一些差异。分布式数据库的数据打散方式并不相同, 分布数据基于组规则到不同的物理区,在Oceanbase中以 Partition粒度分布到不同的OB SERVER节点,Oracle mode 的OceanBase Database可以创建65536个分区partition,也可以创建subpartition, Table的分区列又叫分区键( partitioning key), 分区键必须是PK和UK的子集或者是说主键唯一键必须包含分区键。

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国产化改造迁移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中的问题。