收集统计信息报错

【 使用环境 】测试
【 OB or 其他组件 】OB
【 使用版本 】oceanbase-all-in-one-4.2.1.1
【问题描述】收集统计信息报错
【复现路径】问题出现前后相关操作
obclient [oceanbase]> call dbms_stats.gather_schema_stats(‘oceanbase’,degree=>96);
ERROR 1235 (0A000): show restore preview do not specify backup dest not supported
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(系统巡检和诊断信息收集)
observer.rar (5.4 MB)

这是一个已知问题,因为 dbms_stats.gather_schema_stats 不能统计虚表的信息,但是之前新增的一个虚表没有禁止统计功能,所以会报错。现在最新master代码已经修复了,可以下载最新代码试试。all-in_one 包的修复可能存在延迟,需要等待更新。

老师,我现在有什么规避方法,可以让统计信息收集成功?新导入大量数据,如果统计信息收集不成功的话,是不是影响查询效率?

你的数据都在 oceanbase 里面吗,一般来说应该另外新建一个database放用户数据,oceanbase更多的是用于查询内部表和视图。
查询效率和索引、缓存有关系,跟统计信息成不成功没关系吧。

我想做一个tpcc和tpch的测试,用的sys租户的oceanbase数据库,有两套环境,一套可以可以收集成功统计信息,另外一个环境不能收集成功。

是同一个版本吗

是的

通过报错的信息可以知道出问题的虚表为 __tenant_virtual_show_restore_preview,可以将该表的统计信息锁定,然后执行统计操作就可以了。加锁操作:
call dbms_stats.lock_table_stats(‘oceanbase’,’__tenant_virtual_show_restore_preview’);

好了,谢谢老师!