Sempre per la serie "Oracle e l'Oracle Data Provider sono simpatici come un gatto attaccato agli zebedei" vi racconto la storiella di ieri...
Oracle ed ODP installati su un server 2003, applicazione Asp.Net che si pianta in maniera mistica, dando un errore di Object not Set dentro l'Exceptio Handler che trappa le OracleException. Codice semplicissimo
catch(OracleException ex) {
LogException(ex.Message);
}
Il metodo LogException accetta una stringa e si occupa semplicemente di loggare l'eccezione usando log4net ed aggiungendo un po di informazioni contestuali.
Bene, per farla corta la chiamata ad ex.Message (come anche quella ad ex.ToString()) danno un errore.
Il motivo? La cartella dove è installato ODP non aveva la permission di read ed execute settata sulla directory dove si trovano i messaggi di Oracle e quindi generava un errore la ex.Message.
Per capirlo il giro è stato propiziato da San Russinovich:
- Installazione di FileMon sulla macchina
- Lancio di FileMon tracciando tutte le operazioni del processo w3wp.exe
- Messaggio di Access Denied su uno dei file .msb che si trovano nella directory \oracle\product\10.1.0\Client_1\network\mesg
Aggiunte le permission alla cartella in questione, va che è unto.
Quindi, se vi capitasse di avere errori strani con Oracle... CONTROLLATE LE PERMISSION DI ACCESSO A TUTTE LE DIRECTORY DEL CLIENT ORACLE, non solo della bin come avevo fatto io. E accidenti ai sistemisti che per fare hardening della macchina ti costringono a dare le permission di accesso con il contagocce...
posted @ mercoledì 1 febbraio 2006 20:47