更新时间:2026-07-28 GMT+08:00
分享

技术原理

核心机制

  • 依赖关系记录

    记录数据库对象间的依赖关系,用于数据库对象间的级联失效。

  • 级联失效

    当依赖对象发生变更时,基于对象的依赖关系,沿依赖链路级联失效。

  • 重编译

    通过自动重编译、手动重编译将数据库对象刷为有效。

性能指标

不涉及。

接口介绍

失效重编译特性支持的接口

语法

  • ALTER PACKAGE pkg_name COMPILE。
  • ALTER FUNCTION func_name COMPILE。
  • ALTER PROCEDURE proc_name COMPILE。
  • ALTER VIEW view_name COMPILE。

系统表

  • PG_DEPEND记录数据库对象间的依赖关系。
  • GS_DEP_SOURCE记录对象原始定义信息和部分编译产物。
  • PG_OBJECT记录对象状态信息。

系统视图

ADM_DEPENDENCIES/DB_DEPENDENCIES/MY_DEPENDENCIES,显示数据库中的类型、表、视图、存储过程、函数、触发器之间的依赖关系。

GUC参数

  • enable_force_create_obj=on,提供一次性入库功能。
  • ddl_invalid_mode='invalid',提供PACKAGE、函数和存储过程的级联失效功能。
  • enable_view_invalidation=on,提供视图的级联失效功能。

函数

  • PG_CATALOG.GS_COMPILE_SCHEMA重编译指定SCHEMA下视图、PACKAGE、函数和存储过程。当编译遇到视图或PL/SQL对象报错时,异常将会被捕获,继续编译其他对象,直到全部对象编译成功或者到达失败尝试次数后停止。
  • GS_SET_OBJECT_INVALID()/GS_SET_OBJECT_INVALID(SCHEMA, OBJNAME, OBJTYPE)将当前数据库中PG_OBJECT表所有或指定的PACKAGE、FUNCTION的状态置为失效,同时将依赖PACKAGE、FUNCTION的对象的状态也置为失效。仅用于规避操作,不推荐使用。

相关文档