我先用了一个job 过程和job都可以手动执行,但不能自动执行。有没有别的方法,或者给我这个方法的解决方法。我在网上看了一下,好像是说 链访问远端数据的问题。

解决方案 »

  1.   

    oracle 中的JOG本身就可以定时执行。
      

  2.   

    oracle 中的JOG本身就可以定时执行。linux :crontab里面调用不行吗  要做成SH批处理文件. 里面使用SQLPLUS 登陆 然后执行存储过程
      

  3.   

    oracle有定时任务设置的,但配置比较麻烦,如果为了方便自己用开发语言写一个服务 更好控制一些
      

  4.   

    --创建JOB
    variable v_job_id  number;
    begin
      dbms_job.submit(:v_job_id,                              ---job序号
                      'p_check_serviceType_time(sysdate);',   ---过程名及参数
                      sysdate,                                ---首次执行时间
                      'sysdate+1');                           ---下次执行时间
    end;
    /commit;
    print v_job_id;--查询JOB
    select job,what from user_jobs;
    --删除JOB
    --begin
    --    dbms_job.remove(n);
    --end;
    --/--运行JOB
    --begin
    --     dbms_job.run(:v_job_id);
    --end;
    --/
      

  5.   

    首先说,job能自动自行,如果只能手动执行,那还要job干啥,直接执行过程就得了呗。至于楼主说,不能自动执行,贴出你创建job的语法,及错误说明才好分析
      

  6.   

    使用DBMS_JOB包创建ORACLE定时任务(20110810)
    在Oracle的包里面,有一个名字叫做DBMS_JOB的包,它的作用是安排和管理作业队列。通过作业队列,可以让Oracle数据库定期执行特定的任务。当使用DBMS_JOB管理作业的时候,必须确保设置了初始化参数JOB_QUEUE_PROCESSES(不能为0)。1、 SUBMIT
    该过程用于建立一个新的作业,当建立作业的时候,需要通过设置相应的参数来告诉Oracle要执行的内容,要执行的时间,要执行任务的间隔。如下格式:
    DBMS_JOB.SUBMIT(
       JOB OUT BINARY_INTERGER,
       WHAT IN VARCHAR2,
       NEXT_DATE IN DATE DEFAULT SYSDATE,
       INTERVAL IN VARCHAR2 DEFAULT ‘NULL’,
       NO_PARSE IN BOOLEAN DEFAULT FALSE,
       INSTANCE IN BINARY_INTEGER DEFAULT ANY_INSTANCE,
       FORCE IN BOOLEAN DEFAULT FALSE
    );
    参数说明:
    编号 参数 参数说明
    1 job  用于指定作业编号
    2 what  用于指定作业要执行的操作
    3 next_date 用于指定该操作的下一次运行的日期
    4 interval 用于指定该操作的时间间隔
    5 no_parse 用于指定是否需要解析与作业相关的过程
    6 instance 用于指定哪个例程可以运行作业?
    7 force 用于指定是否强制运行与作业相关的例程
    建立Oracle作业的例子:
    DECLARE
    JOBNO NUMBER;                    --通过查看该变量可以得到返回的作业编号
    BEGIN
    DBMS_JOB.SUBMIT(
            JOBNO,
            'PRC_SENDTOGX;',           --执行工信局提供数据的脚本程序
            SYSDATE,                   --现在执行
            'SYSDATE+1' 
    );
    END;
    interval参数值
    描述 Interval参数值    (部分需要验证一下)
    每天午夜12点 'TRUNC(SYSDATE + 1)'
    每天早上8点30分  'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
    每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
    每个月第一天的午夜12点 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
    每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
    每分钟执行一次 'SYSDATE+1/1440'2、 REMOVE
    这个过程的作用是用于删除作业队列当中的特定的作业,它的语法如下:
    DBMS_JOB.REMOVE(JOB IN BINARY_INTEGER);
    下面是一个删除作业的例子:
    首先查看DBA_JOBS表,看表里面有哪些任务正在执行着?
    SELECT * FROM DBA_JOBS;
    可以看到里面的JOB就是我们要删除的作业的编号,LOG_USER是创建该任务的人。
    SQL> EXEC DBMS_JOB.REMOVE(467);
    SQL>COMMIT;
    这样就能把已经建立的作业删除了。
    3、 CHANGE
    该过程改变与作业相关的所有的信息,其中包括作业的操作内容,作业运行的时间以及运行时间间隔信息等等。语法如下:
    DBMS_JOB.CHANGE(
    JOB IN BINARY_INTEGER,
    WHAT IN VARCHAR2,
    NEXT_DATE,
    INTERVAL IN VARCHAR2,
    INSTANCE IN BINARY_INTEGER DEFAULT NULL,
    FORCE IN BOOLEAN DEFAULT FALSE
    );
    例子:
    SQL>EXEC DBMS_JOB.CHANGE(2,NULL,NULL,’SYSDATE+2’);
    SQL>COMMIT;
    4、 WHAT
    WHAT用来改变作业要执行的操作,例如:
    SQL>EXEC DBMS_JOB.WHAT(268,’GETGX_AC01;’);
    5、 NEXT_DATE
    用来改变作业的下次运行日期
    SQL>EXEC DBMS_JOB.NEXT_DATE(‘478’,’SYSDATE+2’);
    6、 INTERVAL
    该过程用来改变作业的运行时间间隔,下面的运行时间间隔修改为每分钟执行一次:
    SQL>exec dbms_job.interval(478,’SYSDATE+1/24/60
    7、 BROKEN
    该过程用于给该作业打上中断标志,可以在DBA_JOBS表里面观察该作业的BROKEN标志知否为中断。例子:
    SQL>EXEC DBMS_JOB.BROKEN(478,TRUE);
    SQL>COMMIT;
    8、 RUN
    该过程用来执行该作业,例子:
    SQL>EXEC DBMS_RN(478);
    SQL>COMMIT;常见问题:
    1、 如何停止一个作业?
    SQL>DBMS_JOBS.BROKEN(2,TRUE);
    SQL>COMMIT;
    这里务必要提交哈!
    2、 如何启动一个作业?
    SQL>DBMS_JOBS.BROKEN(2,FALSE);
    SQL>COMMIT;
    这里也务必要提交,否则就没有效果
    3、 前面提到的JOB_QUEUE_PROCESSES在什么地方设置?
    ALTER  SYSTEM  SET  job_queue_processes=39 SCOPE=SPFILE;
    这个SQL的执行是需要具备相应的权限的。
    4、 如何计算一个过程运行的时间(DATE和TimeStamp)?
    可以在过程的开始设置一个时间,然后在过程的结尾处设置一个时间,然后两个时间的时间差可以计算出该过程运行的时间。通过实践发现使用SYSESTAMP来计算时间比较准确一些:
    SELECT to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff4') FROM dual;
      

  7.   

    首选还是job 
    linux 还可以用 crontab  调用sh文件,sh 文件写登陆,存储过程。