|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
Выполняю обрезание БД за 3 года работы. Снял остатки с регистров и документов . Удалил таблицы _1sbkttl, _1sbkttlc, _1saccsel, _1ssbsel. Удалил из таблицы _1SENTRY записи за выбранный период, пометил на удаление записи в журнале документов _1sjournal, пометил на удаление записи в журнале операций _1soper, удалил записи в регистрах за интересующий период. Общее количество удалённых записей более 50 миллионов. Выполнил упаковку БД средствами SQL Server. Размер физического файла уменьшился. Файл журнала транзакций остался прежнего размера. В 1с запустил тестирование и восстановление базы и пересчёт итогов. Пересчёт итогов выполнялся около 7 с половиной часов. После пересчёта все удалённые записи восстановились. Насколько я понимаю, это могло быть выполненно только посредством журнала транзакций, хотя могу ошибаться. Кто-нибудь сталкивался с подобной ситуацией? Если да, то как её обходили? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 10:39 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
Все нужно удалять штатными средствами, т.к. "завязок" очень много! А восстановление прошло НЕ из лога транзакций - просто что-то ты недо удалял в системе. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 11:07 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
Уверен, что удалил всё. А именно: 1. Отбор проводок по счетам; 2. Остатки (сальдо и обороты по субконто); 3. Итоги ( сальдо и обороты по синтетическим счетам); 4. Проводки; 5. Журналы документов; 6. Операции; 7. Отбор проводок по субконто. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 11:13 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
Можно ли отключить журнал транзакций перед пересчётом итогов, а после пересчёта обратно включить его? Повлияет ли это на рассмтриваемую проблему? Если да, то как это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 11:39 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
1. Журнал транзакций отключать нельзя. 2. Удалено не все, дело в том, что в Вашем списке удаленных объектов нет а) документов (шапок) б) документов (табличных частей), т.е. таблиц DT*** и DH***. При тестировании система увидела, что документы существуют и их восстановила. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 11:47 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
Таблицы 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) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 12:23 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
А зачем так хитро??? Тебе нужно удалить ВСЕ документы? Тогда просто удаляй полностью таблицы. Кстати, а ты чистил таблицу периодических значений? Или лучше напиши, какой результат хочешь видеть! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 12:30 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
Я хочу обрезать БД за 3 года работы. Поэтому и режу 1. Отбор проводок по счетам; 2. Остатки (сальдо и обороты по субконто); 3. Итоги ( сальдо и обороты по синтетическим счетам); 4. Проводки; 5. Журналы документов; 6. Операции; 7. Отбор проводок по субконто. После обрезания, делаю тестирование и исправление БД и пересчёт итогов. Документы мне нужно резать не все, а определённый список, поэтому так хитро и режу. А что за таблица периодических значений? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 12:48 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
1. Таблица с константами _1sconst - так по моему называется (нет баз 7.7 под рукой) 2. Так, если мне не изменяет память, существует обработка для "свертки" базы. Т.е. говоришь ей по какую дату тебе нужно "обрезать" данные и все... Единственное, что по скорости обработка - не фонтан. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 16:38 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
1. 1С не может чего-либо восстановить непосредственно из журнала транзакций. Также как и любая программа, работающая на уровне SQL-запросов, с SQL-сервером. Просто нет таких команд SQL, которые позволяли бы это делать (по крайней мере, после фиксации транзакции). :) Из всего ПО мне известна лишь одна спец.утилита, которая лезет на низком уровне в журнал транзакций, на уровне байтов разбирает его содержимое и что-то подобное может сделать. Но это не 1С... :) 2. "Отключить" журнал транзакций в MS SQL Server можно только вместе с базой данных, либо на худой конец, оставив БД в режиме дальнейшего восстановления, в котором она работать не может (остается недоступной). 3. Файлы журнала транзакций в MS SQL используются для поддержания механизма транзакций (двухступенчатой фиксации любых изменений данных) и механизмов репликации и используются только самим SQL-сервером, и только для этих целей, а более ни для каких. Поскольку любые операции с базой данных выполняются либо в явно объявленной, либо в неявной, но транзакции , то никакая модификация данных вообще не может производиться в принципе без журнала транзакций. 4. Таким образом, восстановление данных прошло из оставшейся в самой базе данных информации. Если только Вы не восстанавливали базу данных из архива. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 17:54 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
5. Если нужно урезать размер файла журнала транзакций, для этих целей используется команда DBCC SHRINKFILE. Однако, урезать его можно только при соблюдении ряда условий. В частности, только после его очистки от транзакций (например, командой Backup Log). P.S. А задача-то как стоит? Освободить место на диске? Избавиться от мешающей информации? Или ускорить реакцию системы? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 18:01 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
P.P.S. Если у вас распухает до бесконечности размер журнала транзакций, скоре всего, выставленная в свойствах БД Recovery Model (модель восстановления) не соответствует фактически используемой практике архивирования данных. Если Recovery Model установлена в Simple, то журнал транзакций будет очищаться регулярно сам. Но архивировать вы сможете не транзакции, а только содержимое базы данных уже в каком-то зафиксированном виде. Поэтому и восстановить сможете данные только на момент архивирования. Если Recovery Model установлена в Full или в Bulk-Logged, то журнал транзакций сам не очищается. Ожидается, что DBA будет архивировать кроме самой БД еще и журнал транзакций - и он очищается именно после архивирования журнала транзакций (команда Backup Log). Если же DBA не настроил процедуру автоматической архивации лога, и не архивирует его руками, журнал транзакций может вырасти до таких размеров, что никаких дисков не хватит. И на многие порядки превысить размер файла БД. Лично я предпочитаю использовать Recovery Model = Bulk-Logged. Это позволяет восстанавливать информацию в базе данных по состоянию на любой момент времени, а не только на момент архивирования. Более того, такая модель восстановления позволяет восстанавливать данные на момент непосредственно перед выполненной ошибочно операцией (например, после случайного удаления важной информации), даже если последнее архивирование производилось задолго до выполнения ошибочной операции, и между периодом архивирования и ошибочной операцией уже было введено много ценных данных, которые не хочется потерять. Эта особенность делает такую Recovery Model особо ценной. Нужно только не забывать архивировать журнал транзакций... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 18:20 |
|
Восстановление данных из журнала транзакций после обрезания БД
|
|||
---|---|---|---|
#18+
P.S. Поясню, почему Bulk-Logged предпочитаю Full. Большинство систем (как 1С, так и ИНФИН, которым мы тоже пользуемся) хранит часть информации в BLOB-полях, операции с которыми не во всех режимах попадают в журнал транзакций. Поэтому при восстановлении из архива с использованием бэкапа лога часть информации может не восстановиться при использовании RM=Full. А в BLOB-полях содержатся, например, шаблоны форм. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2008, 21:25 |
|
|
start [/forum/topic.php?fid=28&fpage=172&tid=1524945]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 281ms |
total: | 431ms |
0 / 0 |