Файловые имена таблиц postgre. Структура postgre. #613074


#0 by KOCTuK
Форумчане, такая беда... Имеем: Ubuntu 10, Postgre 9.0, 1С8.2 При очередном запуске 1Ски вывалилась ошибка "Could not read block 26637 of base/36463/43530...." 0дмином был подсказан вариант сделать initdb (предварительно скопировав папку "base/36463" с базой), что и было сделано... Теперь понимаю, что зря( Был тут . Там умные люди писали про "номер страницы в файле субд". - найти бы их. Так вот можно было просто с бэкапа восстановить базу за день раньше и определив, что есть таблица "43530" восстановить именно её. После initdb бэкап postgre не ложится.. структура изменилась. Благо есть бэкап средствами 1С, но в связи со спецификой работы потерялась информация за один день, которую не возможно поднять ни с бумажной копии, ни по памяти. Подскажите какие-нибуть варианты есть? Можно ли скопированные файлы базы "base/36463" как-нибуть засунуть обратно в скуль, чтоб накатить на него постгришный бэкап? Или чем-нибуть открыть эти файлы?
#1 by KOCTuK
Так вот можно было просто с бэкапа восстановить базу за день раньше и определив, ЧТО СОДЕРЖИТ таблица "43530" восстановить именно её.
#2 by KOCTuK
Поеду домой.. не ел 12 часов(( Завтра буду разбираться. Если кто сталкивался с решением, помогите *чешетзатылок*.
#3 by Kreont
Узнать сначала что за таблица 43530, может она и не нужна вовсе, хватит тогда чистую создать через pgAdmin initdb - делается только один раз, когда инициализируется постгрес после инсталяции, и все. больше его никогда не надо трогать, даже при апдейте постгреса и т.п. Аналогично через pgAdmin с одной копии базы в другую можно через backup|restore перебросить только одну таблицу.
#4 by KOCTuK
Поясню. В скуле не осталось той базы. Она лежит, скопированная, в файлах на винте. Как её засунуть обратно в скуль то?
#5 by KOCTuK
Значения 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). Подскажите как?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С