在 SPL 例程引用表模式之后,或引用表模式的已准备就绪的对象更改之后,AUTO_REPREPARE 配置参数控制数据库服务器是否自动地重新优化 SPL 例程和重新准备已准备就绪的对象。
- onconfig.std 值
- 未设置。如果 AUTO_TUNE 配置参数设置为 1,则自动地重新优化 SPL 例程,并自动地重新准备已准备就绪的对象。
- 值
- 0 = 在修改一个直接引用表或间接引用表的模式之后,禁用已准备就绪对象的自动重新准备。还会在修改间接引用表的模式之后禁用 SPL 例程的自动重新优化。
1 = 启用自动重新准备和自动重新优化。
- 生效
- 编辑 onconfig 文件并重启数据库服务器之后。
- 当您通过运行 onmode -wf 命令在
onconfig 文件中动态地重置该值时。
- 如果在当前 onconfig 文件中未设置 AUTO_REPREPARE 值,编辑 AUTO_TUNE 配置参数并重启数据库服务器。
- 当您通过运行 onmode -wm 命令重置内存中的该值时。
用法
通过启用 AUTO_REPREPARE 配置参数,您可以避免许多 -710 错误,并减少重新准备和重新优化操作的数目。修改 SPL 例程中动态 SQL 语句或 DML 语句引用的表模式之后,您必须明确地执行这些重新准备和重新优化操作。
例如,某些 DDL 语句修改表模式,诸如 CREATE INDEX、DROP INDEX、DROP COLUMN 和 RENAME COLUMN。如果在运行这些 DDL
语句时禁用了 AUTO_REPREPARE 配置参数,则用户会收到
-710 错误。
这些错误还会发生,如果您下次运行:
- 直接引用或间接引用被 DDL 语句修改的表的 SPL 例程。
- 引用被 DDL 语句修改的表的已准备就绪对象。
限制:
启用 AUTO_REPREPARE 可能不会影响已准备就绪的语句或引用表的 SPL 例程,DDL 操作改变这些表中的列数,或者一列的数据类型。这些模式更改之后,对于引用模式已经更改的表的
SPL 例程,您往往一定会重新发出 DESCRIBE 语句、PREPARE 语句(对于已准备就绪的对象)和 UPDATE STATISTICS 语句(对于例程相关的游标)。否则,不管
AUTO_REPREPARE 的设置,数据库服务器都会发出 SQL 错误 -710。