1 温柔的方法
1.查看所有job
select * from dba_jobs;
2.查看正在运行的job
select * from dba_jobs_running;
3.根据sid查出对应的session
select SID,SERIAL# from V$Session where SID='&SID';
4.kill对应的session
alter system kill session '&SID,&SERIAL';
5.将job置为broken
exec dbms_job.broken('&JOB',true);
6.sysdba用户权限删除job
delete from dba_jobs where JOB='&JOB';
例:
- 查询出正在执行的job
SQL> select * from dba_jobs_running;
no rows selected
SQL> select * from Dba_Scheduler_Running_Jobs;
OWNER JOB_NAME JOB_SUBNAME JOB_STYLE DETAC SESSION_ID SLAVE_PROCESS_ID SLAVE_OS_PRO RUNNING_INSTANCE RESOURCE_CONSUMER_GROUP ELAPSED_TIME CPU_USED DESTINATION_OWNER DESTINATION CREDENTIAL_OWNER CREDENTIAL_NAME LOG_ID
----------------- -------------------- ----------------------- ----------- ----- ---------- ---------------- ------------ ---------------- ------------------------------ ------------------------------ ----------
BIGDATA_AUTH ????_?? REGULAR FALSE 1399 71 137304 1 +000 00:39:19.71 +000 00:00:07.14
- 根据sid查询出session信息
SQL> select SID,SERIAL# from V$Session where SID='1399';
SID SERIAL#
---------- ----------
1399 1083
- kill session
SQL> alter system kill session '1399,1083';
System altered.
- 查看是否还在执行
SQL> select * from Dba_Scheduler_Running_Jobs;
no rows selected
2 强制
重启oracle数据库
3 变态的方法
重启数据库服务器操作系统