350 messaggi dal 08 febbraio 2009
Salve a tutti.

Ho una macchina con la seguente configurazione:

- Windows Server 2003 sp2
- Oracle 10g version 10.2.0.1.0
- ODAC versione 11.1.0.6.21
- IIS 6

A questo punto ho un'applicazione webserver (che gira su IIS) che accede ai dati su Oracle.
L'architettura è la seguente:

WCF -> Accede ad Oracle
WPF -> Chiama WCF che accede ad Oracle

Il mio problema è il seguente: se uso il driver Microsoft (System.Data.OracleClient), allora l'applicazione mi estrae tutti i dati, però per farlo ci mette circa 7 secondi.
Pertanto ho provato ad usare il driver Oracle (Oracle.DataAccess.Client) per velocizzare il tutto. Effettivamente si velocizza parecchio (da 7 secondi passiamo a quasi 2), però non vengono estratti tutti i dati...

La cosa strana è che se lancio la query a mano (SQL plus) i dati sono corretti... Se la medesima query la lascio fare al programma .NET (debug), non mi estrae nulla. La query, però, non è unica! Ho diverse query e solo alcune non vanno.

Purtroppo non so cosa poter guardare, specie perchè se cambio il file di configurazione e ripristino il driver di Microsoft, tutto funziona correttametne (lentezza esclusa).

Da questo test deduco che il programma sia corretto (le query sono giuste) e il server Oracle è configurato bene e non ha problemi (altrimenti non doveva funzionare).

Qualcuno sa se ci sono delle limitazioni nel driver di Oracle? Oppure se ci sono dei bug... (per esempio ho scoperto che la versione 10 del client Oracle per Linux si blocca dopo circa un mese, non vorrei ci fossero problemi anche col driver Oracle).

Però, prima di dare la colpa ad Oracle, mi piacerebbe capire cosa posso controllare e se qualcuno ha già avuto questo problema
Mmmmm... guarda... con Oracle io di problemi ne ho avuti tanti, ma di questo genere mai.

Non sono un espertone del campo, però, ma mi suona strana una limitazione del genere.

Sicuro che le due implementazioni che hai realizzato siano analoghe?
350 messaggi dal 08 febbraio 2009
Non ho due implementazioni...
Ne ho una sola. l'unica differenza è nella stringa di connessione.

In pratica ho installato il tutto sul server windows 2003 (col driver di Microsoft) e il client funziona bene (ma con 7 secondi di latenza).

Vado in c:\inetpub\wwwroot.... e cambio il file di configurazione. Riavvio IIS (tanto ho solo quel servizio), riaccedo col medesimo client al medesimo server e l'applicazione non funziona più (ovvero mi carica meno dati del previsto).

Per cui non è che cambio qualcosa fra le due configurazioni, bensì cambio solo il file di connessione, quindi la parte "software" è la medesima.

Non solo! Ho anche provato da VS per capire cosa potesse essere. Andando in debug, quando arrivo alla query incriminata, subito prima di farla eseguire al .NET la eseguo a mano da SQL-Plus... SQL-Plus mi torna dei dati, la query su .NET no...

Cambiando il file di configurazione, rilancio il tutto da VS, mi rifermo nello stesso punto (break-point) e rifaccio la stessa cosa... In tal caso, però, i dati ricevuti sono gli stessi di SQL-Plus.

Questo non riesco a capirlo...

Non vorrei ci fosse qualche problema a livello di "tipo di campo" (che ne so, magari con dei problemi nella conversione di stringhe o altro)... Però le query sono semplici, per cui mi sembra una cosa così strana...

Non so però come intervenire nè cosa poter guardare
350 messaggi dal 08 febbraio 2009
Trovato!!!!

Non mi ero accorto di una "try/catch" che mi nascondeva l'exception che ricevevo...

In pratica la differenza fra i due driver che a me dava fastidio è che se eseguo una query che estrae un Decimal (numero piuttosto grande) e cerco il valore con reader.getInt32(colonna), il driver di Microsoft fa il cast in automatico, mentre il driver Oracle segnala un'eccezione...

Ovviamente è corretto che venga segnalato errore, però non avevo visto il try/catch che mi faceva perdere tutto...


Vabè, meglio così!!! (purtroppo la query aveva solo dei numeri, quindi le variabili erano sempre a zero per via di quel try/catch)


Beh, meglio così! Almeno ho risolto...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano

I più letti di oggi

Media
In evidenza
MISC