Drop database pada DB2 9.5 - SQL1035N Basis data saat ini sedang digunakan

8

Saya tidak pernah mendapatkan ini bekerja pertama kali, tapi sekarang saya sepertinya tidak bisa melakukannya sama sekali.

Ada kumpulan koneksi di suatu tempat menggunakan database, jadi mencoba untuk menjatuhkan database ketika aplikasi menggunakan database harus memberikan kesalahan ini. Masalahnya adalah tidak ada koneksi ke database ketika saya mengeluarkan perintah ini:

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

Ini selalu memberi:

SQL1035N  The database is currently in use.  SQLSTATE=57019

menjalankan perintah ini tidak menunjukkan koneksi / aplikasi

DB2 list applications

Saya bahkan dapat menonaktifkan basis data, tetapi masih tidak bisa menghapusnya.

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

Adakah yang punya petunjuk? Saya menjalankan cmd-windows sebagai administrator lokal (windows 2008) dan ini juga merupakan admin untuk DB2. Connectionpool-user tidak dapat terhubung selama kondisi diam.

Tommy
sumber

Jawaban:

9

Sama seperti tip jika tip Arun tidak berfungsi, karena aplikasi jarak jauh langsung terhubung kembali ke 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 

Tidak yakin apakah db2 forcedan db2 terminateitu diperlukan. Itu hanya praktik terbaik kami.

Peter Schuetze
sumber
Saya tidak mengerti mengapa koneksi jarak jauh diizinkan ketika basis data "diam" dan pengguna jarak jauh tidak memiliki otoritas itu ...
Tommy
Dari dokumentasi IBMs: publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/… - RESET - Setara dengan koneksi eksplisit ke database default jika tersedia. Jika database default tidak tersedia, status koneksi proses aplikasi dan status koneksinya tidak berubah. - Sepertinya Anda terhubung ke database dengan meneleponDB2 connect reset
Peter Schuetze
Pengaturan DB2COMM = adalah satu-satunya cara untuk menghilangkan semua kumpulan koneksi yang terhubung ke database. Saya suka DB2 ...
Tommy
2

Saya hanya menggunakan 'db2stop force', lalu 'db2start', lalu drop db. Cara ini lebih baik daripada perintah diam yang asinkron secara alami.

Arun Srini
sumber
Saya harus memperbaiki jawaban yang saya terima. Ini bekerja satu kali, tetapi itu pasti keberuntungan. Harus beralih ke "trik" Peter
Tommy
2

Masalah Anda mungkin terjadi karena perbedaan connect resetdan terminate. Lihat diskusi ini . Anda juga dapat melihat dokumentasi IBM. Jadi itu mungkin bekerja untuk Anda jika Anda menjalankan db2 terminate insteada db2 connect reset.

Peter Schuetze
sumber
1

Quiesce akan mencegah drop bekerja. Kami terlibat dalam upaya pembersihan besar-besaran dan setelah menjalankan pencabutan / sambungkan dan quiescing basis data, kami menunggu beberapa bulan untuk menghentikan tes dbs. Perintah drop kami tidak akan berfungsi kecuali kami membatalkan db lalu menjatuhkannya.

Lisa
sumber
0

Lakukan langkah-langkah ini dari baris perintah. Ini akan menjatuhkan db:

Paksa semua aplikasi;

nonaktifkan db;

drop db;


sumber
0

Ketika db diam, itu masih dalam rantai database dengan manajer db, meskipun ditandai sebagai diam. Ketika Anda mencoba menjatuhkannya, kami akan memeriksa untuk melihat apakah itu ada di rantai ini; jika demikian, maka masih digunakan ==> Anda tidak bisa menjatuhkannya.

Anda harus mengeluarkan unbiesce db atau mengeluarkan db2stop dan db2start dan kemudian mencoba untuk menjatuhkannya. Itu harus bekerja.

John
sumber
0

Saya memiliki masalah yang sama tetapi tidak peduli bagaimana saya memaksa aplikasi untuk berhenti, itu akan kembali secara otomatis.

Dalam kasus saya, ini adalah Layanan yang mengunci basis data.

Saya dapat menyelesaikan ini dengan menghentikan layanan PID dari Windows Task Manager dengan PID ditemukan di Daftar Aplikasi DB2.

Untuk menemukan PID, buka Pusat Kontrol DB2, Semua Basis Data, DATABASE (yang ingin Anda jatuhkan), Daftar Aplikasi, Tampilkan Rantai Kunci, Tampilkan Detail Kunci dan gulir ke bawah untuk menemukan ID Proses Klien dan akhiri PID ini dan coba lagi.

Semoga ini bisa membantu orang di masa depan.

Simon
sumber