-- 注意需要oracle19C的版本才行
--创建日志记录表
CREATE TABLE session_kill_log (
log_time TIMESTAMP,
sid NUMBER,
sql_id VARCHAR2(13),
action VARCHAR2(20),
error_msg VARCHAR2(4000)
);
CREATE INDEX idx_log_time ON session_kill_log(log_time DESC);
ALTER TABLE session_kill_log ADD sql_fulltext CLOB;
ALTER TABLE session_kill_log ADD username VARCHAR2(30);
ALTER TABLE session_kill_log
ADD (
avg_elapsed_time_sec NUMBER(10),
avg_cpu_time_sec NUMBER(10)
);
ALTER TABLE session_kill_log ADD last_call_et NUMBER;
ALTER TABLE session_kill_log ADD (status VARCHAR2(20));
CREATE OR REPLACE PROCEDURE kill_long_sessions AS
v_count NUMBER := 0;
v_start_time TIMESTAMP;
v_error_msg VARCHAR2(4000);
BEGIN
v_start_time := SYSTIMESTAMP;
-- ✅ 记录作业启动日志(新增status字段)
INSERT INTO session_kill_log(
log_time, username, sid, sql_id, sql_fulltext,
action, error_msg, avg_elapsed_time_sec, avg_cpu_time_sec, last_call_et, status
)
VALUES (
v_start_time, NULL, NULL, NULL, NULL,
'JOB_START', NULL, NULL, NULL, NULL, NULL
);
-- 🔄 获取待终止会话信息(包含status字段)
FOR rec IN (
SELECT
aa.sid,
aa.serial#,
aa.username,
aa.sql_id,
aa.sql_fulltext,
aa.avg_elapsed_time_sec,
aa.avg_cpu_time_sec,
aa.last_call_et,
aa.status -- 新增status字段
FROM (
SELECT
s.sid,



被折叠的 条评论
为什么被折叠?



