## oracle 数据库 job 操作 **停止job** `force => TRUE` 不检查任务是否正在运行强制停止 ```sql BEGIN DBMS_SCHEDULER.STOP_JOB(job_name => 'TEST_JOB', force => TRUE); END; ``` **删除job** `force => TRUE` 不检查任务是否正在运行强制删除 ```sql 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;