У меня есть insert-select
заявление, которое я выполняю параллельно.
Я пытаюсь добавить dml error logging
для захвата исключений.
Но когда я изменяюсеанс параллельного ведения журнала ошибок просто игнорируется.
-- This is my error table:
TRUNCATE TABLE DWH.ERR$_DWH_CONV;
-- This code is finish with no error and insert rows to DWH.ERR$_DWH_CONV
BEGIN
EXECUTE IMMEDIATE
'alter session enable parallel dml';
INSERT
/*+ monitor parallel(1) */
INTO DWH.PURCHASE
select *
FROM DWH.PURCHASE_C LOG ERRORS
INTO DWH.ERR$_DWH_CONV ('DWH.PURCHASE') REJECT LIMIT UNLIMITED ;
commit;
END;
Но когда я запускаю этот код (параллель 6) - возникает исключение (ORA-12801), а таблица ошибок не имеетлюбое изменение:
BEGIN
EXECUTE IMMEDIATE
'alter session enable parallel dml';
INSERT
/*+ monitor parallel(6) */
INTO DWH.PURCHASE
select *
FROM DWH.PURCHASE_C LOG ERRORS
INTO DWH.ERR$_DWH_CONV ('DWH.PURCHASE') REJECT LIMIT UNLIMITED ;
commit;
END;
Эта разница также появляется, если я включаю или отключаю alter-session
.
Я использую Oracle 11g.
СогласноДокументы Oracle, я не видел никаких ограничений на использование dml error logging
с parallel
..