免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: TOADLover
打印 上一主题 下一主题

有点难度的问题,查看Schedule中有哪些Job用到了某个Procedure [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-08-04 14:35 |只看该作者
虽然说jobs大多都应该是自动执行,不过经过前面的示例,大家想必也认识到了,并不是说创建了jobs它就会自动执行,是否能够真正自动执行并不是由你的主观意愿就能直接决定,而是由jobs自身的多个相关属性决定。

  关于jobs自动执行的话题相信看完前面的内容后,应该都知道如何设置,下面主要演示,如何手动调用jobs并执行,这其中,当然少不了DBMS_SCHEDULER包。例如,手动执行前面刚刚创建的job:INSERT_TEST_TBL:

SQL> exec dbms_scheduler.run_job(¨INSERT_TEST_TBL¨);

PL/SQL procedure successfully completed
  Jobs 每执行一次,无论成功或失败,均会在*_SCHEDULER_JOB_LOG中生成一条对应的记录(前提是LOGGING_LEVEL属性值未设置为DBMS_SCHEDULER.LOGGING_OFF),同时,用户也可以通过*_SCHEDULER_JOB_RUN_DETAILS视图查询job执行的详细信息。
-------------------------------------------------------------------------------------------------------



http://space.itpub.net/?uid-7607 ... space-itemid-611283

[ 本帖最后由 TOADLover 于 2009-8-4 14:36 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2009-08-04 14:52 |只看该作者
在Oracle提供可以執行Scheduled Jobs的功能, 但一開始可能會發生建立了一個Scheduled Job, 手動執行都沒問題, 但在排定的時間內卻未執行, 真正的問題出在有一個Oracle Parameter: job_queue_processes之值未設定或設定為0, 此種情況就會造成沒有任何的Scheduled Job會被執行, 所以, 依據下面方式即可解決:

1.修改$ORACLE_HOME\DBS\init.ora檔案, 將 job_queue_processes設成大於0, 再重新啟動Oracle

2.或Alter system set job_queue_process=大於0以上之值;

3.以TOAD來修改

  3.1先以system帳號登入TOAD

  3.2開啟【Database】>【Administer】>【Oracle Parameters】

  3.3修改job_queue_processes這個參數值為【1】以上的值

4.    在寫Job時,務必注意【interval】不可為【null】,否則僅會執行一次,該Job就會自動被刪除

DECLARE

  X NUMBER;

BEGIN

  SYS.DBMS_JOB.SUBMIT

  ( job       => X

   ,what      => 'ScheduledTask;'

   ,next_date => to_date('25/01/2008 08:00:00','dd/mm/yyyy hh24:mi:ss')

   ,interval  => 'TRUNC(SYSDATE+1) + 480/1440' è每天早上08:00執行

   ,no_parse  => FALSE

  );

  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));

COMMIT;

END;/

--------------------------
这个是在描述什么呢?我怎么没这个参数:job_queue_processes

论坛徽章:
0
13 [报告]
发表于 2009-08-04 14:54 |只看该作者

回复 #11 ziggler 的帖子

怎么利用OS的调度功能,如果是windows机器还有可能调用一个可执行的application。
----------------
linux下怎么用OS级来调度Oracle中的Procedures?---这个问题就麻烦了吧?

论坛徽章:
0
14 [报告]
发表于 2009-08-04 14:55 |只看该作者

论坛徽章:
0
15 [报告]
发表于 2009-08-04 14:57 |只看该作者

论坛徽章:
0
16 [报告]
发表于 2009-08-04 14:58 |只看该作者
原帖由 ziggler 于 2009-8-4 14:51 发表
也可以利用OS的调度功能。

-----------
而且:
---------
desc USER_SCHEDULER_JOBS

desc ALL_SCHEDULER_JOBS

desc DBA_SCHEDULER_JOBS
以上三个视图我都没有权限,怎么办?
----------
这种情况下,我怎么查看当前系统正在跑的有哪些Schedule?

论坛徽章:
0
17 [报告]
发表于 2009-08-04 14:59 |只看该作者
原帖由 ziggler 于 2009-8-4 14:57 发表
http://fanqiang.chinaunix.net/system/linux/2005-06-13/3306.shtml

--------
谢谢!!!!!

论坛徽章:
0
18 [报告]
发表于 2009-08-04 15:03 |只看该作者

回复 #16 TOADLover 的帖子

你有这个权限 吗?


job 权限 grant create job to somebody

论坛徽章:
0
19 [报告]
发表于 2009-08-04 15:04 |只看该作者
原帖由 ziggler 于 2009-8-4 14:55 发表
http://www.itpub.net/redirect.ph ... amp;goto=nextoldset

--------------------
在10g,你可以把job_queue_processes设置为0,它表示在job需要运行时创建,如果你设置时job_queue_processes=4,这样job进程就不必每次在运行时创建.
--------------------
第一个JOB运行时间为10小时,job_queue_processes=1的这种情况,其它的3个估计就没有办法运行,这个在9i应该是这样的,其它的只有排队等待,10g就可以运行啦...
----------------------
一个queue只是忙不忙的问题,并不是做几个job的问题,做得过来就做。--》这话什么意思?

论坛徽章:
0
20 [报告]
发表于 2009-08-04 15:06 |只看该作者

回复 #18 ziggler 的帖子

select * from user_sys_privs
只有以下权限

SELECT ANY SEQUENCE
-----------------------------
UNLIMITED TABLESPACE
-----------------------------
EXECUTE ANY PROCEDURE
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP