Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 PLS-00306  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 581
Привет!

BEGIN
   DBMS_JOB.SUBMIT(what=> 'select sysdate from dual;', next_date => SYSDATE, interval=> 'SYSDATE + 1');
   COMMIT;
END;


ORA-06550: line 2, column 4:
PLS-00306: wrong number or types of arguments in call to 'SUBMIT'
ORA-06550: line 2, column 4:
PL/SQL: Statement ignored

Не пойму, где ошибка?
18 сен 12, 10:39    [13180508]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
ukku
Member

Откуда: 59
Сообщений: 195
  PROCEDURE submit    ( job       OUT BINARY_INTEGER,
                        what      IN  VARCHAR2,
                        next_date IN  DATE DEFAULT sysdate,
                        interval  IN  VARCHAR2 DEFAULT 'null',
                        no_parse  IN  BOOLEAN DEFAULT FALSE,

                        -- Bug 1346620: replace pkg vars with constants.
                        -- Default for instance = dbms_job.any_instance.
			instance  IN  BINARY_INTEGER DEFAULT 0,
			force     IN  BOOLEAN DEFAULT FALSE );
18 сен 12, 10:43    [13180542]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
ILoveCoffee
Member

Откуда: Astana
Сообщений: 986
Bauer,
Конкретно
PLS-00306: wrong number or types of arguments in call to 'SUBMIT'
из-за отсутствия
job       OUT BINARY_INTEGER,
18 сен 12, 11:34    [13180909]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 581
Спасибо.
Еще вопрос:

DECLARE
  my_job number;
BEGIN
   DBMS_JOB.SUBMIT(job => my_job, what=> 'delete from ftr.ser_out where userid = ''DER''; commit;',
   next_date => SYSDATE, interval=> 'SYSDATE + 1/1440');
   COMMIT;
END;


создаю и запускаю (dbms_job.run) джоб, но, он почему-то не отрабатывает...
Я что-то пропустил?
18 сен 12, 12:49    [13181686]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
ILoveCoffee
Member

Откуда: Astana
Сообщений: 986
Bauer
но, он почему-то не отрабатывает...


Что значит "не отрабатывает" ?
посмотрите статистику по нему в dba_jobs;
18 сен 12, 13:30    [13182072]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 581
Ну вроде как джоб должен отрабатывать каждую минуту, а этого не происходит...
18 сен 12, 13:38    [13182141]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
ukku
Member

Откуда: 59
Сообщений: 195
Работать должен. Если не отрабатывает значит сам скрипт вылетает с ошибкой. С правами как?
18 сен 12, 13:41    [13182173]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Так ты dba_jobs смотрел? В частности, колонку failures
18 сен 12, 14:11    [13182495]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
ILoveCoffee
Member

Откуда: Astana
Сообщений: 986
tru55,

Не понятная методика тестирования у него,

"создаю и запускаю (dbms_job.run) джоб" (c)

если бы была ошибка, то руганулось бы на run:
SQL> exec dbms_job.run(186);
BEGIN dbms_job.run(186); END;

*
ERROR at line 1:
ORA-12011: execution of 1 jobs failed
18 сен 12, 14:19    [13182583]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
Bauer
Ну вроде как джоб должен отрабатывать каждую минуту, а этого не происходит...


Естествено не происходит:

SYSDATE + 1 это раз в день
SYSDATE + 1/24/60 это раз в мнуту.

SY.
18 сен 12, 17:15    [13183974]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 581
JOB LOG_USER PRIV_USER SCHEMA_USER LAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES
66 SYS SYS SYS 18/09/2012 21:03:52 21:03:52 18/09/2012 21:04:52 21:04:52 0 N SYSDATE + 1/1440 0

FAILURES is 0
18 сен 12, 19:12    [13184633]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Bauer
   DBMS_JOB.SUBMIT(job => my_job, what=> 'delete from ftr.ser_out where userid = ''DER''; commit;',

создаю и запускаю (dbms_job.run) джоб, но, он почему-то не отрабатывает...
Я что-то пропустил?
Пропустили BEGIN и END;
   DBMS_JOB.SUBMIT(job => my_job
                , what=> 'BEGIN delete from ftr.ser_out where userid = ''DER''; commit; END;',
18 сен 12, 19:15    [13184646]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54383
В тексте what не надо добавить begin/ end?
18 сен 12, 19:18    [13184663]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 581
Begin end - добавил, но, задание все-таки не отрабатывает.
Не пойму, в чем дело..., может есть какие баги?
rdbms: 10.2.0.3
18 сен 12, 19:39    [13184801]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
andreymx
В тексте what не надо добавить begin/ end?
Не обязательно
tst> create table t1(a number);

Table created.

tst> var j number
tst> exec dbms_job.submit(:j, 'insert into t1 values(1);'); commit

PL/SQL procedure successfully completed.

tst> select * from t1;

         A
----------
         1


2Аффтар
show parameter job_queue_processes
19 сен 12, 03:13    [13185915]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 581
Вячеслав Любомудров
2Аффтар
show parameter job_queue_processes

Спасибо, как всегда в точку. Было 0, увеличил - механизм заработал.

з.ы. В доке, в главе с заданиями почему-то нет прямого указания на этот параметр...
19 сен 12, 06:14    [13185952]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Про какую доку речь? Просто с 10g DBMS_JOB считается устаревшим и поэтому основной упор сделан на DBMS_SCHEDULER
Но тем не менее можно и про DBMS_JOB найти
Oracle® Database Administrator's Guide 10g Release 2 (10.2)
Administering the Scheduler
Using DBMS_SCHEDULER and DBMS_JOB at the Same Time
Even though Oracle recommends you switch from DBMS_JOB to DBMS_SCHEDULER, DBMS_JOB is still supported for backward compatibility. Both Scheduler packages share the same job coordinator, but DBMS_JOB does not have the auto start and stop functionality. Instead, the job coordinator is controlled by the JOB_QUEUE_PROCESSES initialization parameter. When JOB_QUEUE_PROCESSES is set to 0, the coordinator is turned off and when it has a non-zero value it is turned on.The JOB_QUEUE_PROCESSES initialization parameter is only used for DBMS_JOB. When this parameter is set to a non-zero value, auto start and stop no longer apply because the coordinator will always be up and running. In this case, the coordinator will take care of execution of both DBMS_SCHEDULER and DBMS_JOB jobs.

If the initialization parameter is set to 0, or if it is not set at all, no DBMS_JOB jobs will be run, however, the auto start and stop feature will be used for all DBMS_SCHEDULER jobs and windows. If there is a DBMS_SCHEDULER job to be executed, the coordinator will be started and the job will be executed. However, DBMS_JOB jobs still will not be run.
19 сен 12, 06:32    [13185957]     Ответить | Цитировать Сообщить модератору
 Re: PLS-00306  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 581
http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_job.htm

Наверное мне нужно было копнуть глубже... :)
19 сен 12, 07:25    [13185989]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить