【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】4.2.1.4升4.2.1.6
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
升级检查select * from __all_virtual_ddl_task_status; 有两条,发现是10天前的,这个要怎么去删除。
【 使用环境 】生产环境 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列获取到。
好的,我试试
在__all_virtual_processlist中找下有没有session_id呢,kill下
select * from __all_virtual_processlist;
根据trace id 也没找到
现在要怎么处理呢
sql使用root@sys租户执行的么,或者尝试用obd cluster restart 重启一下集群
这个操作,不行,不能这么干。
生产环境就算了 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 集群
已经手工把这两条记录删除了