Bo's Oracle Station

查看: 1901|回复: 0

第76次:2014-12-22

[复制链接]

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2014-12-24 11:36:08 | 显示全部楼层 |阅读模式
本帖最后由 botang 于 2014-12-30 12:44 编辑

2014-12-22-A.sql:
  1. CREATE OR REPLACE TYPE t_event_queue_payload AS OBJECT (

  2.   event_name  VARCHAR2(30)

  3. );

  4. select  * from dba_objects o where o.object_name=upper('t_event_queue_payload');

  5. select  * from dba_tab_privs tp where tp.grantee='HR';

  6. grant execute on  t_event_queue_payload to hr;

  7. select  * from dba_tab_privs tp where tp.grantee='HR';
  8. ----------------------------


  9. select  * from dba_queues ;

  10. BEGIN

  11.   -- Create a queue table to hold the event queue.

  12.   DBMS_AQADM.create_queue_table(

  13.     queue_table        => 'event_queue_tab',

  14.     queue_payload_type => 't_event_queue_payload',

  15.     multiple_consumers => TRUE,

  16.     comment            => 'Queue Table For Event Messages');



  17.   -- Create the event queue.

  18.   DBMS_AQADM.create_queue (

  19.     queue_name  => 'event_queue',

  20.     queue_table => 'event_queue_tab');



  21.   -- Start the event queue.

  22.   DBMS_AQADM.start_queue (queue_name => 'event_queue');

  23. END;


  24. select  * from dba_queues ;

  25. begin
  26.    dbms_aqadm.grant_queue_privilege(privilege => 'ENQUEUE',queue_name => 'event_queue',grantee => 'HR');
  27. end;

  28. begin
  29.    dbms_aqadm.grant_queue_privilege(privilege => 'DEQUEUE',queue_name => 'event_queue',grantee => 'HR');
  30. end;


  31. ----HR

  32. CREATE TABLE scheduler_test (

  33.   id            NUMBER(10)    NOT NULL,

  34.   created_date  DATE          NOT NULL,

  35.   CONSTRAINT scheduler_test_pk PRIMARY KEY (id)

  36. );

  37. drop sequence hr.scheduler_test_seq;

  38. CREATE SEQUENCE hr.scheduler_test_seq  order ;

  39. ----
  40. BEGIN

  41.    DBMS_SCHEDULER.create_job (

  42.       job_name        => 'event_based_job',

  43.       job_type        => 'PLSQL_BLOCK',

  44.       job_action      => 'BEGIN

  45.                             INSERT INTO scheduler_test (id, created_date)

  46.                             VALUES (scheduler_test_seq.NEXTVAL, SYSDATE);

  47.                             COMMIT;

  48.                           END;',

  49.       start_date      => SYSTIMESTAMP,

  50.       event_condition => 'tab.user_data.event_name = ''give_me_a_prod''',

  51.       queue_spec      => 'event_queue',

  52.       enabled         => TRUE);

  53. END;

  54. ----

  55. ----SYS

  56. SELECT * FROM hr.scheduler_test;

  57. DECLARE

  58.   l_enqueue_options     DBMS_AQ.enqueue_options_t;

  59.   l_message_properties  DBMS_AQ.message_properties_t;

  60.   l_message_handle      RAW(16);

  61.   l_queue_msg           t_event_queue_payload;

  62. BEGIN

  63.   l_queue_msg := t_event_queue_payload('give_me_a_prod');



  64.   DBMS_AQ.enqueue(queue_name          => 'event_queue',

  65.                   enqueue_options     => l_enqueue_options,

  66.                   message_properties  => l_message_properties,

  67.                   payload             => l_queue_msg,

  68.                   msgid               => l_message_handle);

  69.   COMMIT;

  70. END;


  71. SELECT * FROM hr.scheduler_test;

  72. select  * from dba_scheduler_job_run_details  d where d.job_name='JOB5';


复制代码

2014-12-22-B.sql



  1. SELECT * FROM hr.scheduler_test;


  2. DECLARE

  3.   l_enqueue_options     DBMS_AQ.enqueue_options_t;

  4.   l_message_properties  DBMS_AQ.message_properties_t;

  5.   l_message_handle      RAW(16);

  6.   l_queue_msg           t_event_queue_payload;

  7. BEGIN

  8.   l_queue_msg := t_event_queue_payload('give_me_a_prod');



  9.   DBMS_AQ.enqueue(queue_name          => 'event_queue',

  10.                   enqueue_options     => l_enqueue_options,

  11.                   message_properties  => l_message_properties,

  12.                   payload             => l_queue_msg,

  13.                   msgid               => l_message_handle);

  14.   COMMIT;

  15. END;

  16. begin

  17. DBMS_SCHEDULER.SET_ATTRIBUTE('HR.JOB4',  'raise_events', DBMS_SCHEDULER.JOB_SUCCEEDED);
  18. end;

  19. select  j.raise_events from dba_scheduler_jobs  j   where  j.job_name='JOB4';


  20. declare
  21.    v_1  timestamp;
  22. begin
  23.   for i in 1..10
  24.    loop
  25.     DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING (
  26.     calendar_string=> 'hr.schedule5'   ,
  27.    start_date => sysdate,
  28.    return_date_after  => v_1,
  29.    next_run_date    => v_1 );
  30.   dbms_output.put_line(to_char(v_1,'YYYY-MM-DD:HH24:MI:SS'));
  31. end loop;
  32. end;





  33. declare
  34.    v_1  timestamp;
  35. begin
  36.   for i in 1..10
  37.    loop
  38.     DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING (
  39.     calendar_string=> 'FREQ=YEARLY;BYDATE=0101,0404;BYHOUR=14;BYMINUTE=10;BYSECOND=0;exclude=hr.schedule5'   ,
  40.    start_date => sysdate,
  41.    return_date_after  => v_1,
  42.    next_run_date    => v_1 );
  43.   dbms_output.put_line(to_char(v_1,'YYYY-MM-DD:HH24:MI:SS'));
  44. end loop;
  45. end;


  46. BEGIN
  47. sys.dbms_scheduler.create_schedule(
  48. repeat_interval => 'FREQ=YEARLY;BYDATE=0101,0404;BYHOUR=14;BYMINUTE=10;BYSECOND=0;exclude=hr.schedule5',
  49. start_date => systimestamp at time zone '+8:00',
  50. comments => 'schedule_comphc',
  51. schedule_name => 'HR.SCHEDULE6');
  52. END;


  53. declare
  54.    v_1  timestamp;
  55. begin
  56.   for i in 1..10
  57.    loop
  58.     DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING (
  59.     calendar_string=> 'hr.schedule6'   ,
  60.    start_date => sysdate,
  61.    return_date_after  => v_1,
  62.    next_run_date    => v_1 );
  63.   dbms_output.put_line(to_char(v_1,'YYYY-MM-DD:HH24:MI:SS'));
  64. end loop;
  65. end;





复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-11-22 11:32 , Processed in 0.038399 second(s), 24 queries .

快速回复 返回顶部 返回列表