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