Страница 1 из 1

Загадочный owner...

Добавлено: 02 ноя 2007, 18:27
Naidenov
Предисловие: Отресторил БД от имени другого пользователя -> другой пользователь - владелец БД.
System Info: FB CS 1.5.2
Вопрос(ы):

1. Владелец БД <> владелец существовавших ранее в ней объектов. Почему?
2. Как "относительно безболезненно" сменить владельца существующих объектов БД стандартными средствами?

Добавлено: 06 ноя 2007, 13:54
Naidenov
Господа, ну не падайте на мороз! Помогите, кто чем сможет. Кто советом, кто ссылкой... :(

Добавлено: 06 ноя 2007, 14:06
Dimitry Sibiryakov
Простой путь: пересоздать БД из скрипта. Сложный путь: погуглить на предмет Owner Migration и падать в ноги автору чтобы осчастливил утилькой.

Re: Загадочный owner...

Добавлено: 06 ноя 2007, 14:31
Slavik
1. Не знаю. Может разработчики ответят или ещё кто-нибудь более сведущий.
2. Стандартные средства - это какие? Можно выгрузить базу в скрипт и соответственно создать новую базу от имени "правильного" владельца. Но я просто делал update RDB$RELATIONS set RDB$OWNER_NAME = "Новый владелец"
После чего опять backup/restore от имени нового владельца.

Добавлено: 06 ноя 2007, 14:32
Naidenov
Dimitry Sibiryakov писал(а):Простой путь: пересоздать БД из скриптаю
А почему не воспользоваться недокументированными возможностями и не поправить процедурой RDB$USER_PRIVILLEGE и связанные с ней другие системные таблицы?
Dimitry Sibiryakov писал(а):Сложный путь: погуглить на предмет Owner Migration и падать в ноги автору чтобы осчастливил утилькой.
Вряд ли такие поклоны и кувырки в ноги к чему-то приведут... :(

Re: Загадочный owner...

Добавлено: 06 ноя 2007, 14:49
Naidenov
Slavik писал(а):1. Не знаю. Может разработчики ответят или ещё кто-нибудь более сведущий.
2. Стандартные средства - это какие? Можно выгрузить базу в скрипт и соответственно создать новую базу от имени "правильного" владельца. Но я просто делал update RDB$RELATIONS set RDB$OWNER_NAME = "Новый владелец"
После чего опять backup/restore от имени нового владельца.
Хотя подобные идеи и бродили у меня в голове, все равно, благодарю за сопричастность. :wink:
Я пока не теряю надежды, что все-таки существует лучшее и более элегантное решение.

Добавлено: 06 ноя 2007, 14:56
Naidenov
Общий вопрос ко всем, кто интересуется топиком:

Какой смысл в в самостоятельном понятии "владелец БД", если таковым может быть любой пользователь, восстановивший базу? Не могу взять в толк, какой от него "особенный прок", который нельзя было бы получить другим способом?


ЗЫ. Прошу прощение за дотошность, но очень уж хочеться основательно разобраться во всех этих кренделях небесных! :wink:

Добавлено: 06 ноя 2007, 15:33
WildSery
Naidenov писал(а):Какой смысл в в самостоятельном понятии "владелец БД", если таковым может быть любой пользователь, восстановивший базу? Не могу взять в толк, какой от него "особенный толк", который нельзя было бы получить другим способом?
Отправить базу в шатдаун, подключиться к ней после этого, снять бэкап с работающей базы может только владелец (сисдба не в счёт)

Добавлено: 06 ноя 2007, 16:27
kdv
владелец БД это аналог sysdba, и не обязательно автор метаданных. Понятно? Например, VASYA может создать таблицу или процедуру, и он будет ее автором, но он не будет владельцем БД. А владелец БД не станет после рестора автором этой процедуры.

Добавлено: 06 ноя 2007, 16:35
Naidenov
WildSery писал(а):Отправить базу в шатдаун...
Спасибо. Я не знал, что владелец тоже может закрыть базу, и в литературе(статьях) тоже это не встречал. А поскольку пользоваться этим на практике не приходилось, то я и решил поспрошать здешний люд "что да к чему?" :wink:

Добавлено: 06 ноя 2007, 16:41
Naidenov
kdv писал(а):владелец БД это аналог sysdba, и не обязательно автор метаданных. Понятно? Например, VASYA может создать таблицу или процедуру, и он будет ее автором, но он не будет владельцем БД. А владелец БД не станет после рестора автором этой процедуры.
Об этом обо всем я читал :) Непонятна была практическая необходимость "введения" самостоятельного понятия "владелец БД". Проще говоря, на кой ляд лудить мозк какими-то "особенными" пользователями вроде владелец БД, если на практике толку от него, как от козла молока, а все его "супер функции" могут быть преспокойно выполнены кем-то другим (кроме сисдба)! :wink:

Прочитав вот это:
WildSery писал(а):Отправить базу в шатдаун, подключиться к ней после этого, снять бэкап с работающей базы может только владелец (сисдба не в счёт)
Все становиться ясно и понятно! :!:

Добавлено: 06 ноя 2007, 16:57
Naidenov
И все таки остается без ответа мой 2-ой вопрос.
Неужели не существует лучшего и более элегантного решения, кроме как вылить все в скрипт -> залить обратно под другим пользователем(владельцем) (а база то аж 8,2 Гб ), клянчить со слезами на глазах у какого-то дяди супер утилиту или править системные объекты руками??? :?:

Добавлено: 06 ноя 2007, 17:49
Merlin
Naidenov писал(а):И все таки остается без ответа мой 2-ой вопрос.
Неужели не существует лучшего и более элегантного решения, кроме как вылить все в скрипт -> залить обратно под другим пользователем(владельцем) (а база то аж 8,2 Гб ), клянчить со слезами на глазах у какого-то дяди супер утилиту или править системные объекты руками??? :?:
Есть.

1. Разобраться в структуре системных таблиц.
2. Понять, что ещё и в каком порядке (это важно) нужно сделать, кроме изменения owner в rdb$relations, чтоб получилось корректно. Или поиском, поиском... Кстати, когда-то и здесь тоже всё расписывал. Но разобраться - надёжней.
3. Если это в силу некоторых причин религиозного характера приходится делать регулярно (вместо того, чтобы сразу создавать и базу и объекты в ней от нужного пользователя), сделать свою утиль и никому не кланяться.

На всё про всё с экспериментами и парой заломанных тестовых базёнок уйдёт полдня максимум. Но проще, конечно, неделю торчать на форуме, может кто разжует. А может и ляпнет не подумавши.

Добавлено: 06 ноя 2007, 17:55
WildSery
Мне когда-то потребовалось у нескольких объектов владельцев поменять - я за полчаса набросал прогу, генерирующую скрипт для смены владельца методом пересоздания (с учётом зависимостей). Разбираться было лень :)
Вот только таблицы этим методом долго пересоздаются - через временные таблицы данные льются...

ЗЫ: А "автор" этих объектов получил по шее. Чтоб под SYSDBA больше не создавал ничего.

Добавлено: 06 ноя 2007, 18:05
Naidenov
Merlin писал(а):Но проще, конечно, неделю торчать на форуме, может кто разжует. А может и ляпнет не подумавши.
А ты злобный гений. :) Не прав ты здесь, потому что делаешь выводы, до конца не зная всех обстоятельств и ньюансов. Но в любом случае, спасибо. :wink:

Добавлено: 07 ноя 2007, 10:04
Dimitry Sibiryakov
Naidenov писал(а):Вряд ли такие поклоны и кувырки в ноги к чему-то приведут... :(
Почему? До сих пор я не слышал, чтобы автор Owner Migrator-а отказывал кому-то. Другое дело, что в общий доступ он этот утиль не дает - только по личному запросу.

Добавлено: 07 ноя 2007, 14:26
Merlin
Я не злой, я просто трезвый. Уже неделю.

Добавлено: 07 ноя 2007, 15:50
Naidenov
Dimitry Sibiryakov писал(а):Почему? До сих пор я не слышал, чтобы автор Owner Migrator-а отказывал кому-то. Другое дело, что в общий доступ он этот утиль не дает - только по личному запросу.
Благодарю. Попытаю счастья.