Oracle оператор иногда не возвращает никаких данных без сообщения об ошибке - PullRequest
0 голосов
/ 27 марта 2020

У меня есть этот запрос ниже, сгенерированный инструментом BI, который выполняется в Oracle версии 12.2. Иногда один, несколько или все столбцы в результатах пусты, сообщение об ошибке не возвращается. В большинстве случаев вывод завершен, хотя. Это происходит как в инструменте BI, так и при выполнении запроса к базе данных напрямую с использованием Oracle SQL Developer 19.

После игры с настройками инструмента BI я подозреваю, что проблема может быть связана с использованием глобальных временных таблиц или параллельного выполнения или обоих в комбинации.

Вот запрос, я должен был удалить имена таблиц и столбцов.

ALTER SESSION SET PARALLEL_DEGREE_POLICY=AUTO;

create GLOBAL TEMPORARY table ZZMD00 ()
ON COMMIT PRESERVE ROWS

insert into ZZMD00
select /*+ NO_STATEMENT_QUEUING */
commit

ANALYZE TABLE ZZMD00 ESTIMATE STATISTICS SAMPLE 25 PERCENT

create GLOBAL TEMPORARY table ZZMD01 ()
ON COMMIT PRESERVE ROWS

insert into ZZMD01
select /*+ NO_STATEMENT_QUEUING */
commit

ANALYZE TABLE ZZMD01 ESTIMATE STATISTICS SAMPLE 25 PERCENT

create GLOBAL TEMPORARY table ZZMD02 ()
ON COMMIT PRESERVE ROWS

insert into ZZMD02
select /*+ NO_STATEMENT_QUEUING */
commit

ANALYZE TABLE ZZMD02 ESTIMATE STATISTICS SAMPLE 25 PERCENT

create GLOBAL TEMPORARY table ZZMD03 ()
ON COMMIT PRESERVE ROWS

insert into ZZMD03
select /*+ NO_STATEMENT_QUEUING */
commit

ANALYZE TABLE ZZMD03 ESTIMATE STATISTICS SAMPLE 25 PERCENT

select /*+ NO_STATEMENT_QUEUING */
from ZZMD00 pa11
full outer join ZZMD01 pa12
   on  ()
full outer join ZZMD02 pa13
   on  ()
full outer join ZZMD03 pa14
   on  ()

ALTER SESSION SET PARALLEL_DEGREE_POLICY=MANUAL

Кто-нибудь знает, что может вызвать неполное или пустые результаты здесь? Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...