Aruncarea bazei de date pe DB2 9.5 – SQL1035N Baza de date este în curs de utilizare (Administrarea sistemului, Db2)

Tommy a intrebat.

Nu am reușit să fac acest lucru să funcționeze de prima dată, dar acum se pare că nu pot face i deloc.

Există un pool de conexiuni undeva care utilizează baza de date, astfel încât încercarea de a renunța la baza de date atunci când o aplicație o utilizează ar trebui să dea această eroare. Problema este că nu există nici o conexiune la baza de date atunci când emit aceste comenzi:

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

Acest lucru dă întotdeauna:

SQL1035N  The database is currently in use.  SQLSTATE=57019

rularea acestei comenzi nu arată nicio conexiune/aplicație.

DB2 list applications

Pot chiar să dezactivez baza de date, dar tot nu o pot elimina.

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 =>

Are cineva vreun indiciu? Rulez cmd-windows ca administrator local (windows 2008) și acesta este și administratorul pentru DB2. Utilizatorul connectionpool-user nu se poate conecta în timpul quiesce-state.

7 răspunsuri
Peter Schuetze

Doar ca un sfat dacă sfatul lui Arun nu funcționează, deoarece o aplicație la distanță se reconectează instantaneu la 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 

Nu sunt sigur dacă db2 force și db2 terminate este necesar, totuși. Este doar cea mai bună practică a noastră.

Comentarii

  • Nu înțeleg de ce sunt permise conexiunile de la distanță atunci când baza de date este „quiesce”‘ed și utilizatorii de la distanță nu au această autoritate… –  > Por Tommy.
  • Din documentația IBM: publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/… — RESET – Echivalent cu o conectare explicită la baza de date implicită, dacă aceasta este disponibilă. Dacă nu este disponibilă o bază de date implicită, starea de conectare a procesului aplicației și stările conexiunilor sale rămân neschimbate. — Se pare că v-ați conectat la baza de date prin apelarea lui DB2 connect reset –  > Por Peter Schuetze.
  • Setarea DB2COMM= a fost singura modalitate de a da afară toate grupurile de conexiuni care se conectau la baza de date. Iubesc DB2… –  > Por Tommy.
Arun Srini

Eu folosesc doar ‘db2stop force’, apoi ‘db2start’ , apoi drop db. Acest mod este mai bun decât comanda quiesce, care este asincronă prin natură.

Comentarii

  • Trebuie să-mi corectez răspunsul acceptat. Acest lucru a funcționat o singură dată, dar trebuie să fi fost noroc. A trebuit să apelez la „trucul” lui Peter…  > Por Tommy.
Peter Schuetze

Problema dvs. ar putea să apară din cauza diferențelor de connect reset și terminate. Aruncați o privire la această discuție. De asemenea, puteți arunca o privire la documentația IBM. Deci, ar putea funcționa pentru dvs. dacă executați un db2 terminate instead a unui db2 connect reset.

Lisa

Quiesce va împiedica funcționarea drop-ului. Am fost implicați într-un efort mare de curățare și, după ce am rulat revocat/conectat și am oprit bazele de date, am așteptat câteva luni pentru a renunța la bazele de date de testare. Comanda drop nu a funcționat decât dacă am dezactivat quiesce-ul și apoi am făcut drop.

user56798

Efectuați acești pași din linia de comandă. Aceasta va anula baza de date:

Forțați toate aplicațiile;

Deactivate db ;

drop db ;

John

Atunci când o bază de date este dezactivată, aceasta se află încă în lanțul de baze de date cu db manager, deși este marcată ca fiind dezactivată. Când încercați să o abandonați, vom verifica dacă se află în acest lanț; dacă da, atunci este încă în uz ==> Nu o puteți abandona.

Trebuie să emiteți un unquiesce db sau să emiteți un db2stop și un db2start și apoi să încercați să îl abandonați. Ar trebui să funcționeze.

Simon

Am o problemă similară, dar indiferent cum forțez oprirea aplicației, aceasta se va întoarce automat.

În cazul meu, este vorba de un Serviciu care blochează baza de date.

Am reușit să rezolv acest lucru prin terminarea serviciului PID din Windows Task Manager cu PID-ul găsit în DB2 Application List.

Pentru a găsi PID, deschideți Centrul de control DB2, Toate bazele de date, BAZA DE DATE (cea pe care încercați să o abandonați), Lista de aplicații, Afișare lanț de blocare, Afișare detalii de blocare și derulați în jos pentru a găsi ID-ul procesului client și terminați acest PID și încercați din nou.

Sper că acest lucru îi va ajuta pe oameni în viitor.

Tags: