|
Notice: This blog is written by Bo Tang.
job1:
本地内部作业
-----------------------------------------------------------------
job2:
本地外部作业:
- select * from dba_scheduler_credentials;
- begin
- dbms_scheduler.create_credential(credential_name => 'credential1',
- username => 'oracle',
- password => 'oracle');
- end;
- grant execute on credential1 to hr;
- select * from dba_tab_privs tp where tp.grantee='HR';
- grant create external job to hr;
- select * from dba_sys_privs sp where sp.grantee='HR';
复制代码
job2.sh:
- #!/bin/sh
- export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
- export ORACLE_SID=orcl
- export ORACLE_BASE=/u01/app/oracle
- /u01/app/oracle/product/11.2.0/dbhome_1/bin/sqlplus /nolog >> /home/oracle/job2a.log <<EOF
- conn hr/oracle_4U
- alter session set nls_date_format='yyyy-mm-dd:hh24:mi:ss';
- select sysdate from dual;
- exit
- EOF
- date +%Y%m%d-%H%M%S >> /home/oracle/job2b.log
复制代码- BEGIN
- DBMS_SCHEDULER.CREATE_PROGRAM(
- program_name=>'"HR"."PROGRAM2"',
- program_action=>'/home/oracle/job2.sh',
- program_type=>'EXECUTABLE',
- number_of_arguments=>0,
- comments=>'',
- enabled=>TRUE);
- END;
复制代码- BEGIN
- sys.dbms_scheduler.create_schedule(
- repeat_interval => 'FREQ=SECONDLY;INTERVAL=30',
- start_date => systimestamp at time zone 'Asia/Shanghai',
- schedule_name => '"HR"."SCHEDULE2"');
- END;
复制代码
- BEGIN
- sys.dbms_scheduler.create_job(
- job_name => '"HR"."JOB2"',
- program_name => '"HR"."PROGRAM2"',
- schedule_name => '"HR"."SCHEDULE2"',
- job_class => '"DEFAULT_JOB_CLASS"',
- auto_drop => FALSE,
- enabled => FALSE);
- DBMS_SCHEDULER.SET_ATTRIBUTE(name => '"HR"."JOB2"', attribute => 'credential_name', value => '"SYS"."CREDENTIAL1"' );
- sys.dbms_scheduler.enable( '"HR"."JOB2"' );
- END;
复制代码 ------------------------------------------------
schedule3系列:
-
- declare
- v_1 timestamp;
- begin
- for i in 1..5
- loop
- DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING (
- calendar_string=>'freq=YEARLY;bydate=1007,1008,1101' ,
- start_date => sysdate,
- return_date_after => v_1,
- next_run_date => v_1 );
- dbms_output.put_line(to_char(v_1,'YYYY-MM-DD:HH24:MI:SS'));
- end loop;
- end
复制代码
- declare
- v_1 timestamp;
- begin
- for i in 1..5
- loop
- DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING (
- calendar_string=>'freq=YEARLY;byday=MON,TUE,WED,THU,FRI;BYHOUR=14;BYMINUTE=10;BYSECOND=0;exclude=HR.SCHEDULE3' ,
- start_date => sysdate,
- return_date_after => v_1,
- next_run_date => v_1 );
- dbms_output.put_line(to_char(v_1,'YYYY-MM-DD:HH24:MI:SS'));
- end loop;
- end;
复制代码 有名字的schedule不能带有“时”、“分”和“秒”
- BEGIN
- sys.dbms_scheduler.create_schedule(
- repeat_interval => 'freq=YEARLY;byday=MON,TUE,WED,THU,FRI;BYHOUR=14;BYMINUTE=10;BYSECOND=0;exclude=HR.SCHEDULE3',
- start_date => systimestamp at time zone 'Asia/Shanghai',
- schedule_name => '"HR"."SCHEDULE31"');
- END;
复制代码 -----------
“Oracle Advanced Queuing by Example”
-----------
- select * from dba_queues;
- CREATE OR REPLACE TYPE t_event_queue_payload AS OBJECT (
- event_name VARCHAR2(30)
- );
- grant execute on t_event_queue_payload to hr;
- select * from dba_tab_privs tp where tp.grantee='HR';
- BEGIN
- -- Create a queue table to hold the event queue.
- DBMS_AQADM.create_queue_table(
- queue_table => 'event_queue_tab',
- queue_payload_type => 't_event_queue_payload',
- multiple_consumers => TRUE,
- comment => 'Queue Table For Event Messages');
- -- Create the event queue.
- DBMS_AQADM.create_queue (
- queue_name => 'event_queue',
- queue_table => 'event_queue_tab');
- -- Start the event queue.
- DBMS_AQADM.start_queue (queue_name => 'event_queue');
- END;
- select * from dba_queues q where q.name='EVENT_QUEUE';
- begin
- dbms_aqadm.grant_queue_privilege(privilege => 'ENQUEUE',queue_name => 'event_queue',grantee => 'HR');
- end;
-
- begin
- dbms_aqadm.grant_queue_privilege(privilege => 'DEQUEUE',queue_name => 'event_queue',grantee => 'HR');
- end;
- select * from dba_tab_privs tp where tp.grantee='HR';
- grant execute on dbms_aq to hr;
- --------------------------------------
- CREATE TABLE hr.scheduler_test (
- id NUMBER(10) NOT NULL,
- created_date DATE NOT NULL,
- CONSTRAINT scheduler_test_pk PRIMARY KEY (id)
- );
- select * from hr.scheduler_test;
- CREATE SEQUENCE hr.scheduler_test_seq;
复制代码
Program4:
- BEGIN
- sys.dbms_scheduler.create_job(
- job_name => '"HR"."JOB4"',
- program_name => '"HR"."PROGRAM4"',
- schedule_name => '"HR"."SCHEDULE4"',
- job_class => '"DEFAULT_JOB_CLASS"',
- auto_drop => FALSE,
- enabled => TRUE);
- END;
复制代码 ---------------------------------
模拟信号发生器:
HR:
- DECLARE
- l_enqueue_options DBMS_AQ.enqueue_options_t;
- l_message_properties DBMS_AQ.message_properties_t;
- l_message_handle RAW(16);
- l_queue_msg sys.t_event_queue_payload;
- BEGIN
- l_queue_msg := sys.t_event_queue_payload('Chemical_Wrong');
- DBMS_AQ.enqueue(queue_name => 'sys.event_queue',
- enqueue_options => l_enqueue_options,
- message_properties => l_message_properties,
- payload => l_queue_msg,
- msgid => l_message_handle);
- COMMIT;
- END;
复制代码
|
|