如何停止Oracle dbms_job

时间:2016-12-06 07:22:23

标签: database oracle dbms-job

我的dbms_job已经运行了将近三十天。

总时间不断增加,但我无法找到正在运行的工作的任何信息。

当我执行"选择*来自dba_jobs;"的sql时,结果显示没有作业正在运行。

我把它设置为坏了,但它没有用。

如何安全地停止此dbms_job?

the job's information

3 个答案:

答案 0 :(得分:0)

没有杀死会话,你运气不好。

来自Documentation

  

请注意,一旦作业启动并运行,就没有简单的方法可以停止作业。

这是您不再使用dbms_job的众多原因之一。请改用dbms_scheduler

答案 1 :(得分:0)

DBA_JOBS列出数据库中创建的所有作业。您可以使用DBA_JOBS_RUNNING视图列出实例中当前正在运行的所有作业。

  

当我执行"选择*来自dba_jobs;"的sql时,结果显示没有作业正在运行。

这显示了使用DBMS_JOBS包创建的所有作业。该作业可能是使用DBMS_SCHEDULER包创建的。

SQL> select job from user_jobs;

       JOB
----------
        99

我使用名为DBMS_JOB的{​​{1}}包创建了一个作业。 其他人使用99包创建,可以使用:

DBMS_SCHEDULER

根据文件 -

  

停止工作

     

请注意,一旦作业启动并运行,就没有简单的方法可以停止作业。

要阻止这项工作并不容易。

不知道您使用的是哪个版本的Oracle数据库。但从Oracle 10g开始您可以使用以下查询列出计划的作业。

SQL> select job_name from user_scheduler_jobs;
  

ALL_SCHEDULER_JOBS

     

ALL_SCHEDULER_JOBS显示有关当前用户可访问的调度程序作业的信息。More...


使用以下查询查找当前正在运行的作业。

SQL>select * from all_scheduler_jobs;

停止 -

SQL>select job_name, session_id, running_instance, elapsed_time, cpu_used
from user_scheduler_running_jobs;

答案 2 :(得分:0)

在“从DBA_JOBS_RUNNNG中选择*”中签出SID 多数民众赞成在会话ID 终止该会话,并且更改将被回滚,因此,如果该批量更新已完成90%,则中止它所花费的时间比完成它要花费更多的时间。