epean
2024 年11 月 19 日 14:01
#1
【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.1-8BP
【问题描述】
执行以下语句,出现 invalid numeric。
当时间选择其他日期都正常。 再筛选该日期其他id数据, 仅 <603396061 的数据出现异常。其他都正常执行。 即使将 t2表 id <603396061 的数据删除, 执行sql也报错
update
sale_trade_detail t2
left JOIN prod_sync_p_ebay t3
ON t2.item_id = t3.item_id
AND t2.store_acct_id = t3.store_acct_id
SET t2.plat_code = ‘xxxx’
WHERE
t3.country NOT IN ( ‘HK’, ‘CN’, ‘TW’ )
AND t2.trade_date
BETWEEN ‘2024-11-16’ AND ‘2024-11-17’
AND t2.prod_s_id IS NOT NULL
AND t2.plat_code = ‘ebay’
and t2.id <= 603396061
淇铭
2024 年11 月 19 日 14:07
#3
1、打开调试信息参数
alter system set enable_rich_error_msg=true;
2、语句执行报错 例如:
obclient [test]> select count(*) from t2;
ERROR 1146 (42S02): Table ‘test.t2’ doesn’t exist
[xx.xx.xx.1:2882] [2024-04-13 20:10:20.292087] [YB420BA1CC68-000615A0A8EA5E38-0-0]
3、查看日志信息
[root@x.x.x.1 ~]$ grep “YB420BA1CC68-000615A0A8EA5E38-0-0” rootservice.log
[root@x.x.x.1 ~]$ grep “YB420BA1CC68-000615A0A8EA5E38-0-0” observer.log
4、关闭调试信息参数
alter system set enable_rich_error_msg=false;
1 个赞
set ob_enable_show_trace=1;
执行sql
select last_trace_id();
然后去observer.log grep一下trace id看看。
epean
2024 年11 月 19 日 14:22
#6
仅在obproxy中找到这个 traceId的信息
淇铭
2024 年11 月 19 日 14:23
#7
这样排查一下
1)设置trace信息
SET ob_enable_show_trace=‘ON’;
2)执行sql。
3)获取上个命令的trace
select last_trace_id();
4)获取trace对应的节点
select query_sql,svr_ip from gv$ob_sql_audit where trace_id=‘第三步获取的trace信息’;
5)取对应的svr_ip节点 过滤日志
grep “第三步获取的trace信息” observer.log*
grep “第三步获取的trace信息” rootservice.log*
6)提供日志信息即可。
淇铭
2024 年11 月 19 日 14:26
#8
不应该在日志信息查询不到呀 你按照我上面发的在排查一下
epean
2024 年11 月 19 日 14:30
#9
我做了标记为 test999,然后去查询GV$OB_SQL_AUDIT
然后去查询机器日志
结果显示如下
只能在obproxy日志中找到这个traceId的记录
整个请求都没到 observer。 直接在obproxy就被拦截了
淇铭
2024 年11 月 19 日 14:36
#10
你把obproxy_error的错误信息 发全一点 看看
epean
2024 年11 月 19 日 14:50
#14
集群 sysLogLevel 我设定的WARN级别。
WDIAG级别日志太多了···
淇铭
2024 年11 月 19 日 14:52
#15
更新的数据类型或者长度 是否匹配 表结构能发一下么?
淇铭
2024 年11 月 19 日 14:54
#16
能临时改一下么?这样方便排查问题 查找到日志 上传一下日志
epean
2024 年11 月 19 日 15:00
#17
改WDIAG后, observer筛选日志
wwww.log (15.7 KB)
淇铭
2024 年11 月 21 日 09:59
#20
epean:
WDIAG
完整的日志observer.log日志还有么?如果没有保存,把日志级别改成WDIAG 把trace_id发一下 重新发一个完整observer.log日志 排查过程发现调用栈日志不够完整