DBMS_SCHEDULER.ADD_EMAIL_NOTIFICATION

esir
Дата: 10.12.2012 12:38:01
Появилась нужда поставить email уведомления на джобы.

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Solaris: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production





Выставляю общие параметры:

BEGIN
DBMS_SCHEDULER.set_scheduler_attribute('email_server', '192.168.100.111:25');
END;


создана сама джоба

BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'SYS.TESTNOTIF'
,start_date => TO_TIMESTAMP_TZ('2012/12/10 10:49:12.396470 Europe/Samara','yyyy/mm/dd hh24:mi:ss.ff tzr')
,repeat_interval => 'FREQ=MINUTELY;INTERVAL=1'
,end_date => NULL
,job_class => 'DEFAULT_JOB_CLASS'
,job_type => 'PLSQL_BLOCK'
,job_action => 'begin
null;
end;'
,comments => NULL
);



создан нотификатор

BEGIN
DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
job_name => 'testnotif',
recipients => 'e.sirenko@odnookno.info',
sender => 'e.sirenko@odnookno.info',
subject => 'Scheduler Job Notification-%job_owner%.%job_name%-%event_type%',
body => '%event_type% occurred at %event_timestamp%. %error_message%',
events => 'JOB_FAILED, JOB_BROKEN, JOB_DISABLED, JOB_SCH_LIM_REACHED');
END;

Таблица не пуста:

SELECT job_name, recipient, event, filter_condition
FROM user_scheduler_notifications;

JOB_NAME RECIPIENT EVENT FILTER_CONDITION
------------------------- -------------------- ------------------- ------------------------------
TESTNOTIF e.sirenko@odnookno.i JOB_FAILED
nfo

TESTNOTIF e.sirenko@odnookno.i JOB_BROKEN
nfo

TESTNOTIF e.sirenko@odnookno.i JOB_SCH_LIM_REACHED
nfo

TESTNOTIF e.sirenko@odnookno.i JOB_DISABLED
nfo





==================================\
Но на почту ничего не приходит.....


smtp сервер рабочий, EM через Notification Schedule спокойно отправляет с этим сервером.


Что сделано не так? или не доделано? нужно ли куда нибудь вводить логин\пароль от "sender"?
kinky cat
Дата: 10.12.2012 13:19:11
esir,
SELECT * FROM Dba_Scheduler_Notifications t WHERE job_name = 'SYS.TESTNOTIF';

если с job name не напутали смотрите логи маил сервера.
esir
Дата: 10.12.2012 14:21:00
SELECT * FROM Dba_Scheduler_Notifications t WHERE job_name = 'TESTNOTIF';


не пустой... пишет что отправил! надо походу действительно в логах сервака копаться...
ASpens
Дата: 11.12.2012 17:15:52
esir,

А пользователю oracle, из-под которого выполняется отправка, разрешено обращаться на 192.168.100.111:25? ACL прописаны?
blkangel
Дата: 10.06.2015 18:20:07
Подниму тему, все настроил, письма ходят с помощью пакета utl_smtp, utl_mail, а вот сообщения от планировщика об ошибках не ходят.
Куда еще копнуть?
   > select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production


BEGIN
	DBMS_SCHEDULER.CREATE_JOB (
		job_name => '"my_job_name"',
		job_type => 'PLSQL_BLOCK',
		job_action => 'Begin
  my_package.sync_pdf_result;
End;',
		number_of_arguments => 0,
		start_date => NULL,
		repeat_interval => 'FREQ=MINUTELY;INTERVAL=2',
		end_date => NULL,
		enabled => FALSE,
		auto_drop => FALSE,
		comments => 'my_job_name'
	);
	DBMS_SCHEDULER.SET_ATTRIBUTE( 
		name => '"my_job_name"', 
		attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF
	);
	DBMS_SCHEDULER.enable(name => '"my_job_name"');
END;
/


BEGIN

	DBMS_SCHEDULER.REMOVE_JOB_EMAIL_NOTIFICATION (    
             job_name => '"SCHEMA"."my_job_name"'
             );
	DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (    
             job_name => '"SCHEMA"."my_job_name"', 
             recipients => 'my_email@mailserver.ru',
             sender => 'robot@mailserver.ru',
             subject => 'Oracle Scheduler Job Notification - %job_owner%.%job_name%.%job_subname% %event_type%',
             body => 'Job: %job_owner%.%job_name%.%job_subname%
Event: %event_type%
Date: %event_timestamp%
Log id: %log_id%
Job class: %job_class_name%
Run count: %run_count%
Failure count: %failure_count%
Retry count: %retry_count%
Error code: %error_code
%Error message: %error_message%
',
             events => 'JOB_BROKEN, JOB_CHAIN_STALLED, JOB_FAILED, JOB_OVER_MAX_DUR, JOB_SCH_LIM_REACHED',
             	filter_condition =>  ''
             );

END; 

SELECT count(*) FROM user_scheduler_notifications t WHERE job_name = 'my_job_name';

  COUNT(*)
----------
         5
SY
Дата: 10.06.2015 19:55:49
A email сервер для DBMS_SCHEDULER установлен (DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE атрибут email_server) ?

SY.
blkangel
Дата: 11.06.2015 10:46:39
SY
A email сервер для DBMS_SCHEDULER установлен (DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE атрибут email_server) ?

SY.

Да установлен, незнаю как его считать командой, в EM вижу
mailserver.ru:25

Если он пустой, он не дает создать напоминание
blkangel
Дата: 11.06.2015 10:48:08
blkangel,

У системщиков спрашивал, до сервера не доходит письмо.
А где нибудь оракл логирует отправку таких писем?
KoTTT
Дата: 19.06.2015 11:54:36
Ставьте патч.