Удаление базы данных в 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. Пользователь connectionpool не может подключиться во время состояния покоя.

7 ответов

Решение

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

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", затем "drop db". Этот способ лучше команды quiesce, которая по своей природе асинхронна.

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

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

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

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

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

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

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

Чтобы найти PID, откройте Центр управления DB2, Все базы данных, DATABASE (та, которую вы пытаетесь отбросить), Список приложений, Показать цепочку блокировки, Показать детали блокировки и прокрутите вниз, чтобы найти идентификатор процесса клиента и завершить этот PID, и повторите попытку.

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

Сделайте эти шаги из командной строки. Это опустит БД:

Заставить приложения все;

деактивировать БД;

падение дб;

Другие вопросы по тегам