Rilascia database su DB2 9.5 - SQL1035N Il database è attualmente in uso


8

Non l'ho mai fatto funzionare la prima volta, ma ora non riesco proprio a farlo.

Esiste un pool di connessioni da qualche parte che utilizza il database, quindi provare a eliminare il database quando un'applicazione utilizza il database dovrebbe dare questo errore. Il problema è che non ci sono connessioni al database quando eseguo questi comandi:

db2 connect to mydatabase
db2 quiesce database immediate force connections
db2 connect reset
db2 drop database mydatabase

Questo dà sempre:

SQL1035N  The database is currently in use.  SQLSTATE=57019

l'esecuzione di questo comando non mostra connessioni / applicazioni

DB2 list applications

Posso persino disattivare il database, ma ancora non riesco a rilasciarlo.

db2 => deactivate database mydatabase
DB20000I  The DEACTIVATE DATABASE command completed successfully.
db2 => drop database mydatabase
SQL1035N  The database is currently in use.  SQLSTATE=57019
db2 =>

Qualcuno ha qualche indizio? Sto eseguendo cmd-windows come amministratore locale (Windows 2008) e questo è anche l'amministratore di DB2. L'utente connectionpool non può connettersi durante lo stato di sospensione.

Risposte:


9

Proprio come un suggerimento se il suggerimento di Arun non funziona, perché un'app remota si sta riconnettendo immediatamente al db.

db2 force applications all 
db2 terminate 

db2set DB2COMM= 
db2stop 
db2start 

db2 force applications all 
db2 terminate 

... do your stuff here ...

db2set DB2COMM=TCPIP 
db2stop 
db2start 

Non sono sicuro se il db2 forcee il db2 terminatesia necessario, però. È solo la nostra migliore pratica.


Non capisco perché le connessioni remote siano consentite quando il database è "sospeso" e gli utenti remoti non hanno tale autorizzazione ...
Tommy,

Dalla documentazione IBM: publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/… - RESET - Equivalente a una connessione esplicita al database predefinito se è disponibile. Se non è disponibile un database predefinito, lo stato della connessione del processo dell'applicazione e gli stati delle sue connessioni rimangono invariati. - Sembra che tu sia connesso al database chiamandoDB2 connect reset
Peter Schuetze il

L'impostazione di DB2COMM = era l'unico modo per eliminare tutti i pool di connessioni che si connettevano al database. Adoro DB2 ...
Tommy,

2

Uso semplicemente 'db2stop force', quindi 'db2start', quindi rilascia db. In questo modo è meglio del comando quiesce che è asincrono per natura.


Devo correggere la mia risposta accettata. Ha funzionato una volta, ma deve essere stata fortuna. Dovevo ricorrere al "trucco" di Peter
Tommy,

2

Il problema potrebbe verificarsi a causa delle differenze di connect resete terminate. Dai un'occhiata a questa discussione . Puoi anche dare un'occhiata alla documentazione IBM. Quindi potrebbe funzionare per te se esegui un db2 terminate insteaddi a db2 connect reset.


1

La sospensione impedirà il funzionamento della caduta. Siamo stati coinvolti in un grande sforzo di pulizia e dopo aver eseguito revoca / connessione e la sospensione dei database abbiamo aspettato alcuni mesi per eliminare i dbs di test. Il nostro comando drop non funzionerebbe se non avessimo annullato il rilascio del db, quindi lasciato cadere.


0

Esegui questi passaggi dalla riga di comando. Questo lascerà cadere il db:

Forza tutte le applicazioni;

disattivare db;

drop db;


0

Quando un db viene sospeso, è ancora nella catena di database con il gestore db, anche se contrassegnato come sospeso. Quando provi a rilasciarlo, verificheremo se è su questa catena; in tal caso, è ancora in uso ==> Non puoi rilasciarlo.

È necessario emettere un db non richiesto o emettere un db2stop e db2start e quindi provare a rilasciarlo. Dovrebbe funzionare.


0

Ho un problema simile, ma non importa come forzare l'arresto dell'applicazione, tornerà automaticamente.

Nel mio caso, è un servizio che blocca il database.

Sono stato in grado di risolvere questo problema terminando il servizio PID da Task Manager di Windows con PID trovato nell'elenco applicazioni DB2.

Per trovare il PID, aprire DB2 Control Center, Tutti i database, DATABASE (quello che si sta tentando di eliminare), Elenco applicazioni, Mostra catena di blocchi, Mostra dettagli di blocco e scorrere verso il basso per trovare l'ID processo client e terminare questo PID e riprovare.

Spero che questo aiuti le persone in futuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.