Tipologia errori ORA-

Per risalire a più informazioni su un errore oracle usare il comando seguente dal server oracle:
! oerr ora <codice>

Vediamo alcuni esempi:

[oracle@coslab03 ~]$ ! oerr ora 00020
00020, 00000, "maximum number of processes (%s) exceeded"
// *Cause:  All process state objects are in use.
// *Action: Increase the value of the PROCESSES initialization parameter.

[oracle@coslab03 ~]$ ! oerr ora 28002
28002, 00000, "the password will expire within %s days"
// *Cause:   The user's account is about to about to expire and the password
//           needs to be changed
// *Action:  change the password or contact the DBA
//



ORA-00119: invalid specification for system parameter LOCAL_LISTENER


ORA-00130: invalid listener address '(ADDRESS=(PROTOCOL=TCP)(HOST=coslab02.camera.it)(PORT=1521))'

Si verifica in fase di statup di una instanza.
[oracle@coslab02 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 30 12:34:37 2018
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to an idle instance.

SQL> startup nomount;
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00130: invalid listener address '(ADDRESS=(PROTOCOL=TCP)(HOST=coslab02.camera.it)(PORT=1521))'

Occorre inserire nel file SPFILE.ora la seguente stringa
*.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))'

[oracle@coslab02 dbs]$ sqlplus / as sysdba
SQL> create pfile='/tmp/init_CATDB.ora' from spfile;
SQL> exit
Disconnected
[oracle@coslab02 dbs]$ vi /tmp/init_CATDB.ora
Inserire il parametro di prima.
[oracle@coslab02 dbs]$ sqlplus / as sysdba
SQL> create spfile from pfile='/tmp/init_CATDB.ora';
File created
SQL> startup nomount;
SQL> alter database mount;
SQL> alter database open;




ORA-01722: invalid number
Supponiamo di avere la seguente tabella.

create table sh.prova (
PROVINCIA char (2 byte),
COMUNE char (4 byte),
IDSTATO char (1 byte) );

PROVINCIA,COMUNE,IDSTATO
--------------------------------------
MI    L454      2
MI    B235      2
CN    D205    1
RM    H501    1
PU    G479     4
MC    E783    4
EN    L448     3
EN    A098    3
AL    L059     A
AL    H810    A

Se si esegue la quey seguente passando un numero al posto di un carattere:
SELECT * FROM sh.prova
where idstato = 3;
compare il messaggio ORA-01722: invalid number a causa della presenza della lettera 'A' e quindi di un carattere. La conversione implicita di oracle trovando un carattere termina in errore. Se si elimina o si trasforma il valore da "A" a "6" (ad esempio) il problema rientra.


ORA-19815: WARNING: db_recovery_file_dest_size of 38493 bytes is 100% used, and has 0 remaining bytes available.
L'errore compare nell'alert log quando, in un database in cui è attivo l'Archivelog Mode, la Flash Recovery Area usata come destinazione dei archived redo log files, è piena.
Si consiglia di effettuare il back up della Flash Recovery Area e descrescere l'opzione "Flashback Retention Time" che determina quando i files sono obsoleti e quindi posso essere cancellati automaticamente perchè non soddisfano più gli obiettivi di recupero dati.

 
ORA-01031: insufficient privileges
L'errore si verifica quando l'utenza con cui si esegue la ddl o dml non ha le grant per eseguirle.


ORA-01653: unable to extend table HERO.BATMAN by 128 in tablespace DC
L'errore si è verificato mentre l'user HERO eseguiva insert in tabella BATMAN, perchè non c'è sufficiente spazio nella tablespace DC per allocare un nuovo extent.
Le soluzioni possono essere le seguenti:
Individuiamo i data file associati al tablespace:
SQL>select a.name, b.name from V$DATAFILE a join V$TABLESPACE b using (ts#);
NAME                                                                                                           NAME
-------------------------------------------------------------------------------------
/u01/app/oracle/oradata/SALES/datafile/o1_mf_system_8gzv1xpy_.dbf    dc


1) Aggiungere un datafile alla tablespace DC:
ALTER TABLESPACE dc ADD DATAFILE ‘/u01/app/oracle/oradata/SALES/datafile/o1_mf_system_8gzv1xpy_.dbf’ SIZE xxxM;
2) Ridimensionare il datafile associato alla tablespace DC:
ALTER DATABASE DATAFILE ‘/u01/app/oracle/oradata/SALES/datafile/o1_mf_system_8gzv1xpy_.dbf’ RESIZE xxxM;
3) Modificare il datafile associato alla tablespace DC per crescere automaticamente:
ALTER DATABASE DATAFILE /u01/app/oracle/oradata/SALES/datafile/o1_mf_system_8gzv1xpy_.dbf AUTOEXTEND ON;


ORA-00060: deadlock detected while waiting for resource
L'errore è causato da un conflitto di risorse con un'altra sessione che tenta di modificare gli stessi dati della prima transazione. Piochè si attendono a vicenda nessuna sessione può completare la propria transazione. Oracle automaticamente effettua il rollback della sessione corrente per risolvere il deadlock così che le altre sessione possono procedere con le loro transazioni.
Ad esempio:
Transazione 1 - ore 10:00 Update tabellaA set colonnaA = 100 where idstato = 5;
Transazione 2 - ore 10:00 Update tabellaA set colonnaB = 100 where
idstato = 7;
Transazione 1 - ore 10:15 Update tabellaA set colonnaA = 100 where
idstato = 7;
Transazione 2 - ore 10:15 Update tabellaA set colonnaB = 100 where
idstato = 5;
Transazione 1 - ore 10:16: riceve messaggio ORA-00060: deadlock detected while waiting for resource

Nell'esempio la transazione 1 deve eseguire il rollback o commit in risposta al messaggio di errore. Se esegue il commit deve risottomere la seconda update; se esegue un rollback deve risottomettere entramebe le transazioni.
Il lock serve per garantire la coerenza dei dati ed è progettato per garantire il massimo livello possibile di accesso contemporaneo ai dati del database. Se una sessione viene killata perchè non rilascia il lock cioè non esegue commit o rollback, al prossimo tentativo di istruzuione sql, l'utente della sessione killata riceverà il messaggio:
ORA-03135: connection lost contact

ORA-02392: exceeded session limit on CPU usage, you are being logged off
L'errore si verifica quando una sessione supera il limite di tempo di utilizzo della CPU impostato nel paramtro di profilo CPU/Session. Ad esempio CPU/Session = 1000 (centesimi di secondi) indica che ogni singola sessione con questo profilo consuma al massimo 10 seocndi della CPU. Quando si supera tale valore la sessione verrà disconnessa. Per risolvere l'errore contattare il DBA per incrementare il parametro CPU_PER_SESSION.

ORA-02393:exceeded call limit on CPU usage
 

L'errore si verifica quando una chiamata supera il limite di tempo di consumo della CPU impostato nel paramtro di profilo CPU/Call. Ogni singolo comando della sessione di un utente, con questo profilo, che supera tale limite di tempo verrà interrotto.
Per risolvere l'errore contattare il DBA per incrementare il parametro CPU_PER_CALL.


Errore SQL: ORA-01402: violazione nella clausola WHERE della vista con WITH CHECK OPTION 
L'errore si verifica quando si esegue una UPDATE o INSERT su una vista che ha abilitata l'opzione WITH CHECK OPTION. Vedere articolo VIEW: create, alter e drop. 

SQL Error: ORA-00934: group function is not allowed here
00934. 00000 - "group function is not allowed here"

L'errore è legato all'uso di una funzione di Gruppo nella clausola Where o Group by.

 
Errore SQL: ORA-02436: variabile data o di sistema specificata non correttamente nel vincolo CHECK
02436. 00000 -  "date or system variable wrongly specified in CHECK constraint"
L'errore è legato all'uso di SYSDATE in una Check Constraint.


ORA-08002: la sequenza PROVASEQ3.CURRVAL non è ancora definita in questa sessione
Una volta creata una Sequence se si esegue per primo il comando currval viene visualizzato il suddetto messaggio di errore.
SELECT PROVASEQ3.CURRVAL FROM DUAL;
Occorre prima eseguire il comando PROVASEQ3.NEXTVAL per inizializzare la Sequence.

Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database