Els mavens de bases de dades reconeixeran el nom Oracle com a central del món del sistema de gestió de bases de dades relacional (DBMS). Oracle ha produït solucions de SGBD de gran potència durant dècades i continua sent un líder en la matèria. Molts usuaris finals de productes de base de dades poden confondre’s o desconcertar-se quan utilitzen una solució predisignada i generar un missatge d’error. Un missatge d’error comú produït per Oracle és l’error ORA-06512.
Consulteu també el nostre article Com solucionar l’error ora-00942
Oracle és un sistema de gestió de bases de dades que fa quaranta anys que hi ha des de fa diverses formes. Originalment utilitzava l’esquema SCOTT, batejat amb el nom d’un dels empleats originals d’Oracle. Fins i tot vau iniciar la sessió a Oracle per primera vegada amb el nom d'usuari 'scott' i la contrasenya 'tigre' que porta el nom del gat de Scott. Ara hi ha diversos esquemes utilitzats en funció de què utilitzeu Oracle.
Si voleu obtenir més informació sobre Oracle des de la base, aquesta pàgina és molt útil.
S'estan solucionant els errors ORA-06512
A l'Oracle, un error ORA-06512 és un error d'excepció general que us indica on alguna cosa va malament. És un dels errors menys específics produïts per Oracle, ja que només us indica que hi ha un problema, però no el que va malament.
Per exemple, un missatge d’error típic podria llegir:
"ORA-01422: el fet exacte obté més del nombre de files que es demana
ORA-06512: a "DATABASE_NAME", línia 66
ORA-06512: a la línia 1 "
La primera línia us indica quin tipus d'error està passant. En aquest cas, la consulta està retornant més dades de les que s'espera que la consulta no sàpiga com gestionar-la. El codi "ORA-01422" és el codi d'error que heu de mirar. L’ORA-06512 és només el codi d’error general.
La segona línia us indica on es produeix l'error. DATABASE_NAME serà la base de dades en què treballeu. La línia 66 és la línia on es produeix l'error i és la línia que cal comprovar per corregir l'error.
La tercera línia de la sintaxi d’error us indica d’on prové la trucada. Comproveu la línia 1 i veureu una trucada al DATABASE_NAME.
Per solucionar aquest error particular, heu d'arreglar el problema causat per ORA-01422, que és "recupera la recuperació exacta del nombre de files sol·licitat" o bé haureu d'afegir un gestor d'excepcions per dir-li a Oracle que ho ignori. Com que sempre es preferible solucionar el problema bàsic, aquest és el camí a seguir.
Podeu fer dues coses. Si voleu que la consulta torni més d'una sola fila, podeu modificar-la perquè no sorprengui. Si només espereu que la consulta torni una sola fila, també la podeu modificar.
S'espera més d'una sola fila:
per a X en (seleccioneu * de t on …)
bucle
- processeu el registre X aquí
bucle final;
Això hauria d’eradicar l’error en les consultes de bases de dades on es retornarien més d’una fila.
Si només voleu que es retorni una sola fila, podeu provar:
començar
seleccioneu * a….
d’allà on….
procés …
excepció
quan NO_DATA_FOUND llavors
codi de maneig d’errors quan no es troba cap registre
quan TOO_MANY_ROWS llavors
codi de maneig d’errors quan es troben massa registres
final;
Aquest segon mètode hauria d’entregar només una sola fila sense llançar el botó ‘ORA-01422: el fet de recuperació exacta retorna més del nombre d’errors requerit de files i per tant l’error original ORA-06512.
També podeu modificar la consulta de manera que només retorni la primera fila d’una resposta de fila múltiple. Això pot funcionar si no teniu un control complet sobre la base de dades o no voleu embolicar-vos massa amb les coses, però encara necessiteu una resposta.
declarar
cursor c1 per seleccionar * de t on …
començar
obert c1;
buscar c1 a ..
si (c1% no disponible) llavors
manipulació d’errors per no trobar cap registre
final si;
tancar c1;
final;
(Si coneixeu SQL, potser us confongueu una mica amb aquestes línies d'ordres … Oracle no utilitza Transact-SQL, sinó que és una extensió de llenguatge procedimental de SQL, PL / SQL. Si bé és similar a Transact-SQL, PL / SQL sí moltes coses hàbils i és una eina molt poderosa per si mateixa. Pot ser que us resulti útil aquesta FAQ de PL / SQL quan intenteu conèixer més informació sobre Oracle.)
Així, la lliçó bàsica aquí és que un error ORA-06512, per si mateix, no és una cosa que podeu arreglar directament. En lloc d'això, heu d'esbrinar quin és l'error real, que us diran els altres codis d'error i, a continuació, tracteu els errors un a un.
Tens algun consell o trucs Oracle per compartir? Feu-nos-ho saber als comentaris!
![Com solucionar els errors d'ora-06512 a oracle db Com solucionar els errors d'ora-06512 a oracle db](https://img.sync-computers.com/img/help-desk/376/how-fix-ora-06512-errors-oracle-db.jpg)