Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.12;
Скачать: CL | DM;

Вниз

Получить список компьютеров, подключенных к конкретной БД   Найти похожие ветки 

 
fearless   (2010-04-19 12:38) [0]

Вступление:
Есть какая-то убожеская программа, писанная на питоне, работает с Firebird-ом 1.5.6 (классик). В центральном офисе на сервере работают одновременно с 3-мя БД: (своя, 1-ого филиала, 2-ого филиала). На филиалах создается резервная копия БД gbak-ом, пересылается по почте на центральный офис. Здесь тем же gbak-ом идет восстановление БД из присланной резервной копии. На центральном офисе работают с офф-лайн копией филиальной БД, поэтому изменений не вносят, просто формируют какие-то отчеты. Теперь суть проблемы: Когда начинаю процесс восстановления БД - выдает ошибку, т.к. база кем-то занята. По имени пользователя установить пользователя, сидящего в БД невозможно из-за дебильности самой программы - все юзеры как на центральном офисе, так и на всех филиалах работают под SYSDBA/masterkey, причем строка подключения записана в самописных библиотеках питона, код которых недоступен. Остается выход один - вычислять по IP-адерсу или имени компьютера. И даже нашел такую программу - InterBase Connections. В ней можно закрыть соединение по IP-адресу, но нет возможности глянуть к какой БД подключен пользователь. В итоге надо или рубить всех, кто потенциально там засиживается, либо обзванивать всех и просить выйти из БД филиала. Пока обзвонишь последнего - первый уже опять залезет.
Хотелось бы иметь нечто, что сначало выкинуло всех из указанной БД, а потом уже запустило gbak.
Есть какие-то соображения по этому поводу?


 
turbouser ©   (2010-04-19 12:48) [1]


> fearless   (19.04.10 12:38)  


> работают одновременно с 3-мя БД: (своя, 1-ого филиала, 2-
> ого филиала)

Oo кошмар.. так трудно наладить репликацию??

> Хотелось бы иметь нечто, что сначало выкинуло всех из указанной
> БД

database shutdown


 
turbouser ©   (2010-04-19 14:47) [2]


> turbouser ©   (19.04.10 12:48) [1]


> работают под SYSDBA/masterkey

А..
тогда shutdown не поможет..


 
turbouser ©   (2010-04-19 14:56) [3]

В FB 2.1 есть табличка MON$ATTACHMENTS с информацией о коннектах..
если же нельзя перейти с 1.5 то остается только смотреть кто подключен к порту FB (3050 по умолчанию) например утилиткой tcpview


 
fearless   (2010-04-19 15:07) [4]

shutdown не помогает, только что опробовал((

На FB 2.1 пытался перейти - не хочет, вываливает огромное кол-во ошибок в консоль отладки. Кто подключен к порту - узнать не проблема, а вот кто к какой БД подключен - вот в чем вопрос. Т.е. из одной базы можно легко выкинуть пользователя (т.к. она посути оффлайн версия актуальной базы), а вот с другой (БД самого офиса) такой фокус делать нельзя (пропадут еще не дай бог какие-то бесценные наборки).


 
turbouser ©   (2010-04-19 15:20) [5]


> fearless   (19.04.10 15:07) [4]

Тогда административно всем объявить - "с 2-х до 3-х у нас на сервере профилактика. Все соединения с бд будут автоматически сброшены. Кто не успел - ССЗБ"
Но все-таки лучше соорудить нормальную репликацию и работать с одной бд.


 
Sergey13 ©   (2010-04-19 15:36) [6]

Можно запускать восстановление ночью, по расписанию.


 
turbouser ©   (2010-04-19 16:00) [7]


> Sergey13 ©   (19.04.10 15:36) [6]
>
> Можно запускать восстановление ночью, по расписанию.
>

А если кто-то не закрыл на ночь программу и коннект болтается?
IMO надо официально предупредить пользователей, чтоб отключались, а в заданный час restart service & backup -)


 
turbouser ©   (2010-04-19 16:02) [8]

Хотя, бардак это, конечно.. Мало того, что юзеры с админскими правами работают, так еще и пароль админский стандартный.. да еще и куча баз..


 
fearless   (2010-04-19 16:16) [9]

>> turbouser

Совершенно согласен (на счет бардака). И если бы была какая-нибудь номинация "Самая дебильная программа года" - это убожище всегда бы брало там Гран-при.

С правами там вообще весело: имен пользователей там нет, есть только пароли, прежде чем создать пользователя надо придумать ему уникальный цифровой пассворд. А если надо дать какие-то особые права на некоторые проводки/операции и т.п. - тогда только через разработчиков. Высылают несколько обновленных скриптов (а их там 6500!!!), в которых будет прописано приблизительно следующее:

если (пароль = "123") тогда делать то-то.... // 123 - это пароль главбуха, ему эта операция разрешена
иначе МесседжБокс("Доступ запрещен")

Кстати, все это зовется "Система управления предприятием"


 
sniknik ©   (2010-04-19 16:38) [10]

> причем строка подключения записана в самописных библиотеках питона, код которых недоступен.
этого не может быть, питон скриптовый язык, если нет исходников то должны быть скомпилированные в его байт-код модули (которые должны нормально "раскомпилироваться", правда не знаю как, не занимался этим (подозреваю что аналогично фохпрошному разборшику, чем занимался раньше, и есть утилита для этого)), если же используется левая "сборка в exe" то она у него тоже разбирается (там что-то типа архива из тех же модулей + интерпретатор питона).


 
fearless   (2010-04-19 17:10) [11]

>>sniknik
строчка ....sysdba ....... masterkey.... содержится в файле password2.pyc
что здесь такого невозможного?

Файл действительно скомпилирован в питоновский байт-код. Декомпилятор питона когда-то видел на сайте, он тоже писан на питоне. В общем не было ни времени ни желания разбираться с этой фигней. Да и смысл какой? Поменять имя пользователя/пароль по умолчанию разве что. Ну будет не sysdba, а ivan, не masterkey, а pupkin. Но его все равно прийдется сделать администратором БД (иначе что-нибудь, но неприменно перестанет там работать). Главная проблема - права доступа раздаются на уровне скриптов, а не БД, и она ведь от этого не уйдет.

Начал копать в сторону репликации БД.


 
sniknik ©   (2010-04-19 17:24) [12]

> ... содержится в файле password2.pyc
> что здесь такого невозможного?
не невозможно то, что содержится, невозможно то что код не доступен... т.к. этот файл из байткода должен легко "разбираться" в обратку. и + для питона, даже с форматированием (отступы), т.к. у него это часть синтаксиса.



Страницы: 1 вся ветка

Текущий архив: 2012.02.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
10-1177068721
Сергей М.
2007-04-20 15:32
2012.02.12
Visual FoxPro Run-Time Library (vfpXX.dll)


6-1239173060
MindWork
2009-04-08 10:44
2012.02.12
IdHTTPProxyServer и tmStreaming


1-1284104769
Alexander_K
2010-09-10 11:46
2012.02.12
Ошибка Interface not supported при подключении через TDCOMConnect


2-1320079010
tombender
2011-10-31 19:36
2012.02.12
сетевая папка


15-1319718265
И. Павел
2011-10-27 16:24
2012.02.12
Можно ли назначить триггер на чужую БД?