您可以启用服务器强行排除在记录数据库中发出 ALTER FRAGMENT
ON TABLE 操作时涉及的表中打开的或锁定的事务。您可能希望对忙碌的系统执行此操作,可能是一天运行 24 小时,且您不希望在变更分段前等待会话关闭。
请注意,当您启用服务器强行排除事务时,服务器将回滚其他用户的事务。服务器还会在执行 ALTER FRAGMENT ON TABLE 操作的会话回滚期间关闭保持游标。
先决条件:
- 必须是用户 gbasedbt 或具有数据库的 DBA 特权。
- 表必须在记录数据库中。
要在变更表分段时强行排除事务:
-
将 SET ENVIRONMENT 语句的 FORCE_DDL_EXEC 环境选项设置为以下某个值:
- 'ON'、'on' 或 '1',以启用服务器强行排除发出 ALTER FRAGMENT ON TABLE 语句时表中打开的或锁定的事务,直至服务器获取表的锁定和互斥存取。
- 代表时间量(以秒为单位)的正整数数字。该数字值会启用服务器强行排除事务,直至服务器获取表的互斥存取和互斥锁定,或直至达到指定的时间限制。如果服务器无法按指定的时间量强行排除事务,那么服务器将停止尝试强行排除事务。
例如,要启用 FORCE_DDL_EXEC 环境选项以在发出 ALTER FRAGMENT ON TABLE 语句时运行 100 秒,请指定:
SET ENVIRONMENT FORCE_DDL_EXEC '100';
-
将锁定方式设置为等待确保服务器将在强行排除任意事务前等待指定的时间量。
例如,要将锁定方式设置为等待 20 秒,请指定:
SET LOCK MODE TO WAIT 20;
有关更多信息,请参阅将锁定方式设置为等待。
-
运行一个 ALTER FRAGMENT ON TABLE 语句,例如,要连接、拆离、修改、添加或删除分段。
当您完成启用了 FORCE_DDL_EXEC 环境选项的 ALTER FRAGMENT ON TABLE 操作后,可以将 FORCE_DDL_EXEC 环境选项关闭。例如,指定:
SET ENVIRONMENT FORCE_DDL_EXEC 'OFF'