Bo's Oracle Station

查看: 1521|回复: 0

课程第6次

[复制链接]

27

主题

27

帖子

183

积分

超级版主

Rank: 8Rank: 8

积分
183
发表于 2019-9-21 08:50:28 | 显示全部楼层 |阅读模式
Notice: This blog is written by Bo Tang.



job1:

QQ图片20190921084837.png


QQ图片20190921084852.png


本地内部作业

-----------------------------------------------------------------
job2:
本地外部作业:
  1. select  * from dba_scheduler_credentials;

  2. begin
  3.    dbms_scheduler.create_credential(credential_name => 'credential1',
  4.    username => 'oracle',
  5.    password => 'oracle');
  6. end;

  7. grant execute on credential1 to hr;

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

  9. grant create external job to hr;

  10. select * from dba_sys_privs  sp where sp.grantee='HR';
复制代码

job2.sh:
  1. #!/bin/sh
  2. export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
  3. export ORACLE_SID=orcl
  4. export ORACLE_BASE=/u01/app/oracle

  5. /u01/app/oracle/product/11.2.0/dbhome_1/bin/sqlplus /nolog >> /home/oracle/job2a.log <<EOF
  6. conn hr/oracle_4U
  7. alter session set nls_date_format='yyyy-mm-dd:hh24:mi:ss';
  8. select  sysdate from dual;
  9. exit
  10. EOF

  11. date +%Y%m%d-%H%M%S >> /home/oracle/job2b.log
复制代码
  1. BEGIN
  2. DBMS_SCHEDULER.CREATE_PROGRAM(
  3. program_name=>'"HR"."PROGRAM2"',
  4. program_action=>'/home/oracle/job2.sh',
  5. program_type=>'EXECUTABLE',
  6. number_of_arguments=>0,
  7. comments=>'',
  8. enabled=>TRUE);
  9. END;
复制代码
  1. BEGIN
  2. sys.dbms_scheduler.create_schedule(
  3. repeat_interval => 'FREQ=SECONDLY;INTERVAL=30',
  4. start_date => systimestamp at time zone 'Asia/Shanghai',
  5. schedule_name => '"HR"."SCHEDULE2"');
  6. END;
复制代码


  1. BEGIN
  2. sys.dbms_scheduler.create_job(
  3. job_name => '"HR"."JOB2"',
  4. program_name => '"HR"."PROGRAM2"',
  5. schedule_name => '"HR"."SCHEDULE2"',
  6. job_class => '"DEFAULT_JOB_CLASS"',
  7. auto_drop => FALSE,
  8. enabled => FALSE);
  9. DBMS_SCHEDULER.SET_ATTRIBUTE(name => '"HR"."JOB2"', attribute => 'credential_name', value => '"SYS"."CREDENTIAL1"' );
  10. sys.dbms_scheduler.enable( '"HR"."JOB2"' );
  11. END;
复制代码
------------------------------------------------
schedule3系列:


  1. declare
  2.    v_1  timestamp;
  3. begin
  4.   for i in 1..5
  5.    loop
  6.     DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING (  
  7.           calendar_string=>'freq=YEARLY;bydate=1007,1008,1101'   ,
  8.    start_date => sysdate,
  9.    return_date_after  => v_1,
  10.    next_run_date    => v_1 );
  11.   dbms_output.put_line(to_char(v_1,'YYYY-MM-DD:HH24:MI:SS'));
  12. end loop;
  13. end
复制代码


31.png



  1. declare
  2. v_1 timestamp;
  3. begin
  4. for i in 1..5
  5. loop
  6. DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING (
  7. calendar_string=>'freq=YEARLY;byday=MON,TUE,WED,THU,FRI;BYHOUR=14;BYMINUTE=10;BYSECOND=0;exclude=HR.SCHEDULE3' ,
  8. start_date => sysdate,
  9. return_date_after => v_1,
  10. next_run_date => v_1 );
  11. dbms_output.put_line(to_char(v_1,'YYYY-MM-DD:HH24:MI:SS'));
  12. end loop;
  13. end;
复制代码
有名字的schedule不能带有“时”、“分”和“秒”

  1. BEGIN
  2. sys.dbms_scheduler.create_schedule(
  3. repeat_interval => 'freq=YEARLY;byday=MON,TUE,WED,THU,FRI;BYHOUR=14;BYMINUTE=10;BYSECOND=0;exclude=HR.SCHEDULE3',
  4. start_date => systimestamp at time zone 'Asia/Shanghai',
  5. schedule_name => '"HR"."SCHEDULE31"');
  6. END;
复制代码
-----------
Oracle Advanced Queuing by Example
-----------

  1. select * from dba_queues;


  2. CREATE OR REPLACE TYPE t_event_queue_payload AS OBJECT (
  3.   event_name  VARCHAR2(30)
  4. );


  5. grant execute on t_event_queue_payload to hr;


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


  7. BEGIN
  8.   -- Create a queue table to hold the event queue.
  9.   DBMS_AQADM.create_queue_table(
  10.     queue_table        => 'event_queue_tab',
  11.     queue_payload_type => 't_event_queue_payload',
  12.     multiple_consumers => TRUE,
  13.     comment            => 'Queue Table For Event Messages');
  14.   -- Create the event queue.
  15.   DBMS_AQADM.create_queue (
  16.     queue_name  => 'event_queue',
  17.     queue_table => 'event_queue_tab');
  18.   -- Start the event queue.
  19.   DBMS_AQADM.start_queue (queue_name => 'event_queue');
  20. END;

  21. select * from dba_queues q where q.name='EVENT_QUEUE';


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


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


  30. grant execute on dbms_aq to hr;

  31. --------------------------------------

  32. CREATE TABLE hr.scheduler_test (
  33.   id            NUMBER(10)    NOT NULL,
  34.   created_date  DATE          NOT NULL,
  35.   CONSTRAINT scheduler_test_pk PRIMARY KEY (id)
  36. );

  37. select  * from hr.scheduler_test;
  38. CREATE SEQUENCE hr.scheduler_test_seq;
复制代码
1.png


Program4:
4.png

  1. BEGIN
  2. sys.dbms_scheduler.create_job(
  3. job_name => '"HR"."JOB4"',
  4. program_name => '"HR"."PROGRAM4"',
  5. schedule_name => '"HR"."SCHEDULE4"',
  6. job_class => '"DEFAULT_JOB_CLASS"',
  7. auto_drop => FALSE,
  8. enabled => TRUE);
  9. END;
复制代码
---------------------------------
模拟信号发生器:
HR:
  1. DECLARE
  2.   l_enqueue_options     DBMS_AQ.enqueue_options_t;
  3.   l_message_properties  DBMS_AQ.message_properties_t;
  4.   l_message_handle      RAW(16);
  5.   l_queue_msg           sys.t_event_queue_payload;
  6. BEGIN
  7.   l_queue_msg := sys.t_event_queue_payload('Chemical_Wrong');

  8.   DBMS_AQ.enqueue(queue_name          => 'sys.event_queue',
  9.                   enqueue_options     => l_enqueue_options,
  10.                   message_properties  => l_message_properties,
  11.                   payload             => l_queue_msg,
  12.                   msgid               => l_message_handle);
  13.   COMMIT;
  14. END;
复制代码





















回复

使用道具 举报

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

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-5-20 01:40 , Processed in 0.039582 second(s), 27 queries .

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