ERROR:  could not open file "base/67201/11128463": No such file or directory
ERROR:  cache lookup failed for relation 11128951

背景

测试环境postgreSQL数据库是以docker容器部署的单节点服务,机器在本地机房里。

测试服务器又又又突然挂了,重启机器后pg又又未能重启,参照记录机器断电后PG故障的解决
解决后,成功启动。

但成功启动后发现部分物化视图查询报错

could not open file "base/67201/11128463": No such file or directory

问题解决

  • 猜测是由于服务器挂掉的时候,物化视图正在执行更新操作,突然断开导致视图数据文件损坏。

  • 遂尝试刷新物化视图,以期待能够重建数据文件

    refresh materialized view  bi_view_real_time_sale_period_market_all;

    不曾想又报了一错:

    [XX000] ERROR: cache lookup failed for relation 11128466
  • 可想而知该视图已被锁定
    尝试删除视图,失败,同样的锁定错误。

  • 遂进行引用删除(注意备份视图创建语句)

    • 查询视图oid

      select oid, relname,relfilenode from pg_class where relname like '%bi_view_real_time_sale_period_market_all%';

      row: 1066610,bi_view_real_time_sale_period_market_all
    • 删除引用

      delete from pg_class where oid=1066610;

      delete from pg_depend where objid=1066610;

      delete from pg_depend where refclassid=1066610;

      delete from pg_depend where refobjid=1066610;
    • 删除type

      drop type  bi_view_real_time_sale_period_market_all;
    • 重建视图,执行成功

本文作者:Lee
本文地址leeblog.icu/2022/12/07/
版权声明:本博客所有文章除特别声明外,均采用 CC 4.0 BY-NC-SA 许可协议。转载请注明出处!