powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / shutdown/online из скрипта
41 сообщений из 41, показаны все 2 страниц
shutdown/online из скрипта
    #38685153
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Родилась тут такая хотелка чтобы базу данных можно было переводить базу данных в 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
shutdown/online из скрипта
    #38685283
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисХотелось бы выслушать мненияэто очень удобно.
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685285
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисзапулю в трекер.
Пуляй,я за :)
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685286
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис > Хотелось бы выслушать мнения

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

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

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

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

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



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

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

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

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


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

а для

Код: sql
1.
ALTER DATABASE ONLINE;


режим NORMAL

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

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

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

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

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

Код: 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
shutdown/online из скрипта
    #38685463
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще, если следовать внутренней реализации шатдауна и максимально соответствовать GFIX-у, то опция шатдауна должна быть у команды CONNECT. Но это означает, что это будет фича утилиты ISQL, а не языка SQL.
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685465
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrвообще, если следовать внутренней реализации шатдауна и максимально соответствовать GFIX-у, то опция шатдауна должна быть у команды CONNECT. Но это означает, что это будет фича утилиты ISQL, а не языка SQL.
ну это было бы неплохо, пусть только и в ISQL
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685468
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисну это было бы неплохо, пусть только и в ISQL
уверен, что куча людей выполняют скрипты обновления через компоненты доступа. Они тебя побьют камнями.
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685494
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял, бесперспективно.
Хотя в ISQL можно сделать отдельные команды (только не CONNECT), которые позволяли бы делать эти действия. А что касается других инструментов (типа IBEScript), то они если захотят реализуют у себя аналоги.
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685529
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

IMHO, твой вариант с ALTER не совсем уж безнадежен. Просто не надо действовать нахрапом, надо тщательно обдумать все нюансы.
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685565
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
shutdown/online из скрипта
    #38685586
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денистранзакции откатывать и сбрасывать кэш метаданных (если это возможно)
вариант с ССЗБ лично мне нравится больше :-)
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685588
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисdimitrчто делать с ранее закешированными этим коннектом объектами, незакоммиченными транзакциями и т.д.

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

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

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

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

Ну так это реализация isql, у оракла же сервер сам изменения метаданных в транзакции не оборачивает, и проще как раз с точки зрения того как такие вещи реализуются на сервере.
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685632
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81,

такое поведение и для FB обсуждалось, но пока не пришли к единому мнению правильно ли оно. Тем не менее это никак не поможет если в обычной транзакции в том же коннекте до выполнения SHUTDOWN процедура или индекс попал в кэш метаданных. В оракле вообще многое по другому устроено.
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685650
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисПросто оператор ALTER DATABSAE SHUTDOWN не выполнится и бросит ошибку, а дальнейший скрипт если он не может выполнится не выполнится, т.е. будет вести себя так как будто этого оператора и не было.
ALTER как раз выполнится без ошибок, свалиться может скрипт. Но если коннект что-то до этого наделал, а потом вдруг решил апгрейдить базу - то ССЗБ, получай ошибку при апгрейде.

Вариант для продолжения дискуссии:
Код: sql
1.
ALTER DATABASE [FORCE] SHUTDOWN [FOR {SHARED | EXCLUSIVE | NO} ACCESS] [TIMEOUT <seconds>]


- NO ACCESS можно заменить на PROTECTED ACCESS
- SHARED ACCESS = multi, EXCLUSIVE ACCESS = single, NO ACCESS = full
- если SHARED / EXCLUSIVE ACCESS, то после шатдауна конкурентов текущий коннект остается активным
- если NO ACCESS, то текущий коннект либо самоубивается, либо помечается как убитый (и требует явного дисконнекта клиентом)
- необходимость NO ACCESS обсуждаема (ведь обратного пути через SQL нет)
- какой режим шатдауна умолчательный - обсуждаемо (EXCLUSIVE?)

ну и
Код: sql
1.
ALTER DATABASE ONLINE [FOR {FULL | SHARED} ACCESS]


- по умолчанию - FOR FULL ACCESS
- онлайнить в EXCLUSIVE ACCESS нельзя просто потому, что при активном full shutdown к базе нельзя подключиться для выполнения ALTER
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685687
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrNO ACCESS можно заменить на PROTECTED ACCESS
NO ACCESS мне нравится больше. Всё таки protected переводится как защищённый, что может сбить с толку.
NO ACCESS в принципе лишним не будет. Раз сделал, то знал на что идёшь, обратно только через gfix.
По мне так для шатдауна по умолчанию режим EXCLUSIVE логичен, SHARED требуется значительно реже.
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685700
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

согласен. SHARED вообще больше для совместимости оставлен, хотя изредка он таки бывает полезен. У того же оракла есть что-то аналогичное, только названное иначе.
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685779
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По результатам этого топика можно новую фичу в трекер забрасывать или ещё мысли будут?
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685812
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давай подождем, может какие-то еще спорные моменты вспомнятся...
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38685844
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

там помимо FORCE есть ещё опции
-at[tach
-tr[an]
хотя я не думаю что их есть смысл реализовывать в скриптовом варианте
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38686269
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr>

Я таки не понял, в каком виде ты желаешь
видеть сабж в трекере - как параметр ISQL ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38686274
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

пока что идет речь про команду SQL
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38686277
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> такое поведение и для FB обсуждалось, но пока не
Симонов Денис> пришли к единому мнению правильно ли оно.

А когда, где и кто пришли к таком мнению? А-то лично
мне представляется очевидным, что это неправильно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38686281
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

это было в fb-devel, кто-то предложил что можно сделать поведение DDL команд как в Оракл, кто-то говорил о версионности и транзакционности DDL, но вроде ни до чего не договорились
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38686293
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> вроде ни до чего не договорились

Ну и слава Богу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38686294
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денискто-то предложил что можно сделать поведение DDL команд как в Ораклcommit на каждый DDL-оператор, да еще в той же транзакции, что сейчас, возможно, использовалась для DML ? упаси бог...
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38686302
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да речь даже не о DML (фиг бы с ним, там только селекты нужны, по идее).
Просто автокоммит, фактически, означает отказ от транзакционности вообще.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38686723
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисГаджимурадов Рустам,

это было в fb-devel, кто-то предложил что можно сделать поведение DDL команд как в Оракл, кто-то говорил о версионности и транзакционности DDL, но вроде ни до чего не договорились

И не нужно, это одна из проблем с разработкой под оракл, не нужно ИМХО её множить.
...
Рейтинг: 0 / 0
shutdown/online из скрипта
    #38687075
Поручик ·· Ржевский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / shutdown/online из скрипта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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