Highgo oracle兼容模式的国产库copy force_null
最近在一个从oracle到基于postgresql的国产数据库项目上,遇到使用copy加载到数据库中的表字段是空值数据无法过滤,因为在oracle中的\0x00、NULL、”(空值) 与postgresql中不同,所以在像瀚高、kingbase等PG系的数据库,oracle兼容模式下对于‘’空值的处理要格外注意,下面简单的记录。
提供综合数据库运维服务与优化方案(不限Oracle MySQL PG GaussDB GoldenDB OceanBase等), 微信/Tel:(+86)134-365-60330
最近在一个从oracle到基于postgresql的国产数据库项目上,遇到使用copy加载到数据库中的表字段是空值数据无法过滤,因为在oracle中的\0x00、NULL、”(空值) 与postgresql中不同,所以在像瀚高、kingbase等PG系的数据库,oracle兼容模式下对于‘’空值的处理要格外注意,下面简单的记录。
近期在推进一个从 Oracle 迁移至 PostgreSQL 的项目时,我们遇到部分在 Oracle 中运行正常的索引无法在 PostgreSQL 中创建,系统报错:ERROR: index row size X exceeds maximum Y for index “index_name”。
经分析,这源于不同数据库对索引键(Index Key)长度的上限设计存在差异。为规避此类问题并助力迁移规划,我们特此整理了 Oracle, MySQL, PostgreSQL 三大主流数据库的索引键长度限制。
ob_query_timeout 是 OceanBase 数据库服务器的一个系统变量(System Variable)。它设置在数据库服务端,用于控制在该数据库连接上执行的所有 SQL 查询的最大执行时间。obdumper 是一个独立的客户端工具,它通过 OBDC 或 Java 驱动与数据库建立连接。理论来说也是一个客户端,应该是继承DB的变量设置,但是近期一客户obdumper一提示query timeou超时,且值并非DB级的参数,这是怎么回事?
今天在某个金融客户群看到客户咨询“在Oceanbase数据库中oracle租户,更新clob字段超过4000字符怎么弄?”,我们知道clob可以存储像Varchar类型的字符,如果不使用dbms_lob包处理,可以简单当varchar处理,而varchar的长度又有上限,在oracle和oceanbase中这个问题答案是不同的,下面我来演示。
最近一客户在使用obloader工具,做一个表的恢复时,遇到了下面的错误:
$obloader -h xx -P xx -u xxxx – p ‘xxxx’ -c XXX -t XX – D xx –csv –table xxxx -f xxxxx.csv –external-data
[ERROR] Invalid char between encapsulated token and delimiter. Token Content: ,\E,0,79,\E,\E,. Line[1,18]
有套业务库告警一套业务库的年龄age过高,这是防止事务回卷的监控项,超过是2亿(autovacuum_freeze_max_age)的80%,于时同事查询了一下age 最大的表发现top 1是业务用户下的TOAD_PLAN_TABLE,age 接近21亿,也就是最大允许的值。继续分析发现在Highgo数据库相比pg多的一种表类型。
最近遇到了一个很严重的问题,MySQL 的磁盘空间完全耗尽了,导致无法访问并崩溃。因此许多操作都报错。/var/lib/mysql 目录中一个名为 ibtmp1 的超大文件占用了硬盘空间。ibtmp1 是 MySQL 的一个临时工作文件。客户不得不不断重启服务器.
今天一客户的GoldenGate for bigdata, 从oracle同步到kafka时,应用端进程失败,报错如下:
2025-09-29 17:58:56 ERROR OGG-01163 Oracle GoldenGate Delivery, r_ka.prm: Bad column length (1287) specified for column XINFO in table ANBOB.T_PATH_INFO, maximum allowable length is 400
近日一客户的oceanbase OCP告警ocp_monagent agent服务不可用,日志显示OOM kill
oom-kill:constraint=CONSTRAINT_MEMCG,nodemask=(null),cpuset=ocp_monagent,mems_allowed=0-7,oom_memcg=/ocp_agent/ocp_monagent,task_memcg=/ocp_agent/ocp_monagent,task=ocp_monagent,pid=1948228,uid=0
Sep 28 14:00:01 anbob-2 kernel: [25155102.452094] Memory cgroup out of memory: Kill process 1948228 (ocp_monagent) score 1004 or sacrifice child
Highgo数据库实际是Postgresql内核,这篇同样也适用于Kingbase, GaussDB一样存在的PG系,最近一客户上了Highgo数据库后晚上的批作业任务总是失败,查询JOB日志,显示因为deadlock失败,其实很好理解,提示的信息有会话、表、行的信息,这里模拟一下2个会话交叉更新相同记录产生的deadlock.
Linux上文件系统df 显示有未mount的文件系统,手动mount 不报错,但也没成功,当 df 显示了一个设备,但你手动挂载时感觉“没成功”,通常意味着挂载点被“隐藏”或“覆盖”了。或是udev或dm的原因,导致设备未正常挂载,系统日志(如 /var/log/messages 或 journalctl)可能会提供挂载失败的详细原因。最近遇到一个案例简单记录
Oceanbase数据库中同Oracle一样存在一些以“_”开头的隐藏参数,用于功能的开关和微调等作用。目前v4.2.5.3 有491个参数,分为集群级和租户级。隐藏参数226个。
最近有个客户在Oceanbase数据库上有套多租户环境,其中某一个租主insert values失败,提示ORA-00600 internal error code , arguments: -4184: ChunkServer out of disk space 错误, 版本V3.2.3,在 OceanBase 中遇到错误 -4184: ChunkServer out of disk space 表示集群中的某个或多个 ChunkServer 节点磁盘空间不足,导致无法执行写入操作(如 INSERT),简单记录排查方法。
最近看到几个案例是国产MySQL系使用Thread Pool时出现的问题,有国内较主流的GoldenDB分布式数据库和电信自研TeleDB分布式数据库。现象是偶然的有些简单的SQL响应时间增加,只是因为在Thread pool阶段等待。
在oracle数据库同样也会出现因为隐式转换导致的索引无法使用,但是在PostgreSQL系的数据库中如kingbase, highgoDB, GaussDB, openGauss等,对于对于常用的“数字”对应多个datatype,增加了转换的概率,近期在一套oracle迁移到某国产postgresql系数据库后,之前一个正常高频执行的SQL把数据库CPU瞬间拉到了70%, 如 numval>=power(10,19) 未在索引列使用索引,下面记录这一问题。
分区表(partition)在大型数据库中是较为常用的技术,PostgreSQL中 v10版本后支持了原生分区语法,之前多是约束注册方式,v11后又至此了default分区,近日一客户反馈他们的PostgreSQL在分区使用pg_partman管理分区增加空分区时越来越慢(≈3sec一个分区), 这里简单记录原因。
最近帮一位朋友查看一套老旧业务系统的问题,登录环境一看,竟是二十多年前的经典组合:Sun 小型机、Solaris 8 操作系统和 Oracle 9i 数据库。主机的 CPU 和内存配置以现在的眼光来看非常有限,但令人感慨的是,就是这样一套资源拮据的系统,却在某大型国企的核心业务中稳定运行了这么多年。
在达梦数据库中,虽然尚未提供完全对等的细粒度跟踪机制,但同样支持类似慢日志记录功能。通过开启相关库级日志,可将关键执行信息记录到日志文件中,包括:, 事务、执行时间、执行用户、客户端IP、SQL文本,客户端工具等会话信息。随后,可使用达梦提供的 dmlog 工具对日志进行分析(支持异地分析),并生成可视化图表。分析结果可按执行时间、逻辑读、物理读等维度排序,呈现类似 Oracle AWR 报告中的“Top SQL by XXX”视图,便于快速识别性能热点 SQL,辅助应用优化与问题排查。
在 PostgreSQL系数据库中(含GaussDB for OpenGauss),pg_stat_database 视图中的 xact_rollback 计数器表示 事务回滚(rollback)的次数。当这个值增加时,意味着数据库中发生了事务回滚操作。今日有客户的数据库环境监控了该指标,提示回滚率过高,谈谈我的看法。
最近一个朋友在测试Oracle GoldenGate(V12)从oracle 19c到kafka同步时,extract, pump进程都正常,extract有抽取到,但是pump进程running无投递数据。在我修改pump进程从某文件的时间开始后,再次启动终于提示了错误信息:
ERROR OGG-02650 Source wildcard specification USER1.T1 does not include a catalog name, but the source table name PDB1.USER1.T1includes a catalog name.