我的dbms_job已经运行了将近三十天。
总时间不断增加,但我无法找到正在运行的工作的任何信息。
当我执行"选择*来自dba_jobs;"的sql时,结果显示没有作业正在运行。
我把它设置为坏了,但它没有用。
如何安全地停止此dbms_job?
答案 0 :(得分:0)
没有杀死会话,你运气不好。
请注意,一旦作业启动并运行,就没有简单的方法可以停止作业。
这是您不再使用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%,则中止它所花费的时间比完成它要花费更多的时间。