|
Файловые имена таблиц 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). Подскажите как? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |