Имя: Пароль:
1C
1С v8
Файловые имена таблиц postgre. Структура postgre.
0 KOCTuK
 
29.05.12
18:17
Форумчане, такая беда...
Имеем: Ubuntu 10, Postgre 9.0, 1С8.2
При очередном запуске 1Ски вывалилась ошибка "Could not read block 26637 of base/36463/43530...."
0дмином был подсказан вариант сделать initdb (предварительно скопировав папку "base/36463" с базой), что и было сделано...
Теперь понимаю, что зря(

Был тут v8: Ошибка базы. HELP.Could not read block 26637 of relation base/50468/3305609: inv. Там умные люди писали про "номер страницы в файле субд". - найти бы их.
Так вот можно было просто с бэкапа восстановить базу за день раньше и определив, что есть таблица "43530" восстановить именно её.
После initdb бэкап postgre не ложится.. структура изменилась.
Благо есть бэкап средствами 1С, но в связи со спецификой работы потерялась информация за один день, которую не возможно поднять ни с бумажной копии, ни по памяти.
Подскажите какие-нибуть варианты есть? Можно ли скопированные файлы базы "base/36463" как-нибуть засунуть обратно в скуль, чтоб накатить на него постгришный бэкап? Или чем-нибуть открыть эти файлы?
1 KOCTuK
 
29.05.12
18:20
Так вот можно было просто с бэкапа восстановить базу за день раньше и определив, ЧТО СОДЕРЖИТ таблица "43530" восстановить именно её.
2 KOCTuK
 
29.05.12
18:24
Поеду домой.. не ел 12 часов(( Завтра буду разбираться. Если кто сталкивался с решением, помогите *чешетзатылок*.
3 Kreont
 
29.05.12
18:32
Узнать сначала что за таблица 43530, может она и не нужна вовсе, хватит тогда чистую создать через pgAdmin

initdb - делается только один раз, когда инициализируется постгрес после инсталяции, и все. больше его никогда не надо трогать, даже при апдейте постгреса и т.п.

Аналогично через pgAdmin с одной копии базы в другую можно через backup|restore перебросить только одну таблицу.
4 KOCTuK
 
29.05.12
21:45
Поясню. В скуле не осталось той базы. Она лежит, скопированная, в файлах на винте. Как её засунуть обратно в скуль то?
5 KOCTuK
 
30.05.12
08:22
Значения OID назначаются для всех новых записей из центральной области, которые используются всеми всеми базами данных. Если вы хотите изменить OID на какое-либо другое значение или если вы хотите создать копию таблицы с такимиже OID, то это можно сделать так:

       CREATE TABLE new_table(old_oid oid, mycol int);
       SELECT old_oid, mycol INTO new FROM old;
       COPY new TO '/tmp/pgtable';
       DELETE FROM new;
       COPY new WITH OIDS FROM '/tmp/pgtable';

У меня есть база созданная в скуле с OID 16393, я положил в папку баз данных скуля базу с OID 36463. Мне нужно подменить OID, созданной в скуле базы, на OID копии (36463).
Подскажите как?
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.