Решено Создание баз данных

Тема в разделе "Lotus - Программирование", создана пользователем NickProstoNick, 5 авг 2015.

Статус темы:
Закрыта.
  1. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Всем привет!
    Темы уже поднимались, но закрыты. Так что вот... вопрос собственно задача следующая:
    необходимо создать БД и запаковать ее в zip. C этим проблем нет, но есть проблемы с базой после распаковки из архива. При попытке открыть такую базу возникают ошибки типа:
    Код (Text):
    This database cannot be opened because a consistency check of it is needed
    Код (Text):
    File truncated - file may have been damaged
    Код (Text):
    RRV bucket is corrupt.
    На сколько я понимаю - должно пройти какое-то количество времени, после которого база будет полностью готова к работе.

    Так собственно вопрос - как определить, что база сформирована полностью и ее можно архивировать?
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Как именно создается? Сервак мог еще не отпустить.
     
  3. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Код (LotusScript):
    Set DbTarget = New NotesDatabase(me.Server, me.File)
    Call DbTarget.Create("", "", True)
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    1. Делать это ручками через толстый клиент
    2.Подождать пока отработает репликатор
    3.Закрыть толстый клиент
    4.Подождать писят секунд
    5.Архивировать

    ;)
     
  5. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    мне вот интересно, ты написал лишь бы написать?
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    может проверять статус задач? fixup будет с именем БД
    [DOUBLEPOST=1438767094,1438766966][/DOUBLEPOST]и потом - почему бы не экспортить БД через ДХЛ, с зипованием и разворачивать соответ.
    можно задействовать СиАПИ (кот. за бэкап и рекавери отвечает), но возни там много...
     
  7. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    1) попробуй 3-й параметр в false если потом только зипование идет
    2) я обычно вместо db.create использую db.CreateCopy
     
  8. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    @NickProstoNick,
    пока обедал уже ответили..
    db.CreateCopy - если нужен только дизайн, так как это новая копия базы, даже ACL не копируется.
    Процесс отпускает копию сразу после копирования.
    Если нужны документы и ACL, то либо "делаем" сами, либо ждем окончания работы.

    У меня так "самописная" архивация сделана:
    1. Делаем копию db.CreateCopy
    2. Копируем ACL
    3. Копируем документы
     
  9. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Отвечу всем скопом...
    DXL - не вариант. При восстановлении вероятней всего испортятся UNIDы документов. Я же копирую документы с сохранением.
    CreateCopy - хорошо, но как быть с шедульными агентами? Если базу вовремя не убрать - можно накосячить. Если база достаточно большая и за время копирования документов сервер успеет поставить в очередь шедульные агенты - проблемы гарантированы

    В общем проблему я кажется решил (тестирую). Вчера думал об этом, но почему-то не сделал. Сегодня после сообщения @lmike добавил фиксап и компакт через объект базы. Один час - полет нормальный
     
  10. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    799
    Симпатии:
    78
    Если задача сбекапить базы - почему бы не использовать репликацию?
    Т.е. создается пустая реплика за пределами каталога data и backupdb.replicate ?
     
  11. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Реплику для бекапа?
    Интересно, а что вы будете делать с восстановлением дизайна?
    Как восстанавливать историчность документов? Вдруг пользователь ошибся и надо откатиться?
    Реплика - это максимум резервная копия, но никак не бекап
     
  12. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    799
    Симпатии:
    78
    Коллега, я бы поделил конечный результат и способ его достижения:)
    т.е. вместо копирования базы есть вариант (рабочий кста) его репликации. что дальше делать - решать по ситуации. например сменить репликаид... не говоря об формулах репликации и т.п. вещах.
     
  13. duchan

    duchan Well-Known Member

    Регистрация:
    20 сен 2006
    Сообщения:
    106
    Симпатии:
    3
    вот как раз копия это "резервная копия", а реплика - это бекап (!), поскольку при копировании меняет ID реплики, и могут меняться UNID, а вот при репликации такого не будет и вы получите базу которой можно будет подменить текущую, на остановленном сервере, без каких-то танцев с бубном (мой PreBackup по этому принципу и сделан и походу Вы пытаетесь сделать тот же инструмент ;) - там как после копирования, так и после репликации во внешнюю папку надо сделать программно команду на консоль dbcache flush, что бы сервер "забыл" про базу. А вообще, глянте как делал DuChan PreBackup, v1.1)
     
  14. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Пробовал дучан лет 5 назад. Не понравилось. Много недоработок.
    Открою секрет - копировать можно с сохранением UNIDа.
    Спорить можно долго, но в принципе "резервная копия" и "бекап" это одно и то же. Но реплика - это ни то ни другое! У репликации совершенно другое назначение!
     
  15. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Как предлагаете решать вопрос с шедульными агентами?
     
  16. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    @duchan, я не пытаюсь сделать тот же инструмент. Я его сделал в 2010г. после того как попробовал ваш продукт.

    @rinsk, коллега не делайте круги на воде...
    Я просто спросил как побороть ошибку при создании базы. Я ни слова не говорил о репликациях и бекапировании!
    Моя цель - избавиться от ошибки и не более!

    Еще чуть-чуть и будет как в анекдоте:
    Но раз пошла такая пьянка...
    Почему не реплика?
    Потому что практически нет никакого контроля. Не говоря уже о том, что реплика предназначена не для бекапирования. Реплика - это синхронизация источников (с удалением/без удаления но это синхронизация).
    При реплиикации обновляется вся база.
    При реплике нет контроля за шедульными агентами (кто из писателей заботится о том, чтоб агент работал только на продуктиве?).

    Бекапирование - это слепок на момент времени без последующего обновления копии.
    Бекап не должен реплицироваться с источником.
    А проблема сохранения UNIDа при копировании - это не проблема
     
    #16 NickProstoNick, 6 авг 2015
    Последнее редактирование модератором: 6 авг 2015
  17. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    799
    Симпатии:
    78
    Пассажи с анегдотами оставлю без внимания, а на конкретные вопросы могу ответить:)
    Из первоначально задачи не понятно - по какому пути создается база. Я не зря сказал что на сервере или клиенте можно создавать базы ЗА пределами каталога нотес - например c:\temp. При этом - шедульные агенты amgr не видит... так же можно программно откл агенты в базе - http://www.openntf.org/projects/codebin/codebin.nsf/0/0A43C22F85C611D686256EC1002566B5

    P.S. Ну а реплика\не реплика - Как корабль назовешь - так он и поплывет. ктож знает что у Вас за задачи - были озвучены варианты и ничего более. Переубеждать никто не собирается.
     
  18. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    @rinsk, если бы мне нужны советы по бекапированию - я бы об этом написал!
    Я так же не просил рассказать как стопать агенты.

    Я же спросил об ошибках при открытии базы.
    Нужно больше информации по коду? Спросите!
    Хотя какой еще информации надо?
    Есть описание проблемы, вторым моим сообщением приведен метод создания базы
    Код (LotusScript):
    Set DbTarget = New NotesDatabase(me.Server, me.File)
    Call DbTarget.Create("", "", True)
    Ну разве что ремарки, что код выполняется на сервере. База может быть как в каталоге Data так и за его пределами.

    Но уверен, что если Вы узнаете для чего создается база - это не поможет исправить ошибки.

    Мне нужно решить проблему в существующем процессе и коде. Мне не нужны альтернативные методы. На изменение процесса нет времени.
    Если вам нечего сказать по теме - пропускайте ее! Демагогию разводить не надо.

    @lmike, закрой тему, плз. Я вопрос решил.

    P.S.
    Если для Вас нет разницы реплика или копия... даже не знаю что сказать...
     
  19. duchan

    duchan Well-Known Member

    Регистрация:
    20 сен 2006
    Сообщения:
    106
    Симпатии:
    3
    ну так я Вам и сказал... Попробуйте, может поможет - мне помогло...
    - можно еще через возврат "dbcache show" проследить, что базу отпустило, и если не отпустило еще раз flush'нуть...

    P.S. ... и не надо нервничать ...
     
  20. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    @duchan, я еще в девятом сообщении написал, что все получилось.

    И кстати, сбрасывать кеш не обязательно. Проблема не в том что база занята сервером, а в том что в базе не сформирована структура.
    Как я уже писал - компакта оказалось достаточно. Для копии во вне Data - даже этого не понадобилось.

    P.S.
    Просто ненавижу когда умничают не по теме.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей