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

8

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

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

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 не может подключиться во время состояния покоя.

Томми
источник

Ответы:

9

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

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необходимо, хотя. Это просто наша лучшая практика.

Питер Шютце
источник
Я не понимаю, почему разрешены удаленные подключения, когда база данных «отключена», а удаленные пользователи не имеют таких полномочий ...
Томми,
Из документации IBM: publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/… - RESET - эквивалент явного подключения к базе данных по умолчанию, если оно доступно. Если база данных по умолчанию недоступна, состояние соединения процесса приложения и состояния его соединений не изменяются. - Похоже, вы подключились к базе данных, позвонивDB2 connect reset
Питер Шютце
Установка DB2COMM = была единственным способом исключить все пулы соединений, подключающихся к базе данных. Я просто люблю DB2 ...
Томми
2

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

Арун Срини
источник
Я должен исправить свой принятый ответ. Это сработало один раз, но, должно быть, это была удача. Пришлось обратиться к петровской «уловке»
Томми
2

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

Питер Шютце
источник
1

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

Лиза
источник
0

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

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

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

падение дб;


источник
0

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

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

Джон
источник
0

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

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

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

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

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

Саймон
источник