MAX_IDLE_BLOCKER_TIME 设置持有所需资源的会话在成为终止候选者之前可以空闲的分钟数。
MAX_IDLE_TIME 为所有空闲会话设置限制,而 MAX_IDLE_BLOCKER_TIME 仅为消耗资源的空闲会话设置限制。 MAX_IDLE_TIME 对于连接池来说可能是有问题的,因为它可能会不断地尝试重新创建由该参数终止的会话。
MAX_IDLE_BLOCKER_TIME 参数介绍
此页面提供有关用于影响会话行为的新初始化参数 MAX_IDLE_BLOCKER_TIME 的更多详细信息。
在 Oracle Database 19c 中,您可以指定会话可以处于空闲状态的时间量,之后会话将被终止。 您可以通过设置来定义最大会话空闲时间:
以秒为单位的 MAX_IDLE_TIME 资源计划指令。 默认值为 NULL,表示无限制。
GROUP_OR_SUBPLAN => 'REPORTING', -
MGMT_P1 => 15, -
MAX_IDLE_LIMIT => 600)
MAX_IDLE_TIME 初始化参数,以分钟为单位。 默认值 0 表示没有限制。 您还可以通过设置指示阻塞会话的最大会话空闲时间的 MAX_IDLE_BLOCKER_TIME 资源计划指令,指定更严格的空闲时间限制,该限制仅适用于空闲消耗资源并因此阻塞其他会话的会话。 默认值为 NULL,表示无限制。
Oracle Database 21c 允许您设置 MAX_IDLE_BLOCKER_TIME 初始化参数来定义阻塞会话的最大会话空闲时间,以分钟为单位。 默认值 0 表示没有限制。
实践: 使用 the MAX_IDLE_BLOCKER_TIME 参数
概述 此实践展示了如何使用新的 MAX_IDLE_BLOCKER_TIME 初始化参数终止阻塞会话。
在开始任何新的实践之前,请参阅实践环境建议。
第 1 步:使用两个会话设置环境 准备两个终端会话,一个以 HR 身份登录到 PDB21,另一个以 SYSTEM 身份登录到 PDB21。
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Enter password:
Connected to:
SQL> SET SQLPROMPT "SQL system> "
SQL system>
以 HR 身份登录 PDB21
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Enter password:
Connected to:
SQL> SET SQLPROMPT "SQL hr> "
SQL hr>
SQL>
第 2 步:将 MAX_IDLE_BLOCKER_TIME 设置为两分钟 在 SYSTEM 会话中,将 MAX_IDLE_BLOCKER_TIME 初始化参数设置为两分钟。
System altered.
SQL system> SHOW PARAMETER max_idle_blocker_time
NAME TYPE VALUE
------------------------------- ----------- ------------------------------
max_idle_blocker_time integer 2
SQL system>
第 3 步:测试 在 HR 会话中,更新员工的工资。
107 rows updated.
SQL hr>
在SYSTEM会话中,将所有员工的佣金百分比设置为0。该语句等待HR在该行上持有的锁资源被释放。
两分钟后,观察语句是否被执行。
SQL system> COMMIT;
Commit completed.
SQL system>
回到 HR 会话,查询工资更新的结果。
SELECT salary FROM hr.employees *
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 32314
Session ID: 274 Serial number: 8179
SQL hr> EXIT
Speak Your Mind