精华内容
下载资源
问答
  • 有时候对于需要执行job查询执行情况,比如正在执行那条语句,或者想把job停下来等。一般不知道怎么查询到job执行的session的sid.方法一:select * from dba_jobs_running如果运行比较慢,加select /*+ rule */* ...

    有时候对于需要执行的job查询执行情况,比如正在执行那条语句,或者想把job停下来等。一般不知道怎么查询到

    job执行的session的sid.

    方法一:

    select * from dba_jobs_running

    如果运行比较慢,加

    select /*+ rule */* from dba_jobs_running

    方法二:

    <1>首先得到job号,从user_jobs或者dba_jobs

    select * from user_jobs where upper(what) like '%MYPROGRAM%'

    <2> 根据job号查询sid号

    select * from v$lock where id2 = 3361910 and type ='JQ'

    就可以查询到sid了

    比如查询当前的执行什么语句

    select sql_text from v$sqlarea a,v$lock b,v$session c,user_jobs d

    where d.upper(what) like '%2004PRESENT%'

    and d.job = b.id2

    and b.type='JQ'

    and b.sid = c.sid

    and a.hash_value = c.sql_hash_value

    and a.address = c.sql_address[@more@]

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15797451/viewspace-2120725/,如需转载,请注明出处,否则将追究法律责任。

    展开全文
  • oracle 停止正在运行Joboracle 停止正在运行Jobselect t.SID,t.job,(select t_j.what from user_jobs t_j where t_j.job=t.job),t.* from dba_jobs_running t;SELECT SID,SERIAL# FROM V$SESSION WHERE SID= '...

    oracle 停止正在运行的 Job

    oracle 停止正在运行的 Job

    select t.SID,

    t.job,

    (select t_j.what from user_jobs t_j where t_j.job=t.job),

    t.* from dba_jobs_running t;

    SELECT   SID,SERIAL#   FROM   V$SESSION   WHERE   SID= '274';

    ALTER   SYSTEM   KILL   SESSION   '274,37794';

    ===================================================

    参考

    --找出正在执行的JOB编号及其会话编号

    SELECT   SID,JOB   FROM   DBA_JOBS_RUNNING;

    --停止该JOB的执行

    SELECT   SID,SERIAL#   FROM   V$SESSION   WHERE   SID= '&SID ';

    ALTER   SYSTEM   KILL   SESSION   '&SID,&SERIAL ';

    EXEC   DBMS_JOB.BROKEN(&JOB,TRUE);

    展开全文
  • SQL> SET LINESIZE 120;SQL> COL job_name for A20;SQL> SELECT log_id,2 job_name,3 status,4 TO_CHAR (log_date, 'DD-MON-YYY HH24:MI') log_date5 FROM dba_sched...

    SQL> SET LINESIZE 120;

    SQL> COL job_name for A20;

    SQL> SELECT   log_id,

    2           job_name,

    3           status,

    4           TO_CHAR (log_date, 'DD-MON-YYY HH24:MI') log_date

    5    FROM   dba_scheduler_job_run_details

    6   WHERE   job_name = 'GATHER_STATS_JOB';

    LOG_ID JOB_NAME             STATUS                         LOG_DATE

    ---------- -------------------- ------------------------------ ----------------------

    75447 GATHER_STATS_JOB     STOPPED                        08-APR-011 06:00

    75870 GATHER_STATS_JOB     STOPPED                        09-APR-011 06:00

    77770 GATHER_STATS_JOB     STOPPED                        12-APR-011 06:00

    73193 GATHER_STATS_JOB     STOPPED                        05-APR-011 06:00

    69619 GATHER_STATS_JOB     STOPPED                        30-MAR-011 06:00

    70698 GATHER_STATS_JOB     STOPPED                        01-APR-011 06:00

    66689 GATHER_STATS_JOB     STOPPED                        24-MAR-011 06:00

    63069 GATHER_STATS_JOB     STOPPED                        17-MAR-011 06:00

    74768 GATHER_STATS_JOB     SUCCEEDED                      07-APR-011 04:39

    70309 GATHER_STATS_JOB     STOPPED                        31-MAR-011 06:00

    71489 GATHER_STATS_JOB     STOPPED                        02-APR-011 06:00

    71627 GATHER_STATS_JOB     SUCCEEDED                      02-APR-011 09:48

    74149 GATHER_STATS_JOB     STOPPED                        06-APR-011 06:00

    76228 GATHER_STATS_JOB     SUCCEEDED                      09-APR-011 08:12

    14 rows selected.

    展开全文
  • oracle如何查询和停止正在运行job

    千次阅读 2013-07-24 11:22:01
    当一个oracle job运行时返回一个error时,oracle会再次设法执行它,第一次尝试是在一分钟后,第二次是在2分钟后,第三次是4分钟后,以此类推。每次尝试的周期加倍,直到下一次的运行时刻来到,又再次尝试,当尝试...
    今天遇到一个问题,有一个JOB会一直不停的执行,不能按照设定的间隔来执行。通过查询相关资料发现原来如此: 
    

    当一个oracle job运行时返回一个error时,oracle会再次设法执行它,第一次尝试是在一分钟后,第二次是在2分钟后,第三次是4分钟后,以此类推。每次尝试的周期加倍,直到下一次的运行时刻来到,又再次尝试,当尝试执行失败16次时,oracle自动标示此job为broken,不再执行此任务。

    由于这是一个不能重复跑的JOB,就查找如何停止正在运行的JOB,操作如下:

    1. 首先确定要停止的JOB号

    在10g中可通过Dba_Jobs_Running进行确认。

    查找正在运行的JOB:

    select sid from dba_jobs_running;


    查找到正在运行的JOB的spid:

    select a.spid from v$process a ,v$session b where a.addr=b.paddr and b.sid in (select sid from dba_jobs_running);



    2. Broken你确认的JOB
    注意使用DBMS_JOB包来标识你的JOB为BROKEN。

    SQL> EXEC DBMS_JOB.BROKEN(job#,TRUE);

    注意:当执行完该命令你选择的这个JOB还是在运行着的。


    3. Kill 对应的Oracle Session

    应为BROKEN后该JOB还在运行,如果要求该JOB立刻停止,就需要找到该job的对应SESSION(SID,SERIAL#),然后执行以下命令:

    ALTER SYSTEM KILL SESSION 'sid,serial#';

    或者直接KILL对应的操作系统的SESSION,如果使用ALTER SYSTEM KILL SESSION执行很长时间,其实可以使用OS的命令来快速KILL掉SESSION.

    For Windows, at the DOS Prompt: orakill sid spid

    For UNIX at the command line> kill –9 spid

    注意:ALTER SYSTEM KILL SESSION 'sid,serial#'; 有时候是关闭不掉了,杀掉只有又会自动执行,因此建议直接啥系统线程

    4. 检查你的JOB是否还在运行

    检查你要停止的JOB是否还在运行,其实多数情况下,应该都已经停止了。尤其执行的第三步的“杀手”命令。如果真的还是没有停止,只好从第一道第三步重新做一下了。


    5. 将Job Queue Processes的数目修改为0

    首先确认当前的Job Queue Processes的数目

    SQL> col value for a10

    SQL> select name,value from v$parameter where name ='job_queue_processes';

    然后将Job Queue Processes的数目修改为0

    SQL> ALTER SYSTEM SET job_queue_processes = 0;

    保证所有的JOB都会停止。


    6. 修改你要修改的任何东西,甚至是JOB内的内容。


    7. 修改完成后,将job的BROKEN状态停止。

    SQL>EXEC DBMS_JOB.BROKEN(job#,FALSE):


    8. 恢复job_queue_processes的原始值

    ALTER SYSTEM SET job_queue_processes = original_value;

    至此整个停止并修改JOB完成.



    但是需要另外注意一下的是,在MARK一个BROKEN状态的时候,因为JOB内部执行SQL的原因,所以执行时或许要“煎熬”一段时间。所以在建立JOB时一定要仔细考虑,同时如果可能可以在你设计的PL/SQL代码中,增加一些判断“停止信号”的部分。来避免费力执行上面的步骤。

    毕竟,ORACLE在执行JOB时,还是很“倔强”的 -:)


    4 附件:ORAKILL用法
    很多时候遇到某个session一直处于active,使得CPU一直处于搞使用状态,虽然kill 了,但是却不能够使得使得线程结束。 kill session只是kill这个进程,但是线程一直处于活动状态。需要真正的kill线程才能够解决cpu使用率高的问题。

    os :windows2003

    ORAKILL用法是 orakill sid spid 其中sid为实例名,spid为线程号。

    怎么样取得这个spid呢?

    以下给出查找spid的语句。

    select spid, osuser, s.program from v$process p, v$session s

    where p.addr=s.paddr and s.sid = XXX;

    --说明:XXX为session的sid (不是数据库SID 呵呵)。自己输入就可以。
    orakill instance_name spid

    这样就能够成功解决cpu使用率高的问题
    展开全文
  • oracle如何查询和停止正在运行job  找出正在执行JOB编号及其会话编号  SELECT SID,JOB FROM DBA_JOBS_RUNNING;  停止该JOB执行  SELECT SID,SERIAL# FROM V$SESSION WHERE SID='&...
  • oracle 停止正在运行job

    千次阅读 2011-04-28 14:23:00
    <br />ORACLE如何停止一个JOB 1 相关表、视图 2 问题描述 为同事解决一个因为网络连接情况不佳时,执行一个超长时间的SQL插入操作。 既然网络状况不好,就选择了使用一次性使用JOB来完成...
  • 1、找出正在执行job编号 和会话编号 SELECT*FROMdba_jobs_running; 2、停止job运行 SELECTSID,serial#FROMv$sessionWHERESID='$SID'; EXECdbms_job.broken(&JOB,TRUE);--一定要先broken ALTER...
  • oracle查询所有的job

    千次阅读 2010-12-28 10:14:55
    select * from all_jobs   --查询当天跑的job select * from all_jobs where last_date&gt;=trunc(sysdate)        --查询当天跑的job select * from all_jobs where last...--查询某一job执行了多...
  • Oracle Kill 正在运行Job

    千次阅读 2012-02-16 19:55:18
    转自:http://levicorp.com/2009/05/22/how-to-kill-the-running-job/... Check the running Job (From here you will get the SID thatrunning the Job)SQL> SELECT * FROM DBA_JOBS_RUNNING;2. Make Job become Brok
  • Oracle 11g 停止正在运行job

    千次阅读 2019-01-22 11:43:05
    1.查询正在运行job 【下面两个都可以】  select * from Dba_Scheduler_Running_Jobs  select * from user_scheduler_jobs where state='RUNNING'; 根据job名 强制停止job  exec dbms_schedu...
  • 完全停止Oracle正在运行JOB

    千次阅读 2016-12-29 09:04:19
    Killing the Oracle DBMS_JOBJames F. Koopmann, www.dbdoctor.net源地址:http://www.quest-pipelines.com/newsletter-v4/0403_C.htmTake control of Oracle's queue with a step by step approach to getting ...
  • oracle 查询数据库job的具体内容 执行时间 编号等
  • oracle 强制停止正在运行job

    千次阅读 2018-03-05 15:32:07
    //获取正在运行的jobselect...//获取正在运行job(24)的详细信息select b.SID,b.SERIAL#,c.SPIDfrom dba_jobs_running a,v$session b,v$process cwhere a.sid = b.sid and b.PADDR = c.ADDR and a.job=24//杀死jobA...
  • 2、查看正在运行job; select * from dba_jobs_running; 3、根据sid查出对应的session; select SID,SERIAL# from V$Session where SID='&SID'; 4、kill对应的session; alter syste...
  • http://cherryqq.iteye.com/blog/855022http://www.cnblogs.com/lumnm/archive/2012/08/31/2666155.htmloracle joboracle 重新启动后,还会执行。一:简单测试job的创建过程案例:1,先创建一张JOB_TEST表,字段为...
  • ORACLE查询JOB信息及JOB创建

    千次阅读 2015-11-26 09:39:24
    1、查询系统JOB select job, what, to_char(next_date, 'yyyy/mm/dd hh24:mi:ss'), broken, ...
  • --oracle JOB 查询 添加 修改 删除 运行  -------------查询JOB----------------- select job, what, next_date, next_sec, sysdate, failures, broken,interval from user_jobs a; select * from dba_jobs; ...
  • 1.首先确定要停止的JOB号 select * from dba_jobs_running;--得到sid和job号 2.Broken你确认的JOB 可以在PL/SQL Developer中,直接选项broken;或者使用语句: ...3.Kill 对应的Oracle Session sele...
  • Oracle查询运行job的方法

    千次阅读 2008-03-20 18:56:45
    想查一下Oralce中哪些job运行,看了半天dba_jobs表,后来才发现,其实,Oracle已经给我们提供了一个视图方便查看,只是没有注意到罢了,就是dba_jobs_running。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,211
精华内容 26,884
关键字:

oracle查询正在执行的job