Discussione:
Errore ORA-03113
(troppo vecchio per rispondere)
Zaccaria
2006-03-21 13:57:50 UTC
Permalink
Ciao a tutti
ho un problema di questo tipo: per aggiornare i dati in una tabella in
qusto momento stò seguendo questa
strada, creo la tabella, creo una view con la struttura di selezione
desiderata e poi faccio una procedura del tipo


INSERT INTO NOME_TABELLA
SELECT * FROM NOME_VIEW;
COMMIT;

Mi chiedevo se non esiste il modo di saltare il passaggio della view
creando una procedura che utilizzi i cursori espliciti del tipo



rec_a nome_tabella%ROWTYPE; -- record contenente le righe

CURSOR cur_a IS -- cursore contenente tutta la selezione
SELECT [....]

BEGIN
OPEN cur_a;


LOOP
FETCH cur_a INTO rec_a;
EXIT WHEN cur_a%NOTFOUND;

INSERT INTO nome_tabella (campo1,campo2,....,campoN)
VALUES (rec_a.campo1, rec_a.campo2,....., rec_a.campoN);

END LOOP;

CLOSE cur_a;



Il risultato però è un errore "ORA-03113 end-of-file sul canale di
comunicazione" con successivo log out dal database!!!!
Non ci capisco una mazza!
Lavoro su Oracle 7.3.4 su Solaris

Grazie 1000


Zacc
Fabrizio Magni
2006-03-22 12:07:42 UTC
Permalink
Post by Zaccaria
Ciao a tutti
ho un problema di questo tipo: per aggiornare i dati in una tabella in
qusto momento stò seguendo questa
strada, creo la tabella, creo una view con la struttura di selezione
desiderata e poi faccio una procedura del tipo
INSERT INTO NOME_TABELLA
SELECT * FROM NOME_VIEW;
COMMIT;
Mi chiedevo se non esiste il modo di saltare il passaggio della view
creando una procedura che utilizzi i cursori espliciti del tipo
rec_a nome_tabella%ROWTYPE; -- record contenente le righe
CURSOR cur_a IS -- cursore contenente tutta la selezione
SELECT [....]
BEGIN
OPEN cur_a;
LOOP
FETCH cur_a INTO rec_a;
EXIT WHEN cur_a%NOTFOUND;
INSERT INTO nome_tabella (campo1,campo2,....,campoN)
VALUES (rec_a.campo1, rec_a.campo2,....., rec_a.campoN);
END LOOP;
CLOSE cur_a;
Il risultato però è un errore "ORA-03113 end-of-file sul canale di
comunicazione" con successivo log out dal database!!!!
Non ci capisco una mazza!
Lavoro su Oracle 7.3.4 su Solaris
Grazie 1000
Zacc
Ciao Zacc,
quali vantaggi vuoi ottenere dall'uso esplicito dei cursori?

Non conosco una versione vecchia come la 7 ma oracle crea delle trace
nella user dump per debuggare i problemi di errori come l'ORA_03113.

Solitamente si trova in $ORACLE_BASE/admin/<SID>/udump.

Guarda il parametro di configurazione user_dump_dest (se la 7 gia' lo
usava) per averne certezza.
--
Fabrizio Magni

***@mycontinent.com

replace mycontinent with europe
Zaccaria
2006-03-23 08:11:58 UTC
Permalink
Post by Fabrizio Magni
Ciao Zacc,
quali vantaggi vuoi ottenere dall'uso esplicito dei cursori?
Ciao Fabrizio
L'idea dei cursori espliciti è proprio solo una idea, diciamo che
cercavo di ottimizzare le procedure tabelle e query.
I quest'ottica mi sembrava che creare una view con la selezione,
creare una tabella contenitore e creare una procedura che riversasse i
dati dalla view alla tabella non fosse una soluzione molto
professionale. Forse è solo una mia impressione e che invece è una
pratica molto diffusa (se non s'è capito non è da molto che lavoro su
Oracle :-)
Post by Fabrizio Magni
Non conosco una versione vecchia come la 7 ma oracle crea delle trace
nella user dump per debuggare i problemi di errori come l'ORA_03113.
Solitamente si trova in $ORACLE_BASE/admin/<SID>/udump.
Guarda il parametro di configurazione user_dump_dest (se la 7 gia' lo
usava) per averne certezza.
Purtroppo con ho nessun utente per sfogliare il file system del DBServer
Fabrizio Magni
2006-03-24 07:41:34 UTC
Permalink
Post by Zaccaria
I quest'ottica mi sembrava che creare una view con la selezione,
creare una tabella contenitore e creare una procedura che riversasse i
dati dalla view alla tabella non fosse una soluzione molto
professionale. Forse è solo una mia impressione e che invece è una
pratica molto diffusa (se non s'è capito non è da molto che lavoro su
Oracle :-)
Ciao Zacc,
personalmente non considero poco professionale la pratica.
Anzi, storcerei il naso se uno sviluppatore venisse da me con un package
pl/sql per una operazione facilmente (ed efficientemente) risolvibile
da un semplice comando sql.

Non dico che non si possa o debba fare... ma perche' complicarsi la vita?

Il vero professionista, per me, e' quello che mantiene la semplicita'!
Post by Zaccaria
Purtroppo con ho nessun utente per sfogliare il file system del DBServer
Allora segnala la cosa al tuo DBA e chiedi spiegazioni. Lui e' li' per
darti supporto! Sfruttalo!!!! :)

Ciao
--
Fabrizio Magni

***@mycontinent.com

replace mycontinent with europe
Zaccaria
2006-03-24 10:51:23 UTC
Permalink
Post by Fabrizio Magni
Ciao Zacc,
personalmente non considero poco professionale la pratica.
Anzi, storcerei il naso se uno sviluppatore venisse da me con un package
pl/sql per una operazione facilmente (ed efficientemente) risolvibile
da un semplice comando sql.
Non dico che non si possa o debba fare... ma perche' complicarsi la vita?
Il vero professionista, per me, e' quello che mantiene la semplicita'!
Post by Zaccaria
Purtroppo con ho nessun utente per sfogliare il file system del DBServer
Allora segnala la cosa al tuo DBA e chiedi spiegazioni. Lui e' li' per
darti supporto! Sfruttalo!!!! :)
Ciao
Grazie per il consiglio e per il confronto :-)

ciao

Zacc

Continua a leggere su narkive:
Loading...