Преобразование Pentaho Spoon выдает: ORA-01652: невозможно расширить временный сегмент на 128 в табличном пространстве TEMP

Привет, я делаю простое преобразование с помощью Pentaho Spoon, преобразование состоит из двух этапов:

  1. Входная таблица: я использую SQL для извлечения данных из базы данных Oracle 11g.

  2. Вывод в Excel: я записываю данные из базы данных в файл Excel.

Проблема в том, что когда я пытаюсь выполнить это двухэтапное преобразование, ничего не происходит. Я попытался визуализировать первые 200 записей с первого шага, но выдает следующую ошибку:

ORA-01652: невозможно увеличить временный сегмент на 128 в табличном пространстве TEMP.

Является ли это причиной, по которой преобразование не работает, как я могу это исправить, учитывая, что у меня нет прав администратора в базе данных для увеличения размера табличного пространства TEMP.

Это сообщения Loggin:

введите описание изображения здесь

введите описание изображения здесь

Запрос, используемый в методе входной таблицы, выглядит следующим образом:

SELECT
ptn.ptnID,
ptn.ptnNAME,
ptn.ptnSURNAME,
ptn.SSN,
ptn.EXTERNALID,
ptn.NTS,
ptn.GENDER,
ptn.DOB,
ptn.ADDRESS,
ptn.CITY,
ptn.STATE,
ptn.COUNTRY,
ptn.POSTALCODE,
ptn.ACTIVE,
ptn.NACIONALITY,
ptn.COUNTRYOFBIRTH,
ptn.EXITUS,
ptn.ptnFIRSTSURNAME,
ptn.ptnSECONDSURNAME,
ptn.DEATHDATE,
appl.applID,
srv.srvDESCRIPTION,
center.CENTERDESCRIPTION,
appl.applLABEL,
appl.applDATE,
appl.COMPLETEDATE,
container.COMMENTS,
sample.SAMPLEDESCRIPTION,
test.TESTDESCRIPTION,
test.UNITSCS,
rslhst.RESULTSTATUS,
rslhst.ISAUTOMATIC,
pathology.PATHOLOGYDESCRIPTION,
FROM USRGR.APPLICATION appl
LEFT OUTER JOIN USRGR.PTN ptn on ptn.ptnid = appl.ptnid
LEFT OUTER JOIN USRGR.APPLICATIONTEST appltest on appltest.ptnid = appl.ptnid
LEFT OUTER JOIN USRGR.TEST test on test.testid = appltest.testid
LEFT OUTER JOIN USRGR.RSLHST rslhst on (rslhst.applid = appltest.applid) AND (rslhst.testid = appltest.testid)
LEFT OUTER JOIN USRGR.CONTAINER container on container.containerid = rslhst.containerid
LEFT OUTER JOIN USRGR.DOC doc on doc.docid = appl.docid
LEFT OUTER JOIN USRGR.SRV srv on srv.srvid = appl.srvid
LEFT OUTER JOIN USRGR.CENTER center on center.centerid = srv.centerid
LEFT OUTER JOIN USRGR.SAMPLE sample on  sample.sampleid = container.sampleid
LEFT OUTER JOIN USRGR.CLTRISOL  cltrisol on  cltrisol.applid = rslhst.applid
LEFT OUTER JOIN USRGR.ISL isl on isl.islid = cltrisol.islid
LEFT OUTER JOIN USRGR.PATHOLOGY on pathology.pathologyid = rslhst.pathology
LEFT OUTER JOIN USRGR.COD cod on cod.codsfamilyid = rslhst.codsfamilyid AND rslhst.shortdescription1 = cod.shortdescription
LEFT OUTER JOIN USRGR.INTERVALS intervals on intervals.testid = test.testid AND intervals.methodid = rslhst.methodid
WHERE
    appl.orderdate BETWEEN '01/01/19' AND '02/01/19' AND
    rslhst.isfinal = 'Y' AND
    appl.iscomplete = 'Y' AND
    ((to_number(to_char(appl.ORDERDATE, 'YYYY')) - to_number(to_char(ptn.DOB, 'YYYY'))) * 12 * 12 >= intervals.from) AND
    ((to_number(to_char(appl.ORDERDATE, 'YYYY')) - to_number(to_char(ptn.DOB, 'YYYY'))) * 12 * 12 < intervals.to) AND
    test.testid in (
    5, 5261,
    435, 438,
    5014, 3986, 3987,
    4293, 6017, 2295, 2296, 2298,
    196, 199, 218, 219, 1626, 3861, 5275, 5276
    );

Объясните выход плана:

"PLAN_TABLE_OUTPUT"

"Plan hash value: 3813514414"

" "

"-------------------------------------------------------------------------------"

"| Id  | Operation     | Name                 | Rows  | Bytes |TempSpc| Cost  | "

"-------------------------------------------------------------------------------"

"|   0 | SELECT STATEMENT  |                  |   319K|   497M|       |  1508K|"

"|*  1 |  FILTER           |                  |       |       |       |       |"

"|*  2 |   HASH JOIN OUTER |                  |   319K|   497M|   494M|  1508K|"

"|   3 |    VIEW           |                  |   319K|   490M|       |  1500K|"

"|*  4 |     FILTER        |                  |       |       |       |       |"

"|*  5 |      HASH JOIN OUTER|                |   319K|   172M|   148M|  1500K|"

"|*  6 |       HASH JOIN OUTER|               |   319K|   145M|   140M|  1491K|"

"|*  7 |        HASH JOIN OUTER|              |   319K|   137M|   116M|  1489K|"

"|*  8 |         HASH JOIN OUTER|             |   319K|   112M|   105M|  1487K|"

"|*  9 |          HASH JOIN OUTER|            |   319K|   101M|    88M|  1485K|"

"|* 10 |           HASH JOIN OUTER|           |   284K|    85M|    79M|  1483K|"

"|* 11 |            HASH JOIN OUTER|          |   284K|    76M|    74M|  1482K|"

"|* 12 |             HASH JOIN|               |   284K|    71M|   148M|  1481K|"

"|* 13 |              FILTER|                 |       |       |       |       |"

"|* 14 |               HASH JOIN OUTER|       |   669K|   141M|   121M| 89111 |"

"|  15 |                NESTED LOOPS OUTER|   |   669K|   114M|       | 87134 |"

"|* 16 |                 HASH JOIN OUTER|     |  1616 |   257K|       | 22494 |"

"|* 17 |                  HASH JOIN OUTER|    |  1616 |   211K|       | 22479 |"

"|* 18 |                   HASH JOIN OUTER|   |  1616 |   173K|       | 22474 |"

"|* 19 |       TABLE ACCESS FULL| APPLICATION |  1616 |   123K|       | 22469 |"

"|  20 |       TABLE ACCESS FULL| SERVICE     |   292 |  9344 |       |     3 |"

"|  21 |       TABLE ACCESS FULL| CENTER      |    16 |   384 |       |     3 |"

"|  22 |       TABLE ACCESS FULL| DOC         |  7154 |   202K|       |    12 |"

"|  23 |TABLE ACCESS BY INDEX ROWID| APPLICATIONTEST|414 |  6624 |    |    40 |"

"|* 24 |INDEX RANGE SCAN| RQTEST_PTNID_IDX    |   414 |       |       |     3 |"

"|  25 |TABLE ACCESS FULL       | TEST        |  4292 |   176K|       |    31 |"

"|* 26 |TABLE ACCESS FULL       | RSLHST      |   187M|  7686M|       |  1233K|"

"|  27 |TABLE ACCESS FULL       | PATHOLOGY   |    45 |   720 |       |     3 |"

"|  28 |TABLE ACCESS FULL       | COD         |  4289 |   142K|       |    14 |"

"|  29 |TABLE ACCESS FULL       | CLTRISOL    |   212K|  4144K|       |   505 |"

"|  30 |TABLE ACCESS FULL       | ISL         |  2303 | 80605 |       |     6 |"

"|  31 |TABLE ACCESS FULL       | CONTAINER   |   674 | 53920 |       |     5 |"

"|  32 |TABLE ACCESS FULL       | SAMPLE      |   354 |  9558 |       |     2 |"

"|  33 |TABLE ACCESS FULL       | PTN         |  1886K|   160M|       |  3887 |"

"|  34 |TABLE ACCESS FULL       | MARGINS     |  2232 | 49104 |       |     8 |"

"-------------------------------------------------------------------------------"

person notarealgreal    schedule 26.06.2020    source источник


Ответы (1)


Преобразование выполняет сортировку или создает временный набор данных для соединения, для которого требуется пространство TEMP. В зависимости от вашего преобразования и плана объяснения запроса может даже не иметь значения, если вы ограничите количество возвращаемых строк, если преобразование должно обработать все исходные данные перед применением вашего фильтра. Весьма вероятно, что единственный способ запустить это - увеличить размер табличного пространства TEMP. Вам нужно будет поработать со своим администратором баз данных, чтобы подтвердить это и выработать решение.

person pmdba    schedule 26.06.2020
comment
Привет, я только что добавил запрос, использованный на первом этапе преобразования, есть ли что-нибудь, что я могу изменить, чтобы не было этой проблемы? - person notarealgreal; 27.06.2020
comment
Я подозреваю, что с таким количеством присоединений вы мало что можете сделать. Можете ли вы также опубликовать план объяснения запроса с как можно более подробной информацией? oracle.com/ техническая сеть / база данных / хранилище данных / - person pmdba; 27.06.2020
comment
Кроме того, если вы можете, любые подробности из представления dba_data_files для табличного пространства TEMP ... - person pmdba; 27.06.2020
comment
Как я должен опубликовать план объяснения, я просто экспортировал его в HTML, но я не могу прикрепить его к сообщению из-за ограничений персонажа. Есть ли другой способ опубликовать план объяснения вместо HTML? - person notarealgreal; 28.06.2020
comment
Должен быть способ экспортировать / сгенерировать его как обычный текст. - person pmdba; 28.06.2020
comment
Я только что добавил, просматривая числа TempSpc, есть ли способ их уменьшить? - person notarealgreal; 28.06.2020
comment
Если возможно, вы хотите избавиться от полного сканирования таблицы. В общем, убедитесь, что все столбцы вашего соединения проиндексированы, и что у вас есть текущая статистика, собранная для всех объектов в схеме, а затем еще раз проверьте план объяснения. Количество объединений усложняет задачу, потому что Oracle вынуждена создавать промежуточные наборы данных, чтобы получить конечный продукт, и не применяет большинство фильтров до конца процесса. - person pmdba; 28.06.2020
comment
Я использовал эту команду: SYS.user_ind_columns для просмотра всех проиндексированных столбцов, а у меня никого нет. Как мне их создать? - person notarealgreal; 29.06.2020
comment
Настройка SQL - это своего рода искусство. Чтобы начать работу, см. Здесь: oracle-base. ru / article / misc / how-do-i-learn-to-tune-sql. Это может потребовать сотрудничества с вашим администратором баз данных и создания новых объектов базы данных. - person pmdba; 29.06.2020