• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

Статус
Закрыто для дальнейших ответов.

NickProstoNick

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

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Код:
Set DbTarget = New NotesDatabase(me.Server, me.File)
Call DbTarget.Create("", "", True)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
1. Делать это ручками через толстый клиент
2.Подождать пока отработает репликатор
3.Закрыть толстый клиент
4.Подождать писят секунд
5.Архивировать

;)
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
1. Делать это ручками через толстый клиент
2.Подождать пока отработает репликатор
3.Закрыть толстый клиент
4.Подождать писят секунд
5.Архивировать

;)
мне вот интересно, ты написал лишь бы написать?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
При попытке открыть такую базу возникают ошибки типа:
может проверять статус задач? fixup будет с именем БД
[DOUBLEPOST=1438767094,1438766966][/DOUBLEPOST]и потом - почему бы не экспортить БД через ДХЛ, с зипованием и разворачивать соответ.
можно задействовать СиАПИ (кот. за бэкап и рекавери отвечает), но возни там много...
 

erdi

Green Team
20.08.2008
264
17
BIT
0
1) попробуй 3-й параметр в false если потом только зипование идет
2) я обычно вместо db.create использую db.CreateCopy
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
177
@NickProstoNick,
пока обедал уже ответили..
db.CreateCopy - если нужен только дизайн, так как это новая копия базы, даже ACL не копируется.
Процесс отпускает копию сразу после копирования.
Если нужны документы и ACL, то либо "делаем" сами, либо ждем окончания работы.

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Отвечу всем скопом...
DXL - не вариант. При восстановлении вероятней всего испортятся UNIDы документов. Я же копирую документы с сохранением.
CreateCopy - хорошо, но как быть с шедульными агентами? Если базу вовремя не убрать - можно накосячить. Если база достаточно большая и за время копирования документов сервер успеет поставить в очередь шедульные агенты - проблемы гарантированы

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

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
3
Если задача сбекапить базы - почему бы не использовать репликацию?
Т.е. создается пустая реплика за пределами каталога data и backupdb.replicate ?
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Реплику для бекапа?
Интересно, а что вы будете делать с восстановлением дизайна?
Как восстанавливать историчность документов? Вдруг пользователь ошибся и надо откатиться?
Реплика - это максимум резервная копия, но никак не бекап
 

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
3
Коллега, я бы поделил конечный результат и способ его достижения:)
т.е. вместо копирования базы есть вариант (рабочий кста) его репликации. что дальше делать - решать по ситуации. например сменить репликаид... не говоря об формулах репликации и т.п. вещах.
 

duchan

Green Team
20.09.2006
127
11
BIT
107
Реплика - это максимум резервная копия, но никак не бекап
вот как раз копия это "резервная копия", а реплика - это бекап (!), поскольку при копировании меняет ID реплики, и могут меняться UNID, а вот при репликации такого не будет и вы получите базу которой можно будет подменить текущую, на остановленном сервере, без каких-то танцев с бубном (мой PreBackup по этому принципу и сделан и походу Вы пытаетесь сделать тот же инструмент ;) - там как после копирования, так и после репликации во внешнюю папку надо сделать программно команду на консоль dbcache flush, что бы сервер "забыл" про базу. А вообще, глянте как делал )
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
вот как раз копия это "резервная копия", а реплика - это бекап (!), поскольку при копировании меняет ID реплики, и могут меняться UNID, а вот при репликации такого не будет и вы получите базу которой можно будет подменить текущую, на остановленном сервере, без каких-то танцев с бубном (мой PreBackup по этому принципу и сделан и походу Вы пытаетесь сделать тот же инструмент ;) - там как после копирования, так и после репликации во внешнюю папку надо сделать программно команду на консоль dbcache flush, что бы сервер "забыл" про базу. А вообще, глянте как делал )
Пробовал дучан лет 5 назад. Не понравилось. Много недоработок.
Открою секрет - копировать можно с сохранением UNIDа.
Спорить можно долго, но в принципе "резервная копия" и "бекап" это одно и то же. Но реплика - это ни то ни другое! У репликации совершенно другое назначение!
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Коллега, я бы поделил конечный результат и способ его достижения:)
т.е. вместо копирования базы есть вариант (рабочий кста) его репликации. что дальше делать - решать по ситуации. например сменить репликаид... не говоря об формулах репликации и т.п. вещах.
Как предлагаете решать вопрос с шедульными агентами?
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
@duchan, я не пытаюсь сделать тот же инструмент. Я его сделал в 2010г. после того как попробовал ваш продукт.

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

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

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

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
3
Как предлагаете решать вопрос с шедульными агентами?
Пассажи с анегдотами оставлю без внимания, а на конкретные вопросы могу ответить:)
Из первоначально задачи не понятно - по какому пути создается база. Я не зря сказал что на сервере или клиенте можно создавать базы ЗА пределами каталога нотес - например c:\temp. При этом - шедульные агенты amgr не видит... так же можно программно откл агенты в базе -

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
@rinsk, если бы мне нужны советы по бекапированию - я бы об этом написал!
Я так же не просил рассказать как стопать агенты.

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

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

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

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

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

duchan

Green Team
20.09.2006
127
11
BIT
107
Моя цель - избавиться от ошибки и не более!
ну так я Вам и сказал... Попробуйте, может поможет - мне помогло...
после репликации во внешнюю папку надо сделать программно команду на консоль dbcache flush
- можно еще через возврат "dbcache show" проследить, что базу отпустило, и если не отпустило еще раз flush'нуть...

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
@duchan, я еще в девятом сообщении написал, что все получилось.

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

P.S.
Просто ненавижу когда умничают не по теме.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!