Как закрыть одну базу данных в экземпляре db2? - PullRequest
0 голосов
/ 05 марта 2019

Я хочу закрыть одну базу данных в экземпляре db2 с несколькими базами данных.Я не хочу деактивировать базу данных, так как она снова подключится при попытке подключения.Он должен быть полностью выключен, поэтому я получаю ошибку соединения при попытке подключиться к БД.

Ответы [ 2 ]

1 голос
/ 05 марта 2019

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

Сначала определите путь к базе данных, просмотрев ее запись в каталоге:

db2 list db directory 

Значениесвойства «Каталог локальной базы данных» - это то, что вам нужно.

Теперь вы можете перекаталогизировать базу данных:

db2 uncatalog db orig_db
db2 catalog db orig_db as foobar on <path>

, где <path> - это каталог локальной базы данных, определенный ранее.

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

db2 list applications
db2 "force application (<app id 1>, <app id 2>,...)
db2 deactivate db foobar

Позже вы сможете восстановить первоначальную стоимость записи каталога:

db2 uncatalog db foobar
db2 catalog db orig_db on <path>
1 голос
/ 05 марта 2019

Это не вопрос программирования, поэтому его можно рассматривать как не по теме.

Существуют различные методы, у каждого есть свои преимущества / недостатки.

  • Вы можете приостановить базу данных и позже отменить ее.

  • или вы можете отозвать права на подключение и впоследствии предоставить их, но это зависит от того, насколько хорошо выполнено разделение ролей.

  • или вы отключите существующие приложения изатем подключите in exclusive mode в качестве владельца экземпляра (при условии, что ваши приложения НИКОГДА не подключаются с учетными данными владельца экземпляра).

...