У меня есть выборочный SQL-запрос, в котором используется параллелизм, примерно так
INSERT/*+ APPEND PARALLEL (tst, 6) */ INTO test_table tst
(
**************
**************
**************
)
SELECT /*+ PARALLEL (a, 6) */ DISTINCT
**************
**************
**************
FROM src_table a;
Как вы можете видеть здесь, у меня сложно- закодировал степень, но я не хочу этого делать, поскольку количество процессоров не одинаково во всех БД, где выполняется этот код.
Мое требование:
Мне нужно запросить V $ ПАРАМЕТР
для доступного количества ЦП и использовать значение как результат-2
в моем запросе. Что-то вроде этого ...
DECLARE
degree varchar2(1);
BEGIN
select value-2 INTO degree from v$parameter where name='cpu_count';
INSERT/*+ APPEND PARALLEL (tst, degree) */ INTO test_table tst
(
**************
**************
**************
)
SELECT /*+ PARALLEL (a, degree) */ DISTINCT
**************
**************
**************
FROM src_table a;
END;
Но он работает не так, как я ожидал, и я увидеть 32 параллельных потока, независимо от доступных ЦП. Верно ли это? Если нет, есть ли другое решение для моих требований?