Avatar billede amoelle Nybegynder
09. maj 2004 - 16:26 Der er 3 kommentarer og
2 løsninger

overflow fra dbms_output.put_line når jeg spooler til fil

Jeg får buffer overløb når jeg spooler i en fil, - hvordan er det nu at jeg slipper af med det ?
jeg troede, at arraysize 2 løste det ? - men nej !!

PL/SQL scriptet kalder en funktion, der indeholder en linie:
dbms_output.put_line('h_cur.PK=' ||h_cur.PK||',ROWNUM =' ||h_cur.ROWNUM||',h_cur.HBDLINK=' ||h_cur.HBDLINK); som jeg af test årsager er nødt til at have i spoolfilen.
Hvis ikke scriptet fejlede, ville jeg få linien ca 35.000 gange.

nogen hurtige tips til hvordan jeg skaffer mig mit testoutput ?
på forhånd tak
/Anne

********************************************

set serverout on
set termout off
set arraysize 2
spool traverse.txt
start step1/traverseHAENDELSE_1;
spool off


giver følgende fejl

FEJL i linie 1:
ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
ORA-06512: ved "SYS.DBMS_OUTPUT", linje 35
ORA-06512: ved "SYS.DBMS_OUTPUT", linje 198
ORA-06512: ved "SYS.DBMS_OUTPUT", linje 139
ORA-06512: ved "AKM_351.COPY_HAEND_ELMKOMP", linje 26
ORA-06512: ved linje 26
Avatar billede Slettet bruger
09. maj 2004 - 16:39 #1
Bufferen er ikke så stor

Men du kan sætte

set serverout on size 1000000
Avatar billede Slettet bruger
09. maj 2004 - 16:42 #2
Hvis denne buffersize heller ikke er stor nok kan du:

a) bruge utl_file til at få dannet en fil på SERVEREN
b) skrive output til en (temporær) tabel, som du selecter fra bagefter
Avatar billede amoelle Nybegynder
09. maj 2004 - 16:48 #3
Tak for hjælpen,
...første tip hjalp i min testbase, men når jeg får en kopi af driften (3,2 mill records), må jeg nok hellere benytte tip nr 2a.
Avatar billede Slettet bruger
09. maj 2004 - 17:03 #4
Hvis du skal have 3,2 mill records ud må du nok regne med problemer! Held og lykke med det. Skriv igen, hvis det bliver for stort.

Der findes et apache-projekt som hedder LOG4PLSQL, http://otn.oracle.com/pub/articles/moulard_log4plsql.html.
Det kunne måske blive nyttigt for dig.
Avatar billede amoelle Nybegynder
09. maj 2004 - 17:10 #5
Jeg regner ikke med at skrive alle ud, men nu hvor jeg tester, er det vigtigt at checke, at alle kandidater i min cursor (der indeholder en cursor) bliver behandlet.
Senere bliver det nok noget i stil med, at skrive en linie med timestamp og PK-værdier ud for hver 500.000 record, - bare for at se, at det bevæger sig ;-)

...men tak også for det sidste tip, jeg er vant til at brug Log4J til min javakode, så det skal helt sikkert også undersøges.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester