使数据库对象自动重新生效

自动重新生效是运行时访问无效的数据库对象时使其自动重新生效的一种机制。

一个数据库对象通常依赖于一个或多个不同的基本对象。 如果数据库对象所依赖的基本对象的状态在任何重要的方面作出更改(例如变更或删除基本对象),那么从属数据库对象会变无效。 必须使无效的数据库对象重新生效,然后才能再次使用这些对象。 重新验证是一个过程, Db2® 软件通过该过程重新处理无效从属对象的定义,以便使用其基本对象的当前状态更新该对象,从而将无效从属对象重新变成可用的有效对象。 自动重新生效是运行时访问无效的数据库对象时使其自动重新生效的一种机制。

通常,数据库管理器将在无效对象下次被使用时尝试使那些对象重新生效。 通过 auto_reval 配置参数启用了自动重新验证。 缺省情况下,此配置参数设置为 DEFERRED(从 V9.5 或更低版本升级的数据库除外,对于这些数据库,auto_reval 设置为 DISABLED)。

有关在删除对象以及重新验证这些从属对象时受影响的从属对象的信息,请参阅 DROP 语句

以下列表显示了当前支持自动重新生效功能的数据定义语言 (DDL) 语句:
  • ALTER MODULE DROP FUNCTION
  • ALTER MODULE DROP PROCEDURE
  • ALTER MODULE DROP TYPE
  • ALTER MODULE DROP VARIABLE
  • ALTER NICKNAME(更改局部名或局部类型)
  • ALTER TABLE ALTER COLUMN
  • ALTER TABLE DROP COLUMN
  • ALTER TABLE RENAME COLUMN
  • CREATE OR REPLACE ALIAS
  • CREATE OR REPLACE FUNCTION
  • CREATE OR REPLACE NICKNAME
  • CREATE OR REPLACE PROCEDURE
  • CREATE OR REPLACE SEQUENCE
  • CREATE OR REPLACE TRIGGER
  • CREATE OR REPLACE VARIABLE
  • CREATE OR REPLACE VIEW
  • DROP FUNCTION
  • DROP NICKNAME
  • DROP PROCEDURE
  • DROP SEQUENCE
  • DROP TABLE
  • DROP TRIGGER
  • DROP TYPE
  • DROP VARIABLE
  • DROP VIEW
  • RENAME TABLE

为减少对象重新验证对未来存取的影响,在您完成对导致对象失效的更改后,强烈建议运行 SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS 过程以重新验证受影响的失效对象,并执行 db2rbind 命令以重新验证失效包。

注意: 不支持自动重新验证有源例程以及外部 Java 和 C 例程。 如果这三种例程变为无效,那么需要您拖动并重新创建这些例程。