I have the following query structure but when executing it I get the following error:
"ORA-01652: unable to extend temp segment by 128 in tablespace TEMP"
01652. 00000 - "unable to extend temp segment by %s in tablespace %s"
*Cause: Failed to allocate an extent of the required number of blocks for
a temporary segment in the tablespace indicated.
*Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more
files to the tablespace indicated. "
But for reasons of the company I can not assign more memory to the SP then I thought to optimize it or reduce it so that the script is not overloaded.
SELECT
DISTINCT VE.PROGRAM_ID,
VE.PROGRAM_NAME,
VE.GENERE as GENERO,
VE.SUB_GENRE AS SUBGENERO,
VE.PRODUCTION_YEAR AS AÑO_PROD,
VE.COUNTRIES AS PAIS,
D3.RUNS_REM,
D3.ALLOW_RUNS,
D3.RUN_SCHE,
VA.CT_START_DATE AS INICIOCT,
VA.CT_END_DATE AS FINCT,
VA.EN_START_DATE AS WINSTRAT,
VA.EN_END_DATE AS WINEND,
NVL(MRC.PAR_RAT_ARG,VW.PAR_RATING_ARG) AS PAR_RATING_ARG,
NVL(MRC.PAR_RAT_BRA,VW.PAR_RATING_BRA) AS PAR_RATING_BRA,
NVL(MRC.PAR_RAT_MEX,VW.PAR_RATING_MEX) AS PAR_RATING_MEX,
VE.ACTORS AS ACTORES,
VF.U AS NO_EPISODES
FROM FOX_PROGRAM_REPOSITORY VE
INNER JOIN (SELECT PROGRAM_ID, COUNT(EPISODE_ID) AS U FROM FOX_PROGRAM_REPOSITORY
GROUP BY PROGRAM_ID) VF
ON VE.PROGRAM_ID = VF.PROGRAM_ID
INNER JOIN FOX_EU_COMMERCIAL_SPOTS_VW VMU
ON VMU.PROGRAM_ID = VE.PROGRAM_ID
LEFT JOIN FOX_MEDIA_RATCENS_VW MRC
ON MRC.EPISODE_ID = VE.EPISODE_ID
INNER JOIN FOX_MEDIA_VERSIONS VW
ON MRC.EPISODE_ID = VW.EPISODE_ID
INNER JOIN FOX_CNT_GRP_PROG_EPIS_CHAN VA
ON VA.PROGRAM_ID = VE.PROGRAM_ID
INNER JOIN
(SELECT D1.ALLOW_RUNS - D2.RUN_SCHE AS RUNS_REM,
D1.ALLOW_RUNS,
D2.CN_CONTRACT_ID,
D2.RUN_SCHE
FROM
(SELECT CN.CN_CONTRACT_ID, SUM(TC.PERMITTED_RUNS) AS ALLOW_RUNS
FROM CN_CONTRACT CN
JOIN CN_TERMS T ON T.CN_CONTRACT_ID = CN.CN_CONTRACT_ID
JOIN CN_TERMS_PROGRAM CP ON CP.CN_TERMS_ID = T.CN_TERMS_ID
LEFT JOIN CN_TERMS_EPISODE CE ON CE.CN_TERMS_PROGRAM_ID = CP.CN_TERMS_PROGRAM_ID
/*TERMS GROUP*/
JOIN CN_TERMS_GROUP TG ON T.CN_TERMS_ID = TG.CN_TERMS_ID
JOIN CN_TERMS_COUNTED TC ON TG.CN_TERMS_GROUP_ID = TC.CN_TERMS_GROUP_ID
AND CP.CN_TERMS_PROGRAM_ID = TC.CN_TERMS_PROGRAM_ID
AND CE.CN_TERMS_EPISODE_ID = TC.CN_TERMS_EPISODE_ID
GROUP BY CN.CN_CONTRACT_ID) D1
INNER JOIN
(SELECT CN.CN_CONTRACT_ID, SUM(RUN_PLAN) AS RUN_PLAN, SUM(RUN_SCHE) AS RUN_SCHE
FROM CN_CONTRACT CN
JOIN CN_TERMS T ON CN.CN_CONTRACT_ID = T.CN_CONTRACT_ID
JOIN CN_TERMS_PROGRAM CP ON CP.CN_TERMS_ID = T.CN_TERMS_ID
JOIN PROGRAM P ON P.PROGRAM_ID = CP.PROGRAM_ID
LEFT JOIN (
SELECT SOURCE, PROGRAM_ID, MAX( RUN_PLAN) AS RUN_PLAN
FROM (
SELECT SOURCE, PROGRAM_ID, PLANNER_ID, COUNT(*) AS RUN_PLAN FROM PLANNED_AND_SCHED_RUNS_VW
WHERE SOURCE = 'PLANNER'
GROUP BY SOURCE, PROGRAM_ID, PLANNER_ID
) TEMP
GROUP BY SOURCE, PROGRAM_ID
) PLA ON P.PROGRAM_ID = PLA.PROGRAM_ID
LEFT JOIN (
SELECT SOURCE, PROGRAM_ID, COUNT(*) as RUN_SCHE FROM PLANNED_AND_SCHED_RUNS_VW
WHERE SOURCE = 'SCHEDULER'
GROUP BY SOURCE, PROGRAM_ID
) SCHE ON P.PROGRAM_ID = SCHE.PROGRAM_ID
GROUP BY CN.CN_CONTRACT_ID) D2
ON D2.CN_CONTRACT_ID = D1.CN_CONTRACT_ID)D3
ON D3.CN_CONTRACT_ID = VA.CN_CONTRACT_ID
WHERE
ORDER BY
VE.PROGRAM_ID,
VE.PROGRAM_NAME,
VE.GENERE,
VE.SUB_GENRE,
VE.PRODUCTION_YEAR,
VE.COUNTRIES,
D3.RUNS_REM,
D3.ALLOW_RUNS,
D3.RUN_SCHE,
VA.CT_START_DATE,
VA.CT_END_DATE,
VA.EN_START_DATE,
VA.EN_END_DATE,
NVL(MRC.PAR_RAT_ARG,VW.PAR_RATING_ARG),
NVL(MRC.PAR_RAT_BRA,VW.PAR_RATING_BRA),
NVL(MRC.PAR_RAT_MEX,VW.PAR_RATING_MEX),
VE.ACTORS,
VF.U;