Optimize Query so as not to overload more temporary tables [closed]

1

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;
    
asked by Cris Valdez 08.11.2016 в 15:26
source

0 answers