Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обновление структуры БД / 25 сообщений из 30, страница 1 из 2
18.05.2004, 13:14:16
    #32522037
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
ТЗ: есть несколько подразделений, на которых стоит одинаковый софт
время от времени возникает необходимость в изменении структуры баз (изменения законодательства, проч.).

Хотелось бы услышать мнение "авторитетов" :)
кто как обновляет структуру баз (FB1.5)?

Используя postgresql, я делал так:
skeleton.sql - "скелет" базы
updateXXX.sql - апдейт до версии ХХХ

пользователь при получении апдейта ручками пускал psql и обновлялся до версии ХХХ.

В FB1.5 столкнулся с проблемой некорректной работой команд DDL при
выполнении скрипта из файла. Подозреваю, что из-за неявного commit
после команды DDL
...
Рейтинг: 0 / 0
18.05.2004, 13:16:01
    #32522042
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Конкретнее о своих граблях, плс.
Чем выполнял скрипт?
...
Рейтинг: 0 / 0
18.05.2004, 13:42:33
    #32522124
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
do_sql.bat <update_script> <password>

Код: plaintext
1.
2.
3.
4.
do_sql.bat:
 -----------------------------------
 
c:\progra~ 1 \Firebird\Bin\isql <base> -u SYSDBA -p % 2  -i % 1 

Например,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
update018.sql:
 -----------------------------------
 
create generator accountsID;
set generator accountsID to  0 ;
create table accounts (
id         int default  0  not null primary key,
num        char( 14 ) default '' not null,
name       char( 50 ) default '' not null);
insert into accounts (id, num, name) 
              values ( gen_id(accountsID, 1 ), '000000000000', 'введите транзитный счет');

alter table receiv add
    trans_acc int default  1  references accounts;
update receiv set trans_acc= 1 ;

alter table document add
    trans_acc char( 14 ) default '' not null;
alter table a_document add
    trans_acc char( 14 ) default '' not null;

DECLARE EXTERNAL FUNCTION abs 
    DOUBLE PRECISION
    RETURNS DOUBLE PRECISION BY VALUE
    ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf';

update document set trans_acc=(select trans_acc from params);    
update a_document set trans_acc=(select trans_acc from params);    
update params set ver='0.18';
commit;

вылетел на

Код: plaintext
1.
2.
alter table receiv add
    trans_acc int default  1  references accounts;
с сообщением "таблица accounts занята"
...
Рейтинг: 0 / 0
18.05.2004, 13:47:34
    #32522138
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
хех, может ему не понравился default 1 references accounts
при том что изменения в accounts не были подтверждены?
...
Рейтинг: 0 / 0
18.05.2004, 13:52:05
    #32522153
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Перед тем как строить foreign key, ты должен всех выгнать из базы.
Т.к. у IB есть такя (неприятная) особенность - внешние ключи строятся только при монопольном использовании таблицы.
...
Рейтинг: 0 / 0
18.05.2004, 13:59:21
    #32522184
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Понятно. Все это решаемо, основная проблема в том, что структура
базы между ЯВНЫМИ

Код: plaintext
1.
2.
set transaction;
... 
commit;

не является величиной постоянной :(

Собственно, почему и появился вопрос :)
...
Рейтинг: 0 / 0
18.05.2004, 14:06:59
    #32522219
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
2Мимопроходящий: но за информацию спасибо. Не знал...

ЗЫ. Идём обедать? :)
...
Рейтинг: 0 / 0
18.05.2004, 14:08:05
    #32522221
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
А ты в где?
...
Рейтинг: 0 / 0
18.05.2004, 15:34:54
    #32522486
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Кривой Рог....

А чё, никто таким извращением не занимается? (обновлением структуры баз)
...
Рейтинг: 0 / 0
18.05.2004, 15:43:40
    #32522512
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Это актульно (и несколько проблематично) только для тиражируемых продуктов.
Когда у заказчика нет собственного DBA, а зачастую и вообще квалифицированного IT-специалиста.
...
Рейтинг: 0 / 0
18.05.2004, 15:47:23
    #32522523
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
...или подразделения разбросаны по большой территории
Ээээх.
...
Рейтинг: 0 / 0
18.05.2004, 17:52:15
    #32522789
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Шо ж, стреляться?
Или не обновлятся?
Или коммерческо-профессиональная тайна?
...
Рейтинг: 0 / 0
18.05.2004, 17:56:20
    #32522799
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Ну дык и обновляй. Где проблема-то?
...
Рейтинг: 0 / 0
18.05.2004, 18:02:03
    #32522806
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Дык, допустим, не выгнали при обновлении всех из базы.
Запустили апдейт.
Часть изменений принята, часть нет. Что дальше? :(
...
Рейтинг: 0 / 0
18.05.2004, 18:26:24
    #32522845
vovan1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
авторДык, допустим, не выгнали при обновлении всех из базы.

ВЫГАНЯЙ ВСЕГДА ВСЕХ, особенно если у тебя IB6, у меня по этой оплошности база 2 раза сыпалась, да так что никакие DatabaseValidation не помогли.
...
Рейтинг: 0 / 0
18.05.2004, 18:52:06
    #32522893
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
2vovan1: моя бы воля я бы их ваще туда не пускал :))

Код: plaintext
1.
2.
3.
gfix <base> -shut -force  5 
...
gfix <base> -online

вписал...
...
Рейтинг: 0 / 0
18.05.2004, 18:56:40
    #32522896
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Учти, не безопасно.
...
Рейтинг: 0 / 0
18.05.2004, 19:09:11
    #32522908
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
2Мимопроходящий:

А почему/как лучше?
...
Рейтинг: 0 / 0
18.05.2004, 19:22:47
    #32522920
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Потому, что в IB/FB принудительное снятие коннекта не всегда проходит без последствий. Существует вероятность порчи базы. Пусть небольшая, но она есть. Кроме того, ShutDown не отключает юзеров фамилия которых SYSDBA, а также владельца/создателя (owner) базы. Ну и в дополнение к этому, если у тебя CS, то ещё и у него есть свои особенности.
Наиболее безопасно - сказать народу: "Тётеньки и дяденьки (буде такие есть)! Все нафик быстренько закрыли свои аппликации! Через 5 минут начну отстрел!". И только после этого делать ShutDown, но не -force, а -tran . Ну а далее - по обстоятельствам.
...
Рейтинг: 0 / 0
18.05.2004, 19:52:22
    #32522944
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
...вздыхаю...
...
Рейтинг: 0 / 0
18.05.2004, 20:28:01
    #32522968
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Т.е. весь народ бегает с палками/громкоговорителями, выдёргивает сетевые кабели как со времен dbf/btr?

А как же прогресс? :)
...
Рейтинг: 0 / 0
18.05.2004, 20:30:16
    #32522971
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
А, понял :) Прогресс - это выскакивающее окошко:
"Администратор запретил доступ к БД, а кассир вышел на пару часиков,
поэтому к обеду, если нормально проапдейтимся, Вы сможете начать работу"

:)
...
Рейтинг: 0 / 0
19.05.2004, 11:12:20
    #32523433
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Не нужно ничего выдёргивать.
Делаешь -shut - tran.
Новые транзакции не стартуются.
Но старые транзакции юзеры должны завершить до окончания таймаута.
Если они сидят и спят, то ShutDown не пройдёт.
Смотришь кто из юзеров остался сидеть в базе.
Говоришь: "Убью, 6ля!" (персонально тому, кто спит).
Повторяешь -shut - tran.
Если прошло успешно, накатываешь апдейт.
Поднимаешь базу в on-line.
Даёшь отмашку: "Всё! Можно уже!"
Идёшь пить пиво.
...
Рейтинг: 0 / 0
19.05.2004, 11:54:15
    #32523581
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
А подскажи-ка, пожалуйста, как можно из скрипта проверить
наличие подключенных юзеров и отвалиться?
...
Рейтинг: 0 / 0
19.05.2004, 12:15:49
    #32523635
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление структуры БД
Если у тебя CS, то можно средствами ОС.
Если же SS, то придётся писать свою небольшую утилиту командной строки,
которая бы дёргала isc_database_info( ) с параметром isc_info_user_names . Написать такую програмку - делов на пару часов. И я честно говоря удивлён, почему ничего подобного не включено в дистрибутив.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обновление структуры БД / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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