Indholdsfortegnelse
Beskrivelse i Oracle-database
ORA-06512 i oracle er en af de almindelige fejl, der ses i PLSQL-programmer i Oracle-databasen
Her er, hvad Oracle-dokumentationen siger om denne fejl
Reference:Oracle-dokumentation
Du kan altid finde dette ved at skrive nedenfor i Unix
oerr ORA 06512
Forklaring af ORA-06512-fejlen:
Fejl ORA-06512 betyder, at tilbagesporingsmeddelelsen, når stakken afvikles af ubehandlede undtagelser i din PLSQL-kode. Dette er en opsamlende fejl for alle PLSQL-undtagelser og ses ofte.
ORA 6512 angiver ikke den faktiske fejl, men linjenummeret på den ubehandlede fejl i PLSQL-koden. ORA-6512 vil typisk vises i en meddelelsesstak, hvori den foregående meddelelse navngiver årsagen til fejlen, f.eks. i følgende eksempel:
ORA-06502: PL/SQL: numeric or value error ORA-06512: at line 1112
I ovenstående er den gule fremhævede fejl hovedfejlen
Årsager til ORA-06512-fejl:
Mulighederne for at løse denne Oracle-fejl er:
1) Ret den tilstand, der forårsager den uhåndterede fejl.
2) Skriv en undtagelseshandler for denne uhåndterede fejl.
3) Kontakt din Oracle DBA for at få hjælp.
Eksempler på ORA-06512:
Lad os se nogle eksempler på, hvordan man arbejder på det
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
I eksemplet ovenfor bliver proceduren kompileret med succes, men den gav fejl under udførelse
Så den faktiske fejl er fejlen
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Vi kan nemt rette det ved at øge størrelsen af variablen
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.
Vi kan også løse dette ved at bruge undtagelseshåndtering
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.
Et andet eksempel ville være
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
Her er ORA-01422 den rigtige fejl. vi har mere end 1 rækker i db_node-tabellen og får flere værdier for node. Så én rettelse kunne være at begrænse én række
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.
Et andet eksempel ville være
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
Her er ORA-01403 den rigtige fejl. vi har ingen rækker i db_node oracle table, og vi får ingen data fundet fejl. Så en løsning kunne være at sætte undtagelseshåndtering
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.
Nogle flere eksempler kan være på 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
Her er hovedfejlen ORA-29283. Tjek løsningen ved at klikke på linket
Håber du kan lide dette indlæg på ORA-6512 Fejlmeddelelse
Relaterede artiklerORA-00911
ORA-03113
ORA-00257
ORA-27154
ORA-29913
ORA-20001 i Saml skemastatistik på 11g(FND_HISTOGRAM_COLS )