У меня никогда не получалось, что это работает с первого раза, но теперь я вообще не могу этого сделать.
Где-то есть пул соединений, использующий базу данных, поэтому попытка отбросить базу данных, когда приложение использует базу данных, должна привести к этой ошибке. Проблема в том, что при выполнении следующих команд нет подключения к базе данных:
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 и повторите попытку.
Надеюсь, это поможет людям в будущем.