Мы столкнулись с проблемой при отправке работы от одного из моих клиентов.Эти работы являются частью процесса «Конец дня».
Когда я отправляю задание СУБД из Java, после проверки состояния задания в «user_jobs» я получаю одновременно два задания с одинаковым именем, которые создают сеансы блокировки и взаимоблокировки.
Но проблема возникает не все дни.Это произошло только 3 раза с прошлого месяца.
Не могли бы вы дать нам некоторые сведения о том, как идентифицировать эту проблему?
Версия Oracle 11g, и это версия Enterprise.
Следующая процедура используется для отправки задания из java.
CREATE OR REPLACE FUNCTION submitProcAsJob(p_szJobName VARCHAR2,
p_szInstanceNo VARCHAR2 DEFAULT NULL) RETURN NUMBER IS
m_iJobNo NUMBER;
m_iInstanceNo NUMBER;
BEGIN
BEGIN
m_iInstanceNo := To_Number(TRIM(p_szInstanceNo));
EXCEPTION WHEN OTHERS THEN
m_iInstanceNo := NULL;
END;
IF m_iInstanceNo IS NOT NULL THEN
DBMS_JOB.SUBMIT(m_iJobNo, p_szJobName, SYSDATE, NULL, FALSE, m_iInstanceNo) ;
ELSE
DBMS_JOB.SUBMIT(m_iJobNo, p_szJobName, SYSDATE, NULL);
END IF;
IF m_iJobNo IS NULL THEN
RAISE_APPLICATION_ERROR(-20002, 'Unable to submit job.');
END IF;
COMMIT ;
RETURN m_iJobNo;
EXCEPTION WHEN OTHERS THEN
RETURN 0;
END;
Входные данные, переданные в процедуру: -
p_szJobName :- EOD_UPLOADFINDETAILS_CARD('001','507213',To_Date('20181203', 'yyyyMMdd'),'SYSTEM','001','CARD','N','Y');
p_szInstanceNo :- 1
Ниже приведены выходные данные, общие для клиента,
SQL> SELECT job, log_user, schema_user, last_date, this_date, what, broken FROM DBa_jobs where broken='N';
JOB LOG_USER SCHEMA_USER
---------- ------------------------------ ------------------------------
LAST_DATE THIS_DATE
--------- ---------
WHAT
--------------------------------------------------------------------------------
B
-
285712 SYS SYSMAN
05-DEC-18
EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS();
N
JOB LOG_USER SCHEMA_USER
---------- ------------------------------ ------------------------------
LAST_DATE THIS_DATE
--------- ---------
WHAT
--------------------------------------------------------------------------------
B
-
829059 ICSDB ICSDB
04-DEC-18
EOD_UPLOADFINDETAILS_CARD('001','507213',To_Date('20181203', 'yyyyMMdd'),'SYSTEM
','001','CARD','N','Y');
N
JOB LOG_USER SCHEMA_USER
---------- ------------------------------ ------------------------------
LAST_DATE THIS_DATE
--------- ---------
WHAT
--------------------------------------------------------------------------------
B
-
829060 ICSDB ICSDB
04-DEC-18
EOD_UPLOADFINDETAILS_CARD('001','507213',To_Date('20181203', 'yyyyMMdd'),'SYSTEM
','001','CARD','N','Y');
JOB LOG_USER SCHEMA_USER
---------- ------------------------------ ------------------------------
LAST_DATE THIS_DATE
--------- ---------
WHAT
--------------------------------------------------------------------------------
B
-
N
SQL> SELECT * FROM DBA_JOBS_RUNNING;
SID JOB FAILURES LAST_DATE LAST_SEC THIS_DATE THIS_SEC
---------- ---------- ---------- --------- -------- --------- --------
INSTANCE
----------
2661 829060 04-DEC-18 21:46:47
1
2838 829059 04-DEC-18 21:46:47
1