| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Mailing Lists -> Oracle-L -> Performance
Hi list,
SCENARIO LAB DB = Oracle 8.1.7.4.0 on Suse Linux 7.2 PRODUCTION DB = Oracle 8.1.7.4.0 on HP-UX B.11.00
I have this strange case, I have this query that generate a text file and in the PRODUCTION environment ran for about 30 minutes. When running the same query in LAB ran in about 2 minutes. The 2 instances have the same parameters setted and the same amount of data, the Lab DB is updated every night with the production data throught IMP/EXP procedure.
Trying to solve the problem, today I ran statistics in LAB and the query lasted more than in PRODUCTION and before was about 2 minutes.
TIA
-------------*----------------------------------------------------------
Here is the code of the CODE in the form and the function.
PROCEDURE genera_archivo IS
vcOutFile varchar2(30) := 'c:\pruebas\archivo.txt';
hOutFile text_io.file_type;
cursor cuentas is
select b.MATHOPERATOR, b.MAPACCOUNTLOCAL,
a.PRINTORDER, b.sequence
from tequivaccount a, tequivaccountdetail b
where
a.REPORTCODE = b.REPORTCODE and
a.CODE = b.CODE and
a.reportcode = 'BDI01'
order by a.PRINTORDER, b.sequence ;
vSaldo number;
vCuenta varchar2(14);
BEGIN
set_application_property(CURSOR_STYLE,'BUSY');
hOutFile := text_io.fopen(:nombre_plano,'w');
text_io.put_line(hOutFile,to_char(:fecha_fin,'ddmmyyyy')||'cifrado');
for i in cuentas loop
IF C.MATHOPERATOR = '+' THEN
VSALDO :=
bdi_saldo_conta_fecha(I.MAPACCOUNTLOCAL,:fecha_Fin,:suc_ini,:suc_fin)
ELSE
VSALDO :=
END IF;
if nvl(vSaldo,0) <> 0 then
text_io.put_line(hOutFile,rpad(i.MAPACCOUNTLOCAL,14,' ')||' 000
'||to_char(round(vsaldo,2),'999999999999999.99'));
end if;
end loop;
set_application_property(CURSOR_STYLE,'DEFAULT');
END;
-------------* This the function *------------------
PROMPT CREATE OR REPLACE FUNCTION hd_bdi.bdi_saldo_conta_fecha
CREATE OR REPLACE FUNCTION hd_bdi.bdi_saldo_conta_fecha (pCuenta in char,pFecha in date,
pSucIni in number,
pSucFin in number)
---
vSaldo number; vDebito number; vCredito number; vSaldoAnt number; vFechaIni date ; vMoneda number; vLinea varchar2(150); vdate1 date; vdate2 date; vdate3 date; vdate4 date;
--delete log_batch;
--commit;
for i in pSucIni .. pSucFin loop
vDebito := 0;
vCredito := 0;
vSaldoAnt := 0;
begin
SELECT MAX(A.ACM_FECACUM),
Nvl(A.ACM_ACUMDBANT,0) -
nvl(A.ACM_ACUMCRANT,0) +
nvl(A.ACM_ACUMDB,0) -
nvl(A.ACM_ACUMCR,0)
into vFechaIni, vSaldoAnt
from tcon_acum A
where
A.acm_codigo = pCuenta AND
A.acm_sucursal = i AND
TRUNC(A.ACM_FECACUM) IN (select
nvl(max(TRUNC(ACM_FECACUM)), '2001/01/01')
FROM TCON_ACUM T
WHERE
T.Acm_codigo = A.acm_codigo AND
T.ACM_Sucursal = A.ACM_SUcursal AND
T.ACM_Oficina = A.ACM_Oficina AND
T.ACM_Moneda = A.ACM_MOneda)
GROUP BY Nvl(A.ACM_ACUMDBANT,0), nvl(A.ACM_ACUMCRANT,0),
nvl(A.ACM_ACUMDB,0), nvl(A.ACM_ACUMCR,0);
exception
when no_data_found then
vSaldoAnt := 0;
when others then
dbms_output.put_line((pCuenta));
end;
vFechaIni := vFechaIni + 1;
begin
SELECT SUM (DECODE(T.TSA_TIPO, 'D', NVL(T.TSA_VALOR,0))) ,
SUM (DECODE(T.TSA_TIPO, 'C', NVL(T.TSA_VALOR,0)))
into vDebito, vCredito
FROM
TCON_TRANSA T, TCON_DESTRAN D
WHERE
T.TSA_SUCURSAL = I AND
T.TSA_CUENTA = pCuenta AND
D.DST_NUMTRAN = T.TSA_NUMTRAN AND
D.DST_SUCURSAL = T.TSA_SUCURSAL AND
D.DST_FECHA BETWEEN vFechaIni and pFecha AND
D.DST_CUADRA = 'S' ;
exception when no_data_found then
vDebito := 0;
vCredito := 0;
when others then
null;
end;
vSaldo :=nvl (vSaldo,0) + (nvl(vSaldoAnt,0) + nvl(vDebito,0) -
nvl(vCredito,0)) ;
end loop;
return vSaldo ;
end;
/
Ramon E. Estevez
[EMAIL PROTECTED]
809-535-8994
--
Please see the official ORACLE-L FAQ: http://www.orafaq.net
--
Author: Ramon E. Estevez
INET: [EMAIL PROTECTED]
Fat City Network Services -- 858-538-5051 http://www.fatcity.com San Diego, California -- Mailing list and web hosting servicesto: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing). Received on Fri Jun 27 2003 - 15:43:15 CDT
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
![]() |
![]() |