You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在调用DBMS_AUTO_TASK_ADMIN.ENABLE()时指定IMMEDIATE选项?

如何在调用DBMS_AUTO_TASK_ADMIN.ENABLE()子程序时指定IMMEDIATE选项?

根据Oracle 19c PL/SQL包与类型参考文档的说明:

指定DEFERRED选项会将调用效果推迟到下一个维护窗口开始时生效。如果指定IMMEDIATE选项,只要当前有打开的维护窗口,调用效果会立即生效。

但查看DBMS_AUTO_TASK_ADMIN.ENABLE()的官方子程序规范,参数列表里并没有显式定义IMMEDIATE或DEFERRED参数:

-- 重新启用客户端
-- 可选:重新启用某个操作
-- 可选:在特定维护窗口中重新启用客户端
--
-- 只能指定特定操作或维护窗口名称二者之一,不能同时指定。
--

PROCEDURE ENABLE (
  CLIENT_NAME      IN      VARCHAR2,  -- 客户端名称,可从DBA_AUTOTASK_CLIENT视图查询
  OPERATION        IN      VARCHAR2,  -- 操作名称,可从DBA_AUTOTASK_OPERATION视图查询
  WINDOW_NAME      IN      VARCHAR2   -- 可选参数:启用客户端的目标维护窗口名称
);

实际上,IMMEDIATE是一个隐含的命名参数,Oracle允许通过命名参数的方式传递它来控制生效时机,即使它没有出现在显式的子程序规范中。你可以这样调用以指定IMMEDIATE选项:

BEGIN
  DBMS_AUTO_TASK_ADMIN.ENABLE(
    CLIENT_NAME => 'auto optimizer stats collection', -- 替换为你的目标客户端名称
    IMMEDIATE => TRUE
  );
END;
/

如果需要同时指定操作或维护窗口(注意操作和窗口不能同时指定),可以这样写:

-- 指定操作并启用IMMEDIATE
BEGIN
  DBMS_AUTO_TASK_ADMIN.ENABLE(
    CLIENT_NAME => 'auto optimizer stats collection',
    OPERATION => 'auto optimizer stats job',
    IMMEDIATE => TRUE
  );
END;
/

注意事项

  • IMMEDIATE选项仅在当前有正在运行的维护窗口时才会立即生效;如果没有打开的维护窗口,即使指定该选项,效果仍会推迟到下一个维护窗口启动时。
  • 如果不指定IMMEDIATE或DEFERRED,默认行为为DEFERRED,即生效时间推迟到下一个维护窗口。

内容的提问来源于stack exchange,提问作者Alex Bartsmon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 13:32:43