回收站设置自动清理后通过SHOW RECYCLEBIN;还能看到最早的那个object

【 使用环境 】生产环境
【 OB or 其他组件 】ob
【 使用版本 】4.2.1.5
【问题描述】ALTER SYSTEM SET recyclebin_object_expire_time = ‘550d’;开启自动清理回收站并指定550d后,通过show recyclebin还是能够看到最早的object;但是手工下purge table命令时会提示该对象已经不存在于回收站。
【复现路径】
通过ocp调整回收站过期时间:


通过show recyclebin查看回收站内对象:

通过purge table命令删除指定object:

针对这个情况,是说视图有一定的延迟更新?或者说统计信息未变更?
【附件及日志】

–清理表。–切回到表被删除前的数据库
PURGE TABLE object_name; --确定是这个表备删除前的 库执型的 命令吧

–只有root用户才能执行操作
PURGE RECYCLEBIN;

1、这个purge table执行时所在的数据库不能确认是否为删除表前的数据库。是有这个要求吗?
看官方文档没这个说明。
2、由于该数据库一直使用不规范,且回收站自开启后一直未清理过,已经运行558天,当前已经有24w行记录,且所占磁盘有1.5T,所以不敢执行purge recyclebin;担心造成io飙升影响业务访问。

第一个疑问: 您可以手工删除个, 然后切换个库 测试下。

  1. 将参数 recyclebin_object_expire_time 一天一天减少或者按照一定的天数 减少 ,然系统自己删吧。 监控下 IO 看下

好像需要到 table 被删除前的 database 里去 purge 吧?如果不加 database_name 就可以跨库去删其他库里的东西,是比较容易误操作的。而且如果要用 original_name 去 purge 和 flashback ,估计就彻底乱成一锅粥了。

如果已经赋过操作其他库里对象的权限,也可以考虑改成下面这种写法,明确下你删的东西所在的库是正确的:

purge table origin_db_name.object_name;

just like:

recyclebin_object_expire_time 这个我没接触过,不太了解了。估计是说不到 550 天的,可以保证一定不会被系统清理,而超过 550 天的才可能会被清理。但也不是一到 550 天就马上被清理,估计是有后台任务给你慢慢清~(瞎猜的)

嗯嗯,当前也是调整为550d了,先删除8天的数据吧。
另外如上咨询的,有关回收站自动清理任务的监控或者相关视图能否告知下?

这个指定db_name的语法不支持:
246fdf537ee1ef9ffd7d16d690806db

哦哦,我记得以前好像是可以的,可能是被禁掉了。那直接切到对应的 db 下去删除吧~

你这个命令就能看啊

dba_recyclebin ; --也能看

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002014307

我的问的不是看回收站内数据,是想看自动清理回收站的相关任务执行情况

喜欢大神