Имя: Пароль:
1C
1С v8
Ошибка базы. HELP.Could not read block 26637 of relation base/50468/3305609: inv
0 ExRq
 
22.03.12
06:39
Добрый день.
Случилась беда с базой

Конф: v8 УТ 10.3.6.8
база на PostgreSQL 8.4.3-3.1C
При тестировании и исправлении вылетает ошибка
Ошибка СУБД
Error: Could not read block 26637 of relation base/50468/3305609: invalid argument
В конфигураторе останавливается на надписи:
Проверка логической целостности. Регистры накопления. Продажи. - 15%

Дамп базы не делается ни средствами 1с ни PostgreSQL.
База работает. Сбоев нет.

Кто сталкивался? Что делать?
1 DMLangepas
 
22.03.12
06:44
прогони копию базы, её же штатной проверкой, в папке 1cv82/../bin/chdbfl.exe
как вариант попробуй
2 ExRq
 
22.03.12
06:50
Не уследил в какой момент перестали создаваться копии. И уже все затерлись ((..Есть совсем старые но там нет ошибок.
3 DMLangepas
 
22.03.12
07:09
(2) а новую копию создать нельзя??
4 ExRq
 
22.03.12
07:15
В том то и дело, не могу сделать резервную копию вылетает с ошибкой. Думаю связано как раз что то с этим блоком.
5 zva
 
22.03.12
07:16
Ну пробуй через XML в чистую базу выгрузить, возможно частями
6 ExRq
 
22.03.12
07:21
Хотелось бы конечно выгрузить базу штатными средствами и потом уже сменить PostgreSQL или дело не в нем ведь?
7 DMLangepas
 
22.03.12
07:34
(6) я просто не знаю, в SQL вообще не скопировать базу как в файловых??? там ведь есть путь к базе?
8 ЧеловекДуши
 
22.03.12
07:34
Поди БД файловая :)
9 vde69
 
22.03.12
07:36
можно вообще очистить этот регистр в субд, только потом востанавливать тяжело будет.

судя по ошибке у тебя сама посгрей посыпалась
10 ExRq
 
22.03.12
07:37
Я ведь написал БД на PostgreSQL, Резервная копия не делается ни средствами 1с ни средствами Postgre
11 Мыш
 
22.03.12
07:37
(8) Написано же, "база на PostgreSQL 8.4.3-3.1C "
12 ExRq
 
22.03.12
07:40
(9) Отчеты строятся по любым периодам, ошибок не бывает..или это не связано?
13 Мыш
 
22.03.12
07:40
А по теме, "Продажи" - регистр оборотный, перепроведением восстановится. Так что грохнуть таблицу регистра, загрузить конфигурацию, реструктуризацию запустить, потом перепровести.
14 ExRq
 
22.03.12
07:43
(13) Опасно конечно заниматься этим без резервной копии..может есть ещё варианты?
15 vde69
 
22.03.12
07:48
(14) а копию сделать кто мешает?
останавливаешь службу и копируешь файлы :)
16 Мыш
 
22.03.12
07:50
(14) Образ винчестера сделай. :)
17 ExRq
 
22.03.12
07:50
(14)А постгри потом стартанет если заменить базу на старую?
18 ExRq
 
22.03.12
07:51
(16) :)
19 zva
 
22.03.12
07:56
(17) Без танцев с бубном точно нет, но зато файлы останутся...
"Продажи" - первый поломатый регистр, на котором спотыкается ТиИ. Их может быть 100500...
20 ExRq
 
22.03.12
08:01
(19) Плохо дело чувствую
21 ExRq
 
22.03.12
08:05
Кстати, идея. Недавно делал РБД с этого узла и она создалась без сбоев. Там конечно обрезанный узел но нужно попробовать на полном плане. А с файловой уже проще.
22 vde69
 
22.03.12
08:16
сделай так:

1. создай новую пустую базу с этой конфигурацией
2. экспортом гони таблицы из поломатой в новую
3. составляешь список таблиц которые не удалось копирнуть
4. принимаешь решение чего дальше

способ безопасный, геморный, но понятный
23 Kraft
 
22.03.12
08:20
(22) +1 за такой подход
24 ExRq
 
22.03.12
08:27
(22) Спасибо попробую.
Один вопрос Экспорт - это ты имеешь ввиду средство 1с или Postgre? Ни разу не сталкивался.
25 vde69
 
22.03.12
08:31
(24) средстави СУБД, я с пости не работал, я только со скулем, зато так например востанавливал базу 7.7 примерно 60 гигов после краха винта и скульного рековера, там черти что было :)
26 ExRq
 
22.03.12
08:39
(25) Понял Спасибо. Буду пробовать. Отпишусь.
27 Jofa
 
22.03.12
08:42
Беда случилась уже давно когда Выбирали СУБД на учёбу забыли денег выделить ..)
28 ExRq
 
22.03.12
08:55
))
29 ExRq
 
23.03.12
07:26
Нашел таблицу которая дает ошибку.
accumreg7721
ERROR:  could not read block 26637 of relation base/50468/3305609: Invalid argument

Кто знает что за таблица?
30 vde69
 
23.03.12
08:03
(29) регист...

теперь тупо в новой базе сделай ТиИс и потом полное перепроведение, и все будет рабочее.
31 DMLangepas
 
23.03.12
08:03
(29) ERROR:  could not read block 26637 of relation base/50468/3305609: Invalid argument

судя по последним словам, может это по больничным листам?)))))))
32 vde69
 
23.03.12
08:08
(30) хотя лучше не перепроведение, а что-то более правильное, на сколько я понял у тебя один регист "продажы" крякнул, подумай как его заполнить без перепроведения :)
33 ExRq
 
23.03.12
08:10
(29) Объясни что такое ТиИс?
И как в новой? - я не могу её залить в новую базу.

(30) Да конечно лучше как то заполнить )
34 Мыш
 
23.03.12
08:14
(33) Тестирование и Исправление.
35 ExRq
 
23.03.12
08:17
Тоесть перенести все таблицы в новую базу кроме этой и уже например средствами 1с её заполнить..? дошло
36 ExRq
 
23.03.12
08:27
А можно как то посмотреть что это за блок такой 26637?
37 vde69
 
23.03.12
08:28
(36) никак, это к 1с не имеет отношение, это номер страницы в файле субд
38 vde69
 
23.03.12
08:30
а вообще если такая ошибка появилась - это ОЧЕНЬ серьезный звонок админу, вариантов масса, от начала рассыпания дисков, до серьезных проблемм с софтом.

нет никакой гарантии что на этом сервере сабж не повторится но уже в КРУПНЫХ МАСШТАБАХ
39 ExRq
 
23.03.12
10:23
Спасибо за помощь vde69
40 Вяйнемейнен
 
23.03.12
10:58
В Postgre подобные ошибки случаются с завидным постоянством, и, что самое плохое, - нет штатных утилит по лечению тип DBCC в MSSQL, поэтому главное правило - регулярные архивы.

Схема лечения такой ошибки следующая.
В pgadmin нужно запустить переиндексацию с перебором всех таблиц, например, подобным скриптом:

CREATE OR REPLACE FUNCTION _Reindex_Base(
 schema_name in  name,
 result out bigint
)
LANGUAGE plpgsql as $BODY$
DECLARE  table_name  name;

BEGIN
 FOR table_name IN (
   SELECT t.table_name
   FROM information_schema.tables t
   WHERE t.table_schema = schema_name
     AND t.table_type = 'BASE TABLE'
--      AND t.table_name > '_reference84'
   ORDER BY t.table_name
 ) LOOP
 raise info 'reindex %s', table_name;

   EXECUTE 'REINDEX TABLE '
     ||quote_ident(schema_name)||'.'||quote_ident(table_name);
 END LOOP;
 RETURN;
END;
$BODY$;

SELECT result
FROM _Reindex_Base('public');

Нормальные таблицы будут переиндексироваться, на битых будет спотыкаться.
Битые таблицы потом нужно идентифицировать, каким объектам базы они соответствуют - благо обработок по представлению структуре базы везде валяется немеряно.
Далее битые таблицы придется удалить и пересоздать - проще всего автогенерируемым CREATE скриптом в том же pgadmin.
После этого восстанавливать данные, исходя из важности потерянных таблиц и имеющихся архивов. Служебные данные, типа итогов регистров - переформировать; движения регистров - можно восстанавливать, можно заново получить перепроведением. Справочники, документы, перечисления, независимые регистры сведений - только восстанавливать из бэкапов - либо тянуть в виде таблиц Postgre, либо разворачиать архивные базы полностью и выгружать-загружать средствами 1С.
41 vde69
 
23.03.12
11:01
(40) вот по этому я и сижу на скуле :) а пости извени это пРости какое-то
42 ExRq
 
23.03.12
11:48
(40) Спасибо большое, сейчас пробую.
43 Господин ПЖ
 
23.03.12
11:52
не гонялся бы ты поп за дешевизной...
44 ExRq
 
23.03.12
12:49
Да уже тоже сижу думаю об этом..)
45 Мыш
 
23.03.12
13:39
Бесплатность линуксов нивелируется стоимостью поддержки.
46 ansh15
 
23.03.12
14:03
Это всего лишь стоимость несделанного вовремя бэкапа(ОС, СУБД и все остальное, практически, не имеет значения). Ключевая фраза в (3) - "Не уследил..."
47 ansh15
 
23.03.12
14:05
Извините, в (2)