[quote=”Ishii”:36s8wy3r]Olá,
Acho que o problema está na query que esta sendo montada pelo Crystal. Dependendo da query montada, pode ou não consumir a área temporária. O problema ocorre na execução da query pelo Crystal mas não pelo BD direto. Acho melhor analisar o que o Crystal está executando (e como) e qual a query que está com problema. A área temporária deve analisada depois de se ter certeza que a query está ok. Poste aqui ou uma parte da procedure ou a query com problema, pela sua primeira mensagem eu priorizaria a procedure mesmo.
[]s Ishii[/quote]
Achei o seguinte… deem uma olhada:
Não uso OEM, então não sei exatamente o que faz a tal “consulta” que vc diz que fez nele , mas penso que deve estar acontecendo o seguinte : as tablespaces temporárias são criadas e usadas duma maneira especial, pra maior performance. É assim : o banco mantém uma lista internamente dos “pedaços” em uso dentro da tablespace temporária, e quando uma sessão pede por espaço, esse espaço é removido dessa lista, e ao fim do uso ele volta a constar da lista. PORÉM, esse espaço que não está mais em uso *** NÂO *** é apagado, removido do disco, simplesmente ele volta a estar marcado como LIVRE na lista interna, quando outra sessão o for usar, simplesmente vai escrever por cima do que havia antes. Essa lista interna é a V$SORT_USAGE.
Então é isso, se vc criar uma tablespace temporária de (diagmos) 100 Mb, em disco sempre vão estar os 100 Mb, o fato dele não diminuir fisicamente quando não estar em uso significa ENORME economia de I/O pro Oracle. Imagino que é isso que aconteceu, vc está (erradamente) usando uma consulta no OEM que mostra espaço físico em disco, isso NÂO é válido pra tablespaces temp, a utilização real fica na V$SORT_USAGE.
Minha SP:
SELECT
‘FATURAMENTO’ AS GRH1
, A1_VEND
, A1_VENDNOM
, A1_COD
, C5_TIPO
, C5_CLAPED
, A1_NOME
, A1_NREDUZ
, A1_MUN
, A1_EST
, A1_CODMUN
, C5_BLQ
, CASE WHEN F4_TIPSAID IN (‘E’,’R’,’V’,’Y’,’S’) THEN SUM(D2_TOTAL+D2_VALIPI) ELSE 0 END AS VALORTOTAL
, CASE WHEN F4_TIPSAID IN (‘T’) THEN SUM(D2_TOTAL+D2_VALIPI) ELSE 0 END AS VALORASSISTENCIA
, CASE WHEN F4_TIPSAID IN (‘B’) THEN SUM(D2_TOTAL+D2_VALIPI) ELSE 0 END AS VALORBONIFICADO
, D2_COD
, CASE WHEN F4_TIPSAID IN (‘E’,’R’,’V’,’Y’,’S’) THEN SUM(B1_CUTMAN * D2_QUANT) ELSE 0 END AS CUSTOVALORTOTAL
, CASE WHEN F4_TIPSAID IN (‘T’) THEN SUM(B1_CUTMAN * D2_QUANT) ELSE 0 END AS CUSTOVALORASSISTENCIA
, CASE WHEN F4_TIPSAID IN (‘B’) THEN SUM(B1_CUTMAN * D2_QUANT) ELSE 0 END AS CUSTOVALORBONIFICADO
— , SX5b.X5_DESCRI
— , E1_TOTAL
— , E1_SALDO
, F2_DOC
, F2_SERIE
, 0 AS VALORDEV
, F4_TIPSAID
, D2_TES
, 0 AS CTRECEBER_SALDO
, ‘ ‘ AS CTRECEBER_VENC
, 0 AS CLI_LMT_CREDITO
, ‘ ‘ AS CR_SITUACAOTITULO
, SA1.R_E_C_N_O_
FROM SYSTEM.SC6010 SC6
INNER JOIN SYSTEM.SC5010 SC5
ON C6_FILIAL = C5_FILIAL
AND C6_NUM = C5_NUM
AND SC6.D_E_L_E_T_ = SC5.D_E_L_E_T_
INNER JOIN (SELECT A1_VEND,R_E_C_N_O_,A1_LOJA, A1_VENDNOM, A1_COD, A1_NOME, A1_NREDUZ, A1_MUN, A1_EST, A1_CODMUN,D_E_L_E_T_ FROM SYSTEM.SA1010 SA1) SA1
ON C5_CLIENTE = A1_COD
AND C5_LOJACLI = A1_LOJA
AND SC5.D_E_L_E_T_ = SA1.D_E_L_E_T_
LEFT OUTER JOIN SYSTEM.SD2010 SD2
ON SC6.C6_FILIAL = SD2.D2_FILIAL
AND SC6.C6_NUM = SD2.D2_PEDIDO
AND SC6.C6_ITEM = SD2.D2_ITEMPV
AND SC6.C6_PRODUTO = SD2.D2_COD
AND SD2.D_E_L_E_T_ '*'
INNER JOIN (SELECT B1_CUTMAN,B1_FILIAL,B1_COD FROM SYSTEM.SB1010) SB1
ON SD2.D2_FILIAL = SB1.B1_FILIAL
AND SD2.D2_COD = SB1.B1_COD
INNER JOIN SYSTEM.SF4010 SF4
ON SD2.D2_FILIAL = SF4.F4_FILIAL
AND SD2.D2_TES = SF4.F4_CODIGO
LEFT OUTER JOIN (SELECT F2_FILIAL,F2_DOC,F2_TIPO,F2_CLIENTE,F2_VALBRUT,F2_SERIE,D_E_L_E_T_,F2_EMISSAO FROM SF2010 SF2 WHERE D_E_L_E_T_'*') SF2
ON SD2.D2_FILIAL = SF2.F2_FILIAL
AND SD2.D2_DOC = SF2.F2_DOC
AND SD2.D2_SERIE = SF2.F2_SERIE
AND SF2.D_E_L_E_T_ '*'
/* LEFT OUTER JOIN (SELECT E1_SITUACA,E1_NUM,E1_SERIE,D_E_L_E_T_,SUM(E1_VALOR + E1_ACRESC – E1_DECRESC) OVER (PARTITION BY E1_NUM,E1_SERIE,E1_SITUACA) AS E1_TOTAL, SUM(E1_SALDO) OVER (PARTITION BY E1_NUM,E1_SERIE,E1_SITUACA) AS E1_SALDO
FROM SYSTEM.SE1010 WHERE D_E_L_E_T_’‘) SE1
ON SF2.F2_DOC = E1_NUM
AND SF2.F2_SERIE = E1_SERIE
AND SE1.D_E_L_E_T_ ‘‘
LEFT OUTER JOIN SX5010 SX5b ON
SX5b.X5_CHAVE = E1_SITUACA
AND SX5b.X5_TABELA = '07'
AND SX5b.D_E_L_E_T_ '*' */
WHERE F2_EMISSAO BETWEEN to_char(pData1,’yyyymmdd’) AND to_char(pData2,’yyyymmdd’)
AND F2_CLIENTE BETWEEN pRca1 AND pRca2
AND F2_TIPO = ‘N’
AND F4_TIPSAID IN (‘E’,’R’,’V’,’Y’,’S’,’T’,’B’)
GROUP BY
A1_VEND
, A1_VENDNOM
, A1_COD
, C5_TIPO
, C5_CLAPED
, A1_NOME
, A1_NREDUZ
, A1_MUN
, A1_EST
, A1_CODMUN
, C5_BLQ
, D2_COD
, D2_TOTAL+D2_VALIPI
, B1_CUTMAN * D2_QUANT
— , SX5b.X5_DESCRI
— , E1_TOTAL
— , E1_SALDO
, F2_DOC
, F2_SERIE
, F4_TIPSAID
, D2_TES
, SA1.R_E_C_N_O_
UNION ALL
SELECT
‘VENDAS’ AS GRH1
, A1_VEND
, A1_VENDNOM
, A1_COD
, ‘ ‘
, ‘ ‘
, A1_NOME
, A1_NREDUZ
, A1_MUN
, A1_EST
, A1_CODMUN
, ‘ ‘
, 0 AS VALORTOTAL
, 0 AS VALORASSISTENCIA
, 0 AS VALORBONIFICADO
, ‘ ‘
, 0 AS CUSTOVALORTOTAL
, 0 AS CUSTOVALORASSISTENCIA
, 0 AS CUSTOVALORBONIFICADO
, ‘ ‘
, ‘ ‘
— , ‘ ‘
— , 0
— , 0
, SUM(D1_TOTAL+D1_VALIPI) AS VALORDEV
, ‘ ‘
, ‘ ‘
, 0 AS CTRECEBER_SALDO
, ‘ ‘ AS CTRECEBER_VENC
, 0 AS CLI_LMT_CREDITO
, ‘ ‘ AS CR_SITUACAOTITULO
, SA1.R_E_C_N_O_
FROM SYSTEM.SD1010 SD1
INNER JOIN SYSTEM.SF1010 SF1 ON SD1.D1_FILIAL = SF1.F1_FILIAL AND SD1.D1_DOC = SF1.F1_DOC AND SD1.D1_SERIE = SF1.F1_SERIE AND SD1.D1_FORNECE = SF1.F1_FORNECE AND SD1.D1_LOJA = SF1.F1_LOJA
INNER JOIN SYSTEM.SF4010 SF4 ON SD1.D1_FILIAL = SF4.F4_FILIAL AND SD1.D1_TES = SF4.F4_CODIGO
INNER JOIN SYSTEM.SB1010 SB1 ON SD1.D1_FILIAL = SB1.B1_FILIAL AND SD1.D1_COD = SB1.B1_COD
INNER JOIN SYSTEM.SBM010 SBM ON SB1.B1_FILIAL = SBM.BM_FILIAL AND SB1.B1_GRUPO = SBM.BM_GRUPO
INNER JOIN SYSTEM.SA1010 SA1 ON SF1.F1_FORNECE = SA1.A1_COD AND SF1.F1_LOJA = SA1.A1_LOJA
LEFT JOIN SYSTEM.SF2010 SF2 ON SD1.D1_FILIAL = SF2.F2_FILIAL AND SD1.D1_NFORI = SF2.F2_DOC AND SD1.D1_SERIORI = SF2.F2_SERIE AND SD1.D1_FORNECE = SF2.F2_CLIENTE AND SD1.D1_LOJA = SF2.F2_LOJA AND SF2.D_E_L_E_T_ ‘‘
LEFT JOIN SYSTEM.SA3010 SA3 ON SF2.F2_VEND1 = SA3.A3_COD AND SA3.D_E_L_E_T_ ‘‘
LEFT JOIN SYSTEM.ACY010 ACY ON A1_GRPVEN = ACY_GRPVEN AND ACY.D_E_L_E_T_ ‘‘
WHERE SD1.D1_DTDIGIT BETWEEN to_char(pData1,’yyyymmdd’) AND to_char(pData2,’yyyymmdd’)
AND F1_FORNECE BETWEEN pRca1 AND pRca2
AND F1_TIPO = ‘D’
AND F4_TIPENT = ‘V’
AND SD1.D_E_L_E_T_ ‘‘
AND SF1.D_E_L_E_T_ ‘‘
AND SF4.D_E_L_E_T_ ‘‘
AND SB1.D_E_L_E_T_ ‘‘
AND SBM.D_E_L_E_T_ ‘‘
AND SA1.D_E_L_E_T_ ‘*’
GROUP BY
A1_VEND
, A1_VENDNOM
, A1_COD
, A1_NOME
, A1_NREDUZ
, A1_MUN
, A1_EST
, A1_CODMUN
, D1_TOTAL+D1_VALIPI
, SA1.R_E_C_N_O_
Mais tem um fato muito peculiar nisso tudo… o meu report tem hora q fica rapido processa o BD inteiro em questão de segundo e tem hora q fica lento e começa a estorar a tablespace não sei mais oq pensar….
Att,
Manoel Jr.