Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / shutdown/online из скрипта / 25 сообщений из 41, страница 1 из 2
01.07.2014, 21:23:45
    #38685153
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Родилась тут такая хотелка чтобы базу данных можно было переводить базу данных в shutdown из скрипта

Код: sql
1.
2.
3.
4.
5.
6.
7.
ALTER DATABASE [FORCE] SHUTDOWN [FULL | SINGLE | MULTI];

/*
 * Здесь скрипт для обновления
 */

ALTER DATABASE ONLINE [NORMAL | SINGLE | MULTI];



Так было бы удобно накатывать скрипты без предварительного использования gfix или сервисов.
Хотелось бы выслушать мнения, если будут положительные запулю в трекер.
...
Рейтинг: 0 / 0
02.07.2014, 01:29:15
    #38685283
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов ДенисХотелось бы выслушать мненияэто очень удобно.
...
Рейтинг: 0 / 0
02.07.2014, 01:40:12
    #38685285
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов Денисзапулю в трекер.
Пуляй,я за :)
...
Рейтинг: 0 / 0
02.07.2014, 01:40:41
    #38685286
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов Денис > Хотелось бы выслушать мнения

Ну, в шатдаун ты её, допустим, переведёшь
(хотя тут еще можно пообсуждать), но как
ты её будешь онлайнить из скрипта?

Особенно, если из этого же.:
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.07.2014, 02:00:03
    #38685290
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Гаджимурадов Рустамно как
ты её будешь онлайнить из скрипта?

Особенно, если из этого же.в оракле есть специальные режимы, а в FB не вижу проблем с реконнектом.
...
Рейтинг: 0 / 0
02.07.2014, 08:29:42
    #38685361
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
roadsterв FB не вижу проблем с реконнектом
какой такой реконнект к базе в режиме full shutdown?
...
Рейтинг: 0 / 0
02.07.2014, 09:02:46
    #38685374
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
dimitrfull shutdownя только форс использую
...
Рейтинг: 0 / 0
02.07.2014, 09:04:49
    #38685378
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
roadster,

мы на разных языках разговариваем, похоже. FORCE и FULL никак не мешают друг другу.
...
Рейтинг: 0 / 0
02.07.2014, 09:08:04
    #38685384
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов ДенисРодилась тут такая хотелка чтобы базу данных можно было переводить базу данных в shutdown из скрипта

Код: sql
1.
ALTER DATABASE [FORCE] SHUTDOWN [FULL | SINGLE | MULTI];



что должно произойти с коннектом, выполнившим эту команду? Особенно в режиме FULL. Да и с SINGLE/MULTI тоже интересно - что делать с ранее закешированными этим коннектом объектами, незакоммиченными транзакциями и т.д.

ЗЫ. в синтаксисе еще таймаута не хватает
...
Рейтинг: 0 / 0
02.07.2014, 09:17:11
    #38685400
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
dimitrмы на разных языках разговариваем, похоже. FORCE и FULL никак не мешают друг другу.я не использую фулл, собственно в моём случае наличие возможности переводить БД в даун и затем в он-лайн - это было бы весьма удобно.
просто при проведении обновления структуры БД пользователей просят прекратить работу с клиентским ПО, но бывают такие случаи, когда "ушёл обедать и оставил программу открытой", в данном случае предложенное было бы только плюсом.
ЗЫ знаю, что всё не так и всё не то, я вообще всё неправильно делаю и ничего не понимаю и что у меня всё равно всё сломается, но если не хочется такое реализовывать - не делайте, от этого трекер не поломается.
...
Рейтинг: 0 / 0
02.07.2014, 09:25:04
    #38685409
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов Денисбыло бы удобно накатывать скрипты без предварительного использования gfix или сервисов.я после gfix -shut вызываю gstat -h | grep -i "attributes" и проверяю состояние. Если там нет нужного мне, то дальше ничего запускать нельзя. В твоем варианте нужно будет делать то же самое, т.е. alter database shutdown single, а затем вызвать show database и каким-то образом убедиться, что база действительно находится в требуемом состоянии. И если не так, то quit с выдачей errorlevel'a.
Как ты будешь это делать ?

ЗЫ. Кляуза full в вышеприведенном лишняя, ибо дальше всё равно делать будет нечего, кроме поднятия базы.
...
Рейтинг: 0 / 0
02.07.2014, 09:35:56
    #38685419
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Пожалуй с режимами я переборщил. Если команду сократить до

Код: sql
1.
ALTER DATABASE SHUTDOWN [TIMEOUT <n>];


и использовать при этом только FORCE и режим SINGLE

а для

Код: sql
1.
ALTER DATABASE ONLINE;


режим NORMAL

dimitrчто делать с ранее закешированными этим коннектом объектами, незакоммиченными транзакциями и т.д.
то же самое что и при gfix -shut single -force 0
только своё соединение либо восстанавливать либо как то сохранять
...
Рейтинг: 0 / 0
02.07.2014, 09:42:37
    #38685428
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Таблоидя после gfix -shut вызываю gstat -h | grep -i "attributes" и проверяю состояние.

дык ассинхронность шатдауна вроде правилась недавно, так что он не вернёт управление ОС пока не завершится. Тоже самое должно быть и с оператором.

ТаблоидИ если не так, то quit с выдачей errorlevel'a.
Как ты будешь это делать ?

А вот здесь действительно интересно. Вроде force должно быть всё равно, но даже если будет какая то ошибка, то скорее всего отображать её и просто рвать текущее соединение.
...
Рейтинг: 0 / 0
02.07.2014, 10:00:57
    #38685453
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов Денисdimitrчто делать с ранее закешированными этим коннектом объектами, незакоммиченными транзакциями и т.д.
то же самое что и при gfix -shut single -force 0
только своё соединение либо восстанавливать либо как то сохранять
при gfix "свой" коннект пустой, он еще ничего не делал. А при альтере он мог что угодно с базой наделать. Если его контекст сохранять, то обновление метаданных теоретически может и не пройти.

кроме того, мне интересно, что делать при ошибке в скрипте обновления базы. Она останется в шатдауне? Кто и как будет ее возвращать в онлайн? Если все равно gfix-ом, то нафига козе баян?
...
Рейтинг: 0 / 0
02.07.2014, 10:14:44
    #38685462
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
я имел ввиду вот такую ситуацию

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CONNECT 'localhost:mydatabase' user 'sysdba' password 'masterkey';
-- Если тут кто-то что-то делает, то он ССЗБ
ALTER DATABASE SHUTDOWN 0;
-- тут неявно происходит переконнект
/*
 * Свой скрипт обновлений
 */
ALTER DATABASE ONLINE;



dimitrкроме того, мне интересно, что делать при ошибке в скрипте обновления базы. Она останется в шатдауне? Кто и как будет ее возвращать в онлайн? Если все равно gfix-ом, то нафига козе баян?
если SHUTDOWN выполняется как gfix -shut single -force 0 то никто не помешает сделать вот так

Код: sql
1.
2.
CONNECT 'localhost:mydatabase' user 'sysdba' password 'masterkey';
ALTER DATABASE ONLINE;
...
Рейтинг: 0 / 0
02.07.2014, 10:14:45
    #38685463
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
вообще, если следовать внутренней реализации шатдауна и максимально соответствовать GFIX-у, то опция шатдауна должна быть у команды CONNECT. Но это означает, что это будет фича утилиты ISQL, а не языка SQL.
...
Рейтинг: 0 / 0
02.07.2014, 10:16:05
    #38685465
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
dimitrвообще, если следовать внутренней реализации шатдауна и максимально соответствовать GFIX-у, то опция шатдауна должна быть у команды CONNECT. Но это означает, что это будет фича утилиты ISQL, а не языка SQL.
ну это было бы неплохо, пусть только и в ISQL
...
Рейтинг: 0 / 0
02.07.2014, 10:17:33
    #38685468
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов Денисну это было бы неплохо, пусть только и в ISQL
уверен, что куча людей выполняют скрипты обновления через компоненты доступа. Они тебя побьют камнями.
...
Рейтинг: 0 / 0
02.07.2014, 10:31:40
    #38685494
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
понял, бесперспективно.
Хотя в ISQL можно сделать отдельные команды (только не CONNECT), которые позволяли бы делать эти действия. А что касается других инструментов (типа IBEScript), то они если захотят реализуют у себя аналоги.
...
Рейтинг: 0 / 0
02.07.2014, 11:02:51
    #38685529
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов Денис,

IMHO, твой вариант с ALTER не совсем уж безнадежен. Просто не надо действовать нахрапом, надо тщательно обдумать все нюансы.
...
Рейтинг: 0 / 0
02.07.2014, 11:33:01
    #38685565
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
dimitr,

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

Код: sql
1.
2.
3.
DELETE FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION;
COMMIT;


в начале скрипта позволяет сделать первую часть, но не гарантирует что посереди выполнения моего скрипта кто нибудь не влезет и не обломит его.
Сейчас для этого есть штатный механизм gfix -shut single -force 0, но для него требуется дополнительно перед накаткой скрипта подсоединяться к сервису. Кроме того после его накатки необходимо присоединиться ещё раз чтобы вернуть базу в ONLINE.

dimitrчто делать с ранее закешированными этим коннектом объектами, незакоммиченными транзакциями и т.д.

транзакции откатывать и сбрасывать кэш метаданных (если это возможно)

P.S. Идея возникла не на пустом месте, а из того как это реализовано в Oracle (хотя там это не для того чтобы накатывать обновления). Вот и подумалось, что у нас можно сделать примерно такое же. Ну про нюансы я конечно не подумал.
...
Рейтинг: 0 / 0
02.07.2014, 11:52:52
    #38685586
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов Денистранзакции откатывать и сбрасывать кэш метаданных (если это возможно)
вариант с ССЗБ лично мне нравится больше :-)
...
Рейтинг: 0 / 0
02.07.2014, 11:53:53
    #38685588
NikolayV81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов Денисdimitrчто делать с ранее закешированными этим коннектом объектами, незакоммиченными транзакциями и т.д.

транзакции откатывать и сбрасывать кэш метаданных (если это возможно)

P.S. Идея возникла не на пустом месте, а из того как это реализовано в Oracle (хотя там это не для того чтобы накатывать обновления). Вот и подумалось, что у нас можно сделать примерно такое же. Ну про нюансы я конечно не подумал.

так в оракле проще по причине того что любое изменение метаданных = commit
...
Рейтинг: 0 / 0
02.07.2014, 12:22:25
    #38685616
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
dimitrвариант с ССЗБ лично мне нравится больше :-)
Кстати да. На первый взгляд это ничем не грозит. Просто оператор ALTER DATABSAE SHUTDOWN не выполнится и бросит ошибку, а дальнейший скрипт если он не может выполнится не выполнится, т.е. будет вести себя так как будто этого оператора и не было.

NikolayV81так в оракле проще по причине того что любое изменение метаданных = commit
для FB пофиг, ибо даже если сделать также (SET AUTODDL ON), то всё равно для метаданных в ISQL стартуется отдельная транзакция.
...
Рейтинг: 0 / 0
02.07.2014, 12:29:14
    #38685626
NikolayV81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shutdown/online из скрипта
Симонов ДенисNikolayV81так в оракле проще по причине того что любое изменение метаданных = commit
для FB пофиг, ибо даже если сделать также (SET AUTODDL ON), то всё равно для метаданных в ISQL стартуется отдельная транзакция.

Ну так это реализация isql, у оракла же сервер сам изменения метаданных в транзакции не оборачивает, и проще как раз с точки зрения того как такие вещи реализуются на сервере.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / shutdown/online из скрипта / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]