Una query da un Oracle a un DB2 attraverso un dblink può bloccare la tabella DB2?

StackOverflow https://stackoverflow.com/questions/1033046

  •  06-07-2019
  •  | 
  •  

Domanda

Ho una query di medie dimensioni con 500.000 registri da un Oracle a un sistema DB2 attraverso un DBLink. Questa query può bloccare la tabella DB2 in modo che possa essere aggiornata fino alla chiusura di DBLink o fino al termine del lavoro con la query (una selezione di inserimento in una tabella Oracle)

È stato utile?

Soluzione 2

Sembra che sia possibile bloccare le tabelle con selezioni tramite Oracle dblink, perché non è possibile definire DBLINK come READ UNCOMMITED, ma il problema può essere risolto con un altro sistema DB che supporta tale funzionalità, come SQLServer. Questo è ciò che dice l'ultimo post in questo forum:

Forum

" Non c'è modo di impostare o ingannare l'oracolo nella selezione con una lettura senza commit anche quando si selezionano i dati da un database esterno su un DB_LINK

Ciò che abbiamo fatto per ovviare a questo problema è stato quello di bypassare il driver odbc dall'oracolo per progredire tutti insieme mentre tutte le colonne bloccate sul lato avanzamento sono esplose per noi quando si seleziona su DB_LINK anche con noi impostare la transazione in sola lettura.

Abbiamo usato invece SQL Server come buffer tra ORACLE e Progress. Con SQLServer è possibile impostare il livello di isolamento per leggere senza commit. così abbiamo creato le viste SQLServer delle tabelle di avanzamento tramite un server SQL Server collegato e quindi selezioniamo da quelle viste da un DB_Link da Oracle a SQL Server.

Sembra funzionare bene "

Altri suggerimenti

Il motore DB2 vedrà DBLink come un'applicazione remota che sta eseguendo un'istruzione select. Se l'applicazione utilizza la stabilità del cursore (CS) o un livello di isolamento altrettanto ragionevole, il database DB2 non deve bloccare alcuna riga per molto tempo. Al massimo potrebbero esserci una serie di blocchi a livello di riga molto brevi mentre il cursore da DBLink scorre il set di risultati della query DB2. Se DBLink non sta cambiando le cose sul lato DB2, non dovrebbe esserci alcun blocco significativo in DB2, quindi altre applicazioni dovrebbero essere in grado di connettersi a DB2 per eseguire gli aggiornamenti. Per favore fatemi sapere se ho frainteso qualcosa sulla vostra domanda e chiarirò la mia risposta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top