article/oracle/oracle.md
2025-03-21 15:27:15 +08:00

1.7 KiB

oracle 数据库 job 操作

停止job force => TRUE 不检查任务是否正在运行强制停止

BEGIN
  DBMS_SCHEDULER.STOP_JOB(job_name => 'TEST_JOB', force => TRUE);
END;

删除job force => TRUE 不检查任务是否正在运行强制删除

BEGIN
  DBMS_SCHEDULER.DROP_JOB(job_name => 'TEST_JOB');
END;

创建job

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name        => 'MC_CH_ISSUE_INFO_CLEAN_NEW',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN MC_CH_ISSUE_INFO_CLEAN_EVD; END;',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'FREQ=DAILY; BYHOUR=8; BYMINUTE=25;',
    enabled         => TRUE
  );
END;

停止执行计划

BEGIN
  DBMS_SCHEDULER.DISABLE('MC_CH_ISSUE_INFO_CLEAN');
END;

运行一个计划

BEGIN
  DBMS_SCHEDULER.RUN_JOB('test_job');
END;

关闭sesseion

SELECT
    s.sid,
    s.serial#,
    s.username,
    s.osuser,
    s.machine,
    s.program,
    s.sql_id,
    l.type,
    l.lmode,
    l.request
FROM
    v$session s
    JOIN v$lock l ON s.sid = l.sid
WHERE
    l.id1 = (SELECT object_id FROM dba_objects WHERE object_name = 'MKT_TEST')
    AND l.type = 'TM'; -- TM 锁表示表锁



SELECT
    s.sid,
    s.serial#,
    s.username,
    s.osuser,
    s.machine,
    s.program,
    s.sql_id,
    q.sql_text
FROM
    v$session s
    JOIN v$sql q ON s.sql_id = q.sql_id
WHERE
    s.sid =250 -- 替换为实际的 SID
    AND s.serial# = 53879; -- 替换为实际的 SERIAL#

--关闭
ALTER SYSTEM KILL SESSION '250,53879';
--强制关闭
ALTER SYSTEM DISCONNECT SESSION '250,53879' IMMEDIATE;

数据库重启

sqlplus / as sysdba SQL> shutdown immediate; SQL> startup;