powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Восстановление данных из журнала транзакций после обрезания БД
14 сообщений из 14, страница 1 из 1
Восстановление данных из журнала транзакций после обрезания БД
    #35177639
exp3rt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выполняю обрезание БД за 3 года работы. Снял остатки с регистров и документов . Удалил таблицы _1sbkttl, _1sbkttlc, _1saccsel, _1ssbsel. Удалил из таблицы _1SENTRY записи за выбранный период, пометил на удаление записи в журнале документов _1sjournal, пометил на удаление записи в журнале операций _1soper, удалил записи в регистрах за интересующий период.
Общее количество удалённых записей более 50 миллионов. Выполнил упаковку БД средствами SQL Server. Размер физического файла уменьшился. Файл журнала транзакций остался прежнего размера.
В 1с запустил тестирование и восстановление базы и пересчёт итогов. Пересчёт итогов выполнялся около 7 с половиной часов. После пересчёта все удалённые записи восстановились. Насколько я понимаю, это могло быть выполненно только посредством журнала транзакций, хотя могу ошибаться.
Кто-нибудь сталкивался с подобной ситуацией? Если да, то как её обходили?
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35177727
koi8_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все нужно удалять штатными средствами, т.к. "завязок" очень много! А восстановление прошло НЕ из лога транзакций - просто что-то ты недо удалял в системе.
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35177750
exp3rt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уверен, что удалил всё. А именно:
1. Отбор проводок по счетам;
2. Остатки (сальдо и обороты по субконто);
3. Итоги ( сальдо и обороты по синтетическим счетам);
4. Проводки;
5. Журналы документов;
6. Операции;
7. Отбор проводок по субконто.
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35177852
exp3rt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли отключить журнал транзакций перед пересчётом итогов, а после пересчёта обратно включить его? Повлияет ли это на рассмтриваемую проблему? Если да, то как это можно сделать?
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35177880
koi8_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Журнал транзакций отключать нельзя.
2. Удалено не все, дело в том, что в Вашем списке удаленных объектов нет а) документов (шапок) б) документов (табличных частей), т.е. таблиц DT*** и DH***. При тестировании система увидела, что документы существуют и их восстановила.
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35178001
exp3rt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблицы DH****, DT**** удалял. Причём не каждый док содержит табличную часть. Удалял их тоже, номера таблиц брал через ссылку в журнале документов.

Удалял таким образом:
declare @like1 varchar (10)
set @like1='2004%'
declare @like2 varchar (10)
set @like2='2005%'
declare @like3 varchar (10)
set @like3='2006%'
declare @like4 varchar (10)
set @like4='2007%'

/*3140 Документ Аванс */
delete from DH3140
where IDDOC IN (select IDDOC from _1SJOURN
where DATE_TIME_IDDOC like @like1 or DATE_TIME_IDDOC Like @like2
or DATE_TIME_IDDOC Like @like3 or DATE_TIME_IDDOC Like @like4)
delete from DT3140
where IDDOC IN (select IDDOC from _1SJOURN
where DATE_TIME_IDDOC like @like1 or DATE_TIME_IDDOC Like @like2
or DATE_TIME_IDDOC Like @like3 or DATE_TIME_IDDOC Like @like4)
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35178022
koi8_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем так хитро??? Тебе нужно удалить ВСЕ документы? Тогда просто удаляй полностью таблицы. Кстати, а ты чистил таблицу периодических значений?
Или лучше напиши, какой результат хочешь видеть!
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35178094
exp3rt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хочу обрезать БД за 3 года работы.
Поэтому и режу
1. Отбор проводок по счетам;
2. Остатки (сальдо и обороты по субконто);
3. Итоги ( сальдо и обороты по синтетическим счетам);
4. Проводки;
5. Журналы документов;
6. Операции;
7. Отбор проводок по субконто.
После обрезания, делаю тестирование и исправление БД и пересчёт итогов.
Документы мне нужно резать не все, а определённый список, поэтому так хитро и режу.
А что за таблица периодических значений?
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35178773
koi8_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Таблица с константами _1sconst - так по моему называется (нет баз 7.7 под рукой)
2. Так, если мне не изменяет память, существует обработка для "свертки" базы. Т.е. говоришь ей по какую дату тебе нужно "обрезать" данные и все... Единственное, что по скорости обработка - не фонтан.
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35178915
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. 1С не может чего-либо восстановить непосредственно из журнала транзакций. Также как и любая программа, работающая на уровне SQL-запросов, с SQL-сервером. Просто нет таких команд SQL, которые позволяли бы это делать (по крайней мере, после фиксации транзакции). :) Из всего ПО мне известна лишь одна спец.утилита, которая лезет на низком уровне в журнал транзакций, на уровне байтов разбирает его содержимое и что-то подобное может сделать. Но это не 1С... :)

2. "Отключить" журнал транзакций в MS SQL Server можно только вместе с базой данных, либо на худой конец, оставив БД в режиме дальнейшего восстановления, в котором она работать не может (остается недоступной).

3. Файлы журнала транзакций в MS SQL используются для поддержания механизма транзакций (двухступенчатой фиксации любых изменений данных) и механизмов репликации и используются только самим SQL-сервером, и только для этих целей, а более ни для каких. Поскольку любые операции с базой данных выполняются либо в явно объявленной, либо в неявной, но транзакции , то никакая модификация данных вообще не может производиться в принципе без журнала транзакций.

4. Таким образом, восстановление данных прошло из оставшейся в самой базе данных информации. Если только Вы не восстанавливали базу данных из архива.
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35178930
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
5. Если нужно урезать размер файла журнала транзакций, для этих целей используется команда DBCC SHRINKFILE. Однако, урезать его можно только при соблюдении ряда условий. В частности, только после его очистки от транзакций (например, командой Backup Log).

P.S. А задача-то как стоит? Освободить место на диске? Избавиться от мешающей информации? Или ускорить реакцию системы?
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35178955
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.P.S. Если у вас распухает до бесконечности размер журнала транзакций, скоре всего, выставленная в свойствах БД Recovery Model (модель восстановления) не соответствует фактически используемой практике архивирования данных.

Если Recovery Model установлена в Simple, то журнал транзакций будет очищаться регулярно сам. Но архивировать вы сможете не транзакции, а только содержимое базы данных уже в каком-то зафиксированном виде. Поэтому и восстановить сможете данные только на момент архивирования.

Если Recovery Model установлена в Full или в Bulk-Logged, то журнал транзакций сам не очищается. Ожидается, что DBA будет архивировать кроме самой БД еще и журнал транзакций - и он очищается именно после архивирования журнала транзакций (команда Backup Log). Если же DBA не настроил процедуру автоматической архивации лога, и не архивирует его руками, журнал транзакций может вырасти до таких размеров, что никаких дисков не хватит. И на многие порядки превысить размер файла БД.

Лично я предпочитаю использовать Recovery Model = Bulk-Logged. Это позволяет восстанавливать информацию в базе данных по состоянию на любой момент времени, а не только на момент архивирования. Более того, такая модель восстановления позволяет восстанавливать данные на момент непосредственно перед выполненной ошибочно операцией (например, после случайного удаления важной информации), даже если последнее архивирование производилось задолго до выполнения ошибочной операции, и между периодом архивирования и ошибочной операцией уже было введено много ценных данных, которые не хочется потерять. Эта особенность делает такую Recovery Model особо ценной. Нужно только не забывать архивировать журнал транзакций... :)
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35179142
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Поясню, почему Bulk-Logged предпочитаю Full. Большинство систем (как 1С, так и ИНФИН, которым мы тоже пользуемся) хранит часть информации в BLOB-полях, операции с которыми не во всех режимах попадают в журнал транзакций. Поэтому при восстановлении из архива с использованием бэкапа лога часть информации может не восстановиться при использовании RM=Full. А в BLOB-полях содержатся, например, шаблоны форм.
...
Рейтинг: 0 / 0
Восстановление данных из журнала транзакций после обрезания БД
    #35183062
exp3rt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Garya
Огромное спасибо. Очень советы помогли разобраться с проблемой.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Восстановление данных из журнала транзакций после обрезания БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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