Назад | Перейти на главную страницу

Отбросить базу данных в DB2 9.5 - SQL1035N База данных в настоящее время используется

У меня никогда не получалось, что это работает с первого раза, но теперь я вообще не могу этого сделать.

Где-то есть пул соединений, использующий базу данных, поэтому попытка отбросить базу данных, когда приложение использует базу данных, должна привести к этой ошибке. Проблема в том, что при выполнении следующих команд нет подключения к базе данных:

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

Это всегда дает:

SQL1035N  The database is currently in use.  SQLSTATE=57019

запуск этой команды не показывает никаких подключений / приложений

DB2 list applications

Я даже могу деактивировать базу данных, но все равно не могу ее отбросить.

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

У кого-нибудь есть подсказки? Я запускаю cmd-windows как локальный администратор (windows 2008), и он также является администратором DB2. Пользователь пула соединений не может подключиться во время состояния покоя.

Так же как подсказка, если подсказка Аруна не работает, потому что удаленное приложение мгновенно переподключается к базе данных.

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 

Не уверен, что db2 force и db2 terminate хотя необходимо. Это просто наша лучшая практика.

Я просто использую db2stop force, затем db2start, затем отбрасываю db. Этот способ лучше, чем команда quiesce, которая по своей природе асинхронна.

Ваша проблема может возникнуть из-за различий в connect reset и terminate. Посмотри на это обсуждение. Вы также можете ознакомиться с документацией IBM. Так что это может сработать для вас, если вы запустите db2 terminate instead из db2 connect reset.

Положение покоя предотвратит работу капли. Мы были вовлечены в большую работу по очистке, и после запуска revoke / connect и стабилизации баз данных мы ждали несколько месяцев, чтобы сбросить тестовые базы данных. Наша команда drop не сработает, если мы не отключим базу данных, а затем удалим ее.

Выполните эти шаги из командной строки. Это приведет к падению db:

Принудительно все приложения;

деактивировать db;

drop db;

Когда база данных находится в стабилизации, она все еще находится в цепочке баз данных с менеджером баз данных, хотя и помечена как приостановленная. Когда вы попытаетесь сбросить его, мы проверим, есть ли он в этой цепочке; если да, то он все еще используется ==> Вы не можете его бросить.

Вы должны выполнить unquiesce db или запустить db2stop и db2start, а затем попытаться отбросить его. Он должен работать.

У меня аналогичная проблема, но как бы я ни заставлял приложение останавливаться, оно автоматически возвращается.

В моем случае это служба, которая блокирует базу данных.

Я смог решить эту проблему, отключив службу PID из диспетчера задач Windows с PID, найденным в списке приложений DB2.

Чтобы найти PID, откройте Центр управления DB2, Все базы данных, БАЗУ ДАННЫХ (ту, которую вы пытаетесь отбросить), Список приложений, Показать цепочку блокировок, Показать детали блокировки и прокрутите вниз, чтобы найти ID процесса клиента, завершите этот PID и повторите попытку.

Надеюсь, это поможет людям в будущем.