DDL运行,升级失败

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】4.2.1.4升4.2.1.6
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作

升级检查select * from __all_virtual_ddl_task_status; 有两条,发现是10天前的,这个要怎么去删除。

两条ddl还是运行状态么,具体执行的是什么ddl还记得么

通过object_id,找不到信息。
__all_virtual_ddl_task_status; 表中没有session_id,找不到具体的。
后台没有长时间的session

如果确认要取消ddl的话,可以在系统租户下, 执行alter system cancel task ‘trace_id’,其中trace_id可以从__all_virtual_ddl_task_status中的trace_id列获取到。

好的,我试试

select * from __all_virtual_ddl_task_status;
查看,还在呢

在__all_virtual_processlist中找下有没有session_id呢,kill下

select * from __all_virtual_processlist;
根据trace id 也没找到

现在要怎么处理呢

sql使用root@sys租户执行的么,或者尝试用obd cluster restart 重启一下集群

这个操作,不行,不能这么干。 :rofl:

生产环境就算了 :laughing: alter system cancel task ‘trace_id’ TENANT = ‘tenant_name’; 默认是当前租户,sql后边把租户带上试试呢

老师 这个__all_virtual_ddl_task_status 表中的这两条信息可以给全吗?看下后面部分的截图
select * from __all_virtual_ddl_task_status\G 看到应该较全

你瞅瞅

没有后面加tenant的语法的。
那样写会报语法错误的

有tenant_id

可以拿trace看看这个task卡在哪里了

试下 连进业务租户,手工校正下 __all_ddl_task_task:update __all_ddl_task_status set status=10, ret_code=0 where task_id = xxx; 然后重启 observer 集群

已经手工把这两条记录删除了