Bo's Oracle Station

查看: 1648|回复: 0

课程第45次(2017-10-17星期二)

[复制链接]

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2017-10-17 20:12:49 | 显示全部楼层 |阅读模式
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('give_me_a_prod');

  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;

  15. ----------------------

  16. DROP TABLE scheduler_test;
  17. DROP SEQUENCE scheduler_test_seq;

  18. CREATE TABLE scheduler_test (
  19.   id            NUMBER(10)    NOT NULL,
  20.   description   VARCHAR2(20)  NOT NULL,
  21.   created_date  DATE          NOT NULL,
  22.   CONSTRAINT scheduler_test_pk PRIMARY KEY (id)
  23. );

  24. --------
  25. CREATE SEQUENCE scheduler_test_seq;
  26. ------
  27. BEGIN
  28.   DBMS_SCHEDULER.create_program (
  29.     program_name   => 'test_program_1',
  30.     program_type   => 'PLSQL_BLOCK',
  31.     program_action => 'BEGIN
  32.                          INSERT INTO scheduler_test (id, description, created_date)
  33.                          VALUES (scheduler_test_seq.NEXTVAL, ''test_program_1'', SYSDATE);
  34.                          COMMIT;
  35.                        END;',
  36.     enabled        => TRUE,
  37.     comments       => 'Step2');

  38.   DBMS_SCHEDULER.create_program (
  39.     program_name   => 'test_program_2',
  40.     program_type   => 'PLSQL_BLOCK',
  41.     program_action => 'BEGIN
  42.                          INSERT INTO scheduler_test (id, description, created_date)
  43.                          VALUES (scheduler_test_seq.NEXTVAL, ''test_program_2'', SYSDATE);
  44.                          COMMIT;
  45.                        END;',
  46.     enabled        => TRUE,
  47.     comments       => 'Step3');

  48.   DBMS_SCHEDULER.create_program (
  49.     program_name   => 'test_program_3',
  50.     program_type   => 'PLSQL_BLOCK',
  51.     program_action => 'BEGIN
  52.                          INSERT INTO scheduler_test (id, description, created_date)
  53.                          VALUES (scheduler_test_seq.NEXTVAL, ''test_program_3'', SYSDATE);
  54.                          COMMIT;
  55.                        END;',
  56.     enabled        => TRUE,
  57.     comments       => 'Step4');
  58. END;
  59. -------


复制代码

EM:
  1. BEGIN
  2. sys.dbms_scheduler.create_chain(
  3. comments => 'chain1',
  4. chain_name => '"HR"."CHAIN1"');
  5. sys.dbms_scheduler.define_chain_event_step(
  6. chain_name => '"HR"."CHAIN1"',
  7. step_name => '"STEP1"',
  8. event_schedule_name => '"HR"."SCHEDULE4"');
  9. sys.dbms_scheduler.alter_chain(
  10. chain_name => '"HR"."CHAIN1"',
  11. step_name => '"STEP1"',
  12. attribute => 'pause',
  13. value => FALSE);
  14. sys.dbms_scheduler.alter_chain(
  15. chain_name => '"HR"."CHAIN1"',
  16. step_name => '"STEP1"',
  17. attribute => 'skip',
  18. value => FALSE);
  19. sys.dbms_scheduler.alter_chain(
  20. chain_name => '"HR"."CHAIN1"',
  21. step_name => '"STEP1"',
  22. attribute => 'restart_on_failure',
  23. value => FALSE);
  24. sys.dbms_scheduler.define_chain_step(
  25. chain_name => '"HR"."CHAIN1"',
  26. step_name => '"STEP2"',
  27. program_name => '"HR"."TEST_PROGRAM_1"');
  28. sys.dbms_scheduler.alter_chain(
  29. chain_name => '"HR"."CHAIN1"',
  30. step_name => '"STEP2"',
  31. attribute => 'pause',
  32. value => FALSE);
  33. sys.dbms_scheduler.alter_chain(
  34. chain_name => '"HR"."CHAIN1"',
  35. step_name => '"STEP2"',
  36. attribute => 'skip',
  37. value => FALSE);
  38. sys.dbms_scheduler.alter_chain(
  39. chain_name => '"HR"."CHAIN1"',
  40. step_name => '"STEP2"',
  41. attribute => 'restart_on_failure',
  42. value => FALSE);
  43. sys.dbms_scheduler.define_chain_step(
  44. chain_name => '"HR"."CHAIN1"',
  45. step_name => '"STEP3"',
  46. program_name => '"HR"."TEST_PROGRAM_2"');
  47. sys.dbms_scheduler.alter_chain(
  48. chain_name => '"HR"."CHAIN1"',
  49. step_name => '"STEP3"',
  50. attribute => 'pause',
  51. value => FALSE);
  52. sys.dbms_scheduler.alter_chain(
  53. chain_name => '"HR"."CHAIN1"',
  54. step_name => '"STEP3"',
  55. attribute => 'skip',
  56. value => FALSE);
  57. sys.dbms_scheduler.alter_chain(
  58. chain_name => '"HR"."CHAIN1"',
  59. step_name => '"STEP3"',
  60. attribute => 'restart_on_failure',
  61. value => FALSE);
  62. sys.dbms_scheduler.define_chain_step(
  63. chain_name => '"HR"."CHAIN1"',
  64. step_name => '"STEP4"',
  65. program_name => '"HR"."TEST_PROGRAM_3"');
  66. sys.dbms_scheduler.alter_chain(
  67. chain_name => '"HR"."CHAIN1"',
  68. step_name => '"STEP4"',
  69. attribute => 'pause',
  70. value => FALSE);
  71. sys.dbms_scheduler.alter_chain(
  72. chain_name => '"HR"."CHAIN1"',
  73. step_name => '"STEP4"',
  74. attribute => 'skip',
  75. value => FALSE);
  76. sys.dbms_scheduler.alter_chain(
  77. chain_name => '"HR"."CHAIN1"',
  78. step_name => '"STEP4"',
  79. attribute => 'restart_on_failure',
  80. value => FALSE);
  81. sys.dbms_scheduler.define_chain_rule(
  82. chain_name => '"HR"."CHAIN1"',
  83. condition => '1=1',
  84. rule_name => 'RULE1',
  85. comments => 'rule1',
  86. action => 'START step1');
  87. sys.dbms_scheduler.define_chain_rule(
  88. chain_name => '"HR"."CHAIN1"',
  89. condition => 'step1 COMPLETED',
  90. rule_name => 'RULE2',
  91. comments => 'rule2',
  92. action => 'START step2');
  93. sys.dbms_scheduler.define_chain_rule(
  94. chain_name => '"HR"."CHAIN1"',
  95. condition => 'step2 COMPLETED',
  96. rule_name => 'RULE3',
  97. comments => 'rule3',
  98. action => 'START step3');
  99. sys.dbms_scheduler.define_chain_rule(
  100. chain_name => '"HR"."CHAIN1"',
  101. condition => 'step3 COMPLETED',
  102. rule_name => 'RULE4',
  103. comments => 'rule4',
  104. action => 'START step4');
  105. sys.dbms_scheduler.define_chain_rule(
  106. chain_name => '"HR"."CHAIN1"',
  107. condition => 'step4 COMPLETED',
  108. rule_name => 'RULE5',
  109. comments => 'rule5',
  110. action => 'END');
  111. END;

  112.                         
复制代码
Screenshot.png

附:邮件服务器
/etc/postfix/main.cf
  1. [root@station90 postfix]# grep -v '^#'  main.cf | grep -v '^


  2. queue_directory = /var/spool/postfix
  3. command_directory = /usr/sbin
  4. daemon_directory = /usr/libexec/postfix
  5. data_directory = /var/lib/postfix
  6. mail_owner = postfix
  7. myorigin = $mydomain
  8. inet_interfaces = all
  9. inet_protocols = all
  10. mydestination = $myhostname, localhost.$mydomain, localhost, example.com, something.net
  11. unknown_local_recipient_reject_code = 550
  12. mynetworks = 192.168.0.0/24, 127.0.0.0/8
  13. alias_maps = hash:/etc/aliases
  14. alias_database = hash:/etc/aliases

  15.   
  16. debug_peer_level = 2
  17. debugger_command =
  18.          PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
  19.          ddd $daemon_directory/$process_name $process_id & sleep 5
  20. sendmail_path = /usr/sbin/sendmail.postfix
  21. newaliases_path = /usr/bin/newaliases.postfix
  22. mailq_path = /usr/bin/mailq.postfix
  23. setgid_group = postdrop
  24. html_directory = no
  25. manpage_directory = /usr/share/man
  26. sample_directory = /usr/share/doc/postfix-2.6.6/samples
  27. readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
  28. smtpd_recipient_restrictions= hash:/etc/postfix/access2,
  29.                               permit_mynetworks,
  30.                               permit_sasl_authenticated,
  31.                               reject_unauth_destination
  32. smtpd_sender_restrictions= hash:/etc/postfix/access,
  33.                               permit_mynetworks,
  34.                               permit_sasl_authenticated,
  35.                               reject_unauth_destination
  36. [root@station90 postfix]#
复制代码
/etc/dovecot/dovecot.conf:
  1. login_trusted_networks =  192.168.0.0/24
  2. dict {
  3.   #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
  4.   #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
  5. }
  6. !include conf.d/*.conf
复制代码
/etc/dovecot/conf.d/10-mail.conf:
  1. mail_location = mbox:~/mail:INBOX=/var/mail/%u
复制代码
建用户:
  1. [root@station90 ~]# passwd   testzhang3
  2. 更改用户 testzhang3 的密码 。
  3. 新的 密码:
  4. 无效的密码: 它基于字典单词
  5. 无效的密码: 过于简单
  6. 重新输入新的 密码:
  7. passwd: 所有的身份验证令牌已经成功更新。
  8. [root@station90 ~]# su - testzhang3
  9. [testzhang3@station90 ~]$ mkdir -p  mail/.imap/INBOX
  10. [testzhang3@station90 ~]$
复制代码
  1. select  * from dba_scheduler_global_attribute;
  2. select  * from dba_scheduler_notifications;


  3. begin
  4. DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
  5. ('email_server','station90.example.com');
  6. end;

  7. begin
  8.   DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
  9.   ('email_sender','testzhang3@example.com');
  10. end;

  11. select  * from dba_scheduler_global_attribute;

  12. ---

  13. begin
  14.   DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
  15.   job_name       =>'HR.JOB5',
  16.     events   =>'job_failed',
  17.   recipients     =>'testzhang3@example.com');
  18. end;

  19. select  * from dba_scheduler_notifications;
复制代码
  1. select  * from dba_scheduler_global_attribute;
  2. select  * from dba_scheduler_notifications;

  3. begin
  4. DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
  5. ('email_server','station90.example.com');
  6. end;

  7. begin
  8.   DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
  9.   ('email_sender','oracle@example.com');
  10. end;

  11. begin
  12.   DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
  13.   job_name       =>'HR.JOB5',
  14.     events   =>'job_succeeded,job_completed',
  15.   recipients     =>'oracle@example.com');
  16. end;

  17. begin
  18. DBMS_SCHEDULER.REMOVE_JOB_EMAIL_NOTIFICATION (
  19.   job_name         =>'HR.JOB5');
  20. end;

  21. 错误
  22. create or replace procedure hr.proc1
  23. begin
  24.   update t123456 set a=2;
  25. end;

  26. begin
  27. DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
  28.   job_name       =>'HR.JOB51',
  29.   recipients     =>'oracle@example.com');
  30. end;

  31. BEGIN
  32. DBMS_SCHEDULER.add_job_email_notification (
  33.   job_name         =>  'test_notification_job',
  34.   recipients       =>  'oracle@example.com',
  35.   events           =>  'job_failed',
  36.   filter_condition => ':event.error_code=600');
  37. END;
  38. /



复制代码

Screenshot.png


回复

使用道具 举报

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

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-4-19 21:25 , Processed in 0.039842 second(s), 27 queries .

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