Sommario
Descrizione nel database Oracle
ORA-06512 in Oracle è uno degli errori comuni visti nei programmi PLSQL nel database Oracle
Ecco cosa dice la documentazione Oracle su questo errore
Riferimento:documentazione Oracle
Puoi trovarlo sempre digitando di seguito in Unix
oerr ORA 06512
Spiegazione dell'errore ORA-06512:
Errore ORA-06512 indica il messaggio di backtrace mentre lo stack viene svolto da eccezioni non gestite nel codice PLSQL. Questo è un errore generale per tutte le eccezioni PLSQL ed è comunemente visto.
ORA 6512 non indica l'errore effettivo, ma il numero di riga dell'errore non gestito nel codice PLSQL. ORA-6512 viene in genere visualizzato in uno stack di messaggi in cui il messaggio precedente indica il motivo dell'errore, come nell'esempio seguente:
ORA-06502: PL/SQL: numeric or value error ORA-06512: at line 1112
In quanto sopra, l'errore evidenziato in giallo è l'errore principale
Motivi dell'errore ORA-06512:
Le opzioni per risolvere questo errore Oracle sono:
1) Risolvi la condizione che causa l'errore non gestito.
2) Scrivi un gestore di eccezioni per questo errore non gestito.
3) Contatta il tuo DBA Oracle per assistenza.
Esempi di ORA-06512:
Vediamo qualche esempio su come lavorarci
CREATE OR REPLACE PROCEDURE Testora_proc AS Site_name varchar2(5); begin site_name := 'techgoeasy.com'; end; / Procedure created. sql> Exec Testora_proc ERROR at line 1: ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 5
Nell'esempio sopra, la procedura è stata compilata con successo ma ha dato errori durante l'esecuzione
Quindi l'errore effettivo è l'errore
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Possiamo facilmente correggerlo aumentando la dimensione della variabile
CREATE OR REPLACE PROCEDURE Testora_proc AS Site_name varchar2(20); begin site_name := 'techgoeasy.com'; end; / Procedure created. SQL> Exec Testoraproc PL/SQL procedure successfully completed.
Possiamo risolverlo anche usando il gestore delle eccezioni
CREATE OR REPLACE PROCEDURE Testora_proc AS Site_name varchar2(5); begin site_name := 'techgoeasy.com'; EXCEPTION WHEN OTHERS THEN site_name := 'tech'; end; / Procedure created.SQL>Exec Testoraproc; PL/SQL procedure successfully completed.
Un altro esempio potrebbe essere
CREATE OR REPLACE PROCEDURE Testora_proc AS node_name varchar2(5); begin select node into node_name from db_node; end; / Procedure created SQL> Exec Testora_proc; ORA-01422: exact fetch returns more than requested number of rows ORA-06512: at “NODE_NAME”, line 4 ORA-06512: at line 1
Qui ORA-01422 è il vero errore. abbiamo più di 1 riga nella tabella db_node e otteniamo più valori per node. Quindi una soluzione potrebbe limitare una riga
CREATE OR REPLACE PROCEDURE Testora_proc AS node_name varchar2(5); begin select node into node_name from db_node where rownum <2; end; / Procedure created SQL> Exec Testora_proc; PL/SQL procedure successfully completed.
Un altro esempio potrebbe essere
CREATE OR REPLACE PROCEDURE Testora_proc AS node_name varchar2(5); begin select node into node_name from db_node; end; / Procedure created SQL> Exec Testora_proc; ORA-01403: no data found ORA-06512: at “NODE_NAME”, line 4 ORA-06512: at line 1
Qui ORA-01403 è il vero errore. non abbiamo righe nella tabella oracle db_node e non stiamo ricevendo alcun errore di dati trovati. Quindi una soluzione potrebbe essere la gestione delle eccezioni
CREATE OR REPLACE PROCEDURE Testora_proc AS node_name varchar2(5); begin select node into node_name from db_node where rownum <2; EXCEPTION WHEN NO_DATA_FOUND THEN node_name := 'tech'; end; / Procedure created SQL> Exec Testora_proc; PL/SQL procedure successfully completed.
Alcuni altri esempi possono essere su SYS.UTL_FILE
SQL> declare F_LOG utl_file.file_type; begin F_LOG := utl_file.fopen('TESTDIR','k', 'w'); end; / 2 3 4 5 6 declare * ERROR at line 1: ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation ORA-06512: at line 4
Qui l'errore principale è ORA-29283. Verifica la soluzione facendo clic sul link
Spero che questo post su ORA-6512 ti sia piaciuto Messaggio di errore
Articoli correlatiORA-00911
ORA-03113
ORA-00257
ORA-27154
ORA-29913
ORA-20001 in Raccogli le statistiche dello schema su 11g(FND_HISTOGRAM_COLS )