执行submit操作的时候提示如图执行show parameter job_queue_process;
提示错误  ORA-00942: table or view does not exist是否和权限有关系?
要怎么解决?

解决方案 »

  1.   

    你用户的权限是什么。应该是权限的问题,吧selcet any view 和select any table 授权给他看看。
      

  2.   

    job的代码如下:declare jobEvd number;
    begin
    sys.dbms_job.submit(jobEvd,'evd_go;',to_date('2011-02-19 08:30:01','yyyy-mm-dd hh24:mi:ss'),TRUNC(SYSDATE + 1)+(8*60+30)/(24*60));
    end;
      

  3.   

    scott@SZTYORA> declare jobEvd number;
      2  begin
      3  sys.dbms_job.submit(jobEvd,'prc_g_test;',to_date('2011-02-19 08:30:01','yyyy-mm-dd hh24:mi:ss'),TRUNC(SYSDATE + 1)+(8*60+30)/(24*60));
      4  end;
      5  /
    declare jobEvd number;
    *
    第 1 行出现错误:
    ORA-23319: 参数值 "2011-02-19 08:30:00" 不正确
    ORA-06512: 在 "SYS.DBMS_JOB", line 57
    ORA-06512: 在 "SYS.DBMS_JOB", line 134
    ORA-06512: 在 line 3
    -- 你的这个参数to_date('2011-02-19 08:30:01','yyyy-mm-dd hh24:mi:ss') 是有问题的
      

  4.   

    不好意思!!
    dba_jobs_running;
    from dba_jobs;
    这两个视图是不存在的要怎么办?
      

  5.   

    每天早上8点30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)' 
      

  6.   

    declare jobEvd number;
    begin
    sys.dbms_job.submit(jobEvd,'prc_g_test;',to_date('2011-02-19 08:30:01','yyyy-mm-dd hh24:mi:ss'),'TRUNC(SYSDATE+1)+(8*60+30)/(24*60)');
    end;
    /
      

  7.   

    ......麻烦说重点吧
    这个语句我是从之前创建成功的脚本上复制过来的,只改了日期时间的数字而已
    (之前执行成功的job不是用这个用户)
    现在提示的是视图或表不存在吧,这个是系统问题还是别的什么问题呢?
    查了user_jobs发现里面是有记录的,虽然是很久以前了……
      

  8.   

    -- 这两个视图只有sys 用户才能看到(普通用户是看不到的)!scott@SZTYORA> conn / as sysdba
    已连接。
    sys@SZTYORA> desc dba_jobs_running
     名称                                                                                      是否为空? 类型
     ----------------------------------------------------------------------------------------- -------- ----------------------------------
     SID                                                                                                NUMBER
     JOB                                                                                                NUMBER
     FAILURES                                                                                           NUMBER
     LAST_DATE                                                                                          DATE
     LAST_SEC                                                                                           VARCHAR2(8)
     THIS_DATE                                                                                          DATE
     THIS_SEC                                                                                           VARCHAR2(8)
     INSTANCE                                                                                           NUMBERsys@SZTYORA> desc dba_jobs
     名称                                                                                      是否为空? 类型
     ----------------------------------------------------------------------------------------- -------- ----------------------------------
     JOB                                                                                       NOT NULL NUMBER
     LOG_USER                                                                                  NOT NULL VARCHAR2(30)
     PRIV_USER                                                                                 NOT NULL VARCHAR2(30)
     SCHEMA_USER                                                                               NOT NULL VARCHAR2(30)
     LAST_DATE                                                                                          DATE
     LAST_SEC                                                                                           VARCHAR2(8)
     THIS_DATE                                                                                          DATE
     THIS_SEC                                                                                           VARCHAR2(8)
     NEXT_DATE                                                                                 NOT NULL DATE
     NEXT_SEC                                                                                           VARCHAR2(8)
     TOTAL_TIME                                                                                         NUMBER
     BROKEN                                                                                             VARCHAR2(1)
     INTERVAL                                                                                  NOT NULL VARCHAR2(200)
     FAILURES                                                                                           NUMBER
     WHAT                                                                                               VARCHAR2(4000)
     NLS_ENV                                                                                            VARCHAR2(4000)
     MISC_ENV                                                                                           RAW(32)
     INSTANCE                                                                                           NUMBER
      

  9.   

    http://blog.csdn.net/wyzxg/archive/2007/09/12/1782952.aspx--------------------------------------------------------------------------------------------------------------------author:skatetime:2007-09-12http://publish.it168.com/2006/0311/20060311017002.shtml今天总结下oracle的任务队列管理器(job queue ),以后也方便查询.
     我们要做定时任务时,有两种办法一种是: 操作系统的定时,win的定时任务,unix的crontab
    一种是: 数据库级的定时,她的效率更高,
    再有大量的表级操作时,建议用数据库本身的job queue,这样方便,效率高;如果用系统级定时,
    会增加很多编程工作,成本增加了,还很容易出错,事情越简单出错的几率越小.再使用job queue之前,我们还要简单配置下,oracle定时执行job queue 的后台进程是SNP,要启动snp,首先看系统模式是否支持sql> alter system enable restricted session;

    sql> alter system disable restricted session;
    利用上面的命令更改系统的会话方式为disenable restricted,为snp的启动创建条件.
    再有就是配置job queue的启动参数,snp的启动参数位于oracle的初始化文件中,
    job_queue_processes=10   (oracle10gde 默认值)
    job_queue_interval=N第一行定义snp进程的启动个数为10,正常得女冠一范围是0-36,根据任务的多少,可以配置
    不同的数值.第二行定义系统每隔几秒唤醒该进程一次.缺省是60,正常范围是1-3600秒.事实上,该进程执行完当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒。  
    如果该文件中没有上面两行,请按照如上配置添加。配置完成后,需要重新启动数据库,使其生效。注意:如果任务要求执行的间隔很短的话,N的配置也要相应地小一点。
    查看job queue的详细信息,查询数据库字典 user_jobseg:
     sql> select job,next_date,next_sec,broken from user_jobs;包含以下子过程:  Broken()过程。 
    change()过程。 
    Interval()过程。 
    Isubmit()过程。 
    Next_Date()过程。 
    Remove()过程。 
    Run()过程。 
    Submit()过程。 
    User_Export()过程。 
    What()过程。 1、 
    Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。 
    这个过程有三个参数:job 、broken与next_date。 PROCEDURE Broken (job       IN binary_integer, 
                      Broken    IN boolean, 
                      next_date IN date :=SYSDATE) job参数是工作号,它在问题中唯一标识工作。 
    broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。 
    next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。 2、 
    Change()过程用来改变指定工作的设置。 
    这个过程有四个参数:job、what 、next_date与interval。 PROCEDURE Change (job        IN binary_integer, 
                      What       IN varchar2, 
                      next_date  IN date, 
                      interval   IN varchar2) 此job参数是一个整数值,它唯一标识此工作。 
    What参数是由此工作运行的一块PL/SQL代码块。 
    next_date参数指示何时此工作将被执行。 
    interval参数指示一个工作重执行的频度。 3、 
    Interval()过程用来显式地设置重执行一个工作之间的时间间隔数。 
    这个过程有两个参数:job与interval。 PROCEDURE Interval (job      IN binary_integer, 
                        Interval IN varchar2) job参数标识一个特定的工作。interval参数指示一个工作重执行的频度。 4、 
    ISubmit()过程用来用特定的工作号提交一个工作。 
    这个过程有五个参数:job、what、next_date、interval与no_parse。 PROCEDURE ISubmit (job       IN binary_ineger, 
                       What      IN varchar2, 
                       next_date IN date, 
                       interval  IN varchar2, 
                       no_parse  IN booean:=FALSE) 这个过程与Submit()过程的唯一区别在于此job参数作为IN型参数传递且包括一个 
    由开发者提供的工作号。如果提供的工作号已被使用,将产生一个错误。 
    5、 
    Next_Date()过程用来显式地设定一个工作的执行时间。这个过程接收两个参数:job与next_date。 PROCEDURE Next_Date(job         IN binary_ineger, 
                        next_date   IN date) job标识一个已存在的工作。next_date参数指示了此工作应被执行的日期与时间。 6、 
    Remove()过程来删除一个已计划运行的工作。这个过程接收一个参数: PROCEDURE Remove(job IN  binary_ineger); job参数唯一地标识一个工作。这个参数的值是由为此工作调用Submit()过程返回的job参数的值。 
    已正在运行的工作不能由调用过程序删除。 7、 
    Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数: PROCEDURE Run(job IN binary_ineger)  job参数标识将被立即执行的工作。 8、 
    使用Submit()过程,工作被正常地计划好。 
    这个过程有五个参数:job、what、next_date、interval与no_parse。 PROCEDURE Submit ( job       OUT binary_ineger, 
                       What      IN  varchar2, 
                       next_date IN  date, 
                       interval  IN  varchar2, 
                       no_parse  IN  booean:=FALSE) job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。 
    what参数是将被执行的PL/SQL代码块。 
    next_date参数指识何时将运行这个工作。 
    interval参数何时这个工作将被重执行。 
    no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE 
    指示此PL/SQL代码在它第一次执行时应进行语法分析, 
    而FALSE指示本PL/SQL代码应立即进行语法分析。 9、 
    User_Export()过程返回一个命令,此命令用来安排一个存在的工作以便此工作能重新提交。 
    此程序有两个参数:job与my_call。 PROCEDURE User_Export(job        IN binary_ineger, 
                          my_call    IN OUT varchar2) job参数标识一个安排了的工作。my_call参数包含在它的当前状态重新提交此工作所需要 
    的正文。 10、 
    What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job与what。 PROCEDURE What (job  IN binary_ineger, 
                    What IN OUT varchar2) job参数标识一个存在的工作。what参数指示将被执行的新的PL/SQL代码。 
    一个简单例子:  创建测试表 
    SQL> create table t(a date); 表已创建。 创建一个自定义过程 
    SQL> create or replace procedure test as 
      2  begin 
      3  insert into a values(sysdate); 
      4  end; 
      5  / 过程已创建。 创建JOB 
    SQL> variable job1 number; 
    SQL>  
    SQL> begin 
      2  dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次 
      3  end; 
      4  / PL/SQL 过程已成功完成。 运行JOB 
    SQL> begin 
      2  dbms_job.run(:job1); 
      3  end; 
      4  / PL/SQL 过程已成功完成。 SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from a; 时间 
    ------------------- 
    2001/01/07 23:51:21 
    2001/01/07 23:52:22 
    2001/01/07 23:53:24 删除JOB 
    SQL> begin 
      2  dbms_job.remove(:job1); 
      3  end; 
      4  / PL/SQL 过程已成功完成。下面说下常用的视图与参数:任务队列中关于任务的数据字典视图视图名 描述 
    DBA_JOBS 本数据库中定义到任务队列中的任务 
    DBA_JOBS_RUNNING 目前正在运行的任务 
    USER_JOBS 当前用户拥有的任务 
    JOB_QUEUE_PROCESSES  >= 1 (如果系统在同一时间会运行很多的job, 或者还有大量需要自动refresh的snapshot, 适当加大)JOB_QUEUE_INTERVAL : 秒数(缺省为60秒), 根据你的job的调度频度而定, 对于一般的一天运行一次的job, 设为缺省值或者几分钟都可以. (不要设置过小, 以免影响性能)JOB_QUEUE_KEEP_CONNECTION (系统默认就可以,我没发现他的作用)DBA_JOBS 和 USER_JOBS.字典视图的字段含义字段(列) 类型 描述 
    JOB NUMBER 任务的唯一标示号 
    LOG_USER VARCHAR2(30) 提交任务的用户 
    PRIV_USER VARCHAR2(30) 赋予任务权限的用户 
    SCHEMA_USER VARCHAR2(30) 对任务作语法分析的用户模式 
    LAST_DATE DATE 最后一次成功运行任务的时间 
    LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小时,分钟和秒 
    THIS_DATE DATE 正在运行任务的开始时间,如果没有运行任务则为null 
    THIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小时,分钟和秒 
    NEXT_DATE DATE 下一次定时运行任务的时间 
    NEXT_SEC VARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小时,分钟和秒 
    TOTAL_TIME NUMBER 该任务运行所需要的总时间,单位为秒 
    BROKEN VARCHAR2(1) 标志参数,Y标示任务中断,以后不会运行 
    INTERVAL VARCHAR2(200) 用于计算下一运行时间的表达式 
    FAILURES NUMBER 任务运行连续没有成功的次数 
    WHAT VARCHAR2(2000) 执行任务的PL/SQL块 
    CURRENT_SESSION_LABEL RAW MLSLABEL 该任务的信任Oracle会话符 
    CLEARANCE_HI RAW MLSLABEL 该任务可信任的Oracle最大间隙 
    CLEARANCE_LO RAW MLSLABEL 该任务可信任的Oracle最小间隙 
    NLS_ENV VARCHAR2(2000) 任务运行的NLS会话设置 
    MISC_ENV RAW(32) 任务运行的其他一些会话参数 
          视图DBA_JOBS_RUNNING的字段含义列 数据类型 描述 
    SID NUMBER 目前正在运行任务的会话ID 
    JOB NUMBER 任务的唯一标示符 
    FAILURES NUMBER 连续不成功执行的累计次数 
    LAST_DATE DATE 最后一次成功执行的日期 
    LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小时,分钟和秒 
    THIS_DATE DATE 目前正在运行任务的开始日期 
    THIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小时,分钟和秒 
    任务重复运行间隔和间隔设计 算法任务重复运行的时间间隔取决于interval参数中设置的日期表达式。下面就来详细谈谈该如何设置interval参数才能准确满足我们的任务需求。一般来讲,对于一个任务的定时执行,有三种定时要求。    在一个特定的时间间隔后,重复运行该任务。    在特定的日期和时间运行任务。    任务成功完成后,下一次执行应该在一个特定的时间间隔之后。    第一种调度任务需求的日期算法比较简单,即'SYSDATE+n',这里n是一个以天为单位的时间间隔。表6给出了一些这种时间间隔设置的例子。    表6 一些简单的interval参数设置例子描述 Interval参数值 
    每天运行一次 'SYSDATE + 1' 
    每小时运行一次 'SYSDATE + 1/24' 
    每10分钟运行一次 'SYSDATE + 10/(60*24)' 
    每30秒运行一次 'SYSDATE + 30/(60*24*60)' 
    每隔一星期运行一次 'SYSDATE + 7' 
    不再运行该任务并删除它 NULL 
         表6所示的任务间隔表达式不能保证任务的下一次运行时间在一个特定的日期或者时间,仅仅能够指定一个任务两次运行之间的时间间隔。例如,如果一个任务第一次运行是在凌晨12点,interval指定为'SYSDATE + 1',则该任务将被计划在第二天的凌晨12点执行。但是,如果某用户在下午4点手工(DBMS_JOB.RUN)执行了该任务,那么该任务将被重新定时到第二天的下午4点。还有一个可能的原因是如果数据库关闭或者说任务队列非常的忙以至于任务不能在计划的那个时间点准时执行。在这种情况下,任务将试图尽快运行,也就是说只要数据库一打开或者是任务队列不忙就开始执行,但是这时,运行时间已经从原来的提交时间漂移到了后来真正的运行时间。这种下一次运行时间的不断“漂移”是采用简单时间间隔表达式的典型特征。    第二种调度任务需求相对于第一种就需要更复杂的时间间隔(interval)表达式,表7是一些要求在特定的时间运行任务的interval设置例子。    表 7. 定时到特定日期或时间的任务例子描述 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' 
    每星期六和日早上6点10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)' 
          第三种调度任务需求无论通过怎样设置interval日期表达式也不能满足要求。这时因为一个任务的下一次运行时间在任务开始时才计算,而在此时是不知道任务在何时结束的。遇到这种情况怎么办呢?当然办法肯定是有的,我们可以通过为任务队列写过程的办法来实现。这里我只是简单介绍以下,可以在前一个任务队列执行的过程中,取得任务完成的系统时间,然后加上指定的时间间隔,拿这个时间来控制下一个要执行的任务。这里有一个前提条件,就是目前运行的任务本身必须要严格遵守自己的时间计划。本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wyzxg/archive/2007/09/12/1782952.aspx
      

  10.   

    -- 告诉你啦,是权限问题,猪啊....-- 要看你的job 涉及的存储过程涉及到哪些对象的哪些操作,将这些操作一一授权,明白了吗?
      

  11.   

    begin
      sys.dbms_job.submit(job => :job,
                          what => 'ProcSyncXTJC_BKSLQXXB;',
                          next_date => to_date('01-01-4000', 'dd-mm-yyyy'),
                          interval => 'sysdate + 60/(24*60)');
      commit;
    end;
    /
      

  12.   

    begin
      sys.dbms_job.submit(job => :job,
                          what => 'ProcSyncXTJC_BKSLQXXB;',
                          next_date => to_date('01-01-4000', 'dd-mm-yyyy'),
                          interval => 'sysdate + 60/(24*60)');
      commit;
    end;
    / 你可以参考下
      

  13.   

    但是如果是执行存储过程时权限不够那也不至于查看不了dba_jobs和dba_jobs_running吧
    user_jobs和all_jobs都是可以查看的另外show parameter job_queue_process这个提示找不到表或视图也是权限问题?
      

  14.   

    好像无法创建job本身不是权限问题啊T.T
    http://topic.csdn.net/u/20110221/09/6ce296a0-08d1-4f6d-acf5-6ed5d051c05d.html
    再挂两天结贴给分了。我纠结。
      

  15.   

     SB 别人的意思就是怎么给用户赋予权限,一群B
      

  16.   

    格式不对啊!to_Date('2011-02-19 08:30:01','yyyy-mm-dd hi24:mi:ss')hh写错了,应该是hi