Волшебство PostgreSQL с малым количеством свободного места на системном диске - PullRequest
1 голос
/ 27 декабря 2011

На моем Mac OS X 10.7.2 работает сервер PostgreSQL.Иногда случайный запрос, особенно

CREATE OR REPLACE TEMPORARY VIEW <Name> AS SELECT * FROM <Table>;

, не удался с кодом PGRES_FATAL_ERROR = 7 и сообщением

ERROR:  invalid page header in block 4169 of relation "pg_type"

После 2-5 попыток запрос завершается нормально, без ошибок.

Я думаю, что проблема вызвана нехваткой свободного места на системном диске, потому что приложение отлично работает без ошибок базы данных на Mac с большим количеством свободного места на системном диске.

Как я могу указать причины ошибокзапрос не выполнен?

ОБНОВЛЕНИЕ: добавлены журналы

sh-3.2# cat postgres_LOG.1324986905
LOG:  database system was shut down at 2011-12-27 15:54:32 MSK
LOG:  checkpoint record is at 1/EEE1161C
LOG:  redo record is at 1/EEE1161C; undo record is at 0/0; shutdown TRUE
LOG:  next transaction ID: 1814900; next OID: 808694
LOG:  next MultiXactId: 1; next MultiXactOffset: 0
LOG:  database system is ready
LOG:  transaction ID wrap limit is 1073763426, limited by database "my_db"
LOG:  connection received: host=::1 port=49159
LOG:  connection authorized: user=my_db database=my_db
LOG:  connection received: host=::1 port=49161
LOG:  connection authorized: user=my_db database=my_db
LOG:  connection received: host=::1 port=49162
LOG:  connection authorized: user=my_db database=my_db
LOG:  connection received: host=::1 port=49263
LOG:  connection authorized: user=my_db database=my_db
LOG:  connection received: host=::1 port=49264
LOG:  connection authorized: user=my_db database=my_db
ERROR:  invalid page header in block 4169 of relation "pg_type"
LOG:  connection received: host=::1 port=49266
LOG:  connection authorized: user=my_db database=my_db
ERROR:  invalid page header in block 4169 of relation "pg_type"
LOG:  connection received: host=::1 port=49273
LOG:  connection authorized: user=my_db database=my_db
LOG:  connection received: host=::1 port=49274
LOG:  connection authorized: user=my_db database=my_db
LOG:  connection received: host=::1 port=49276
LOG:  connection authorized: user=my_db database=my_db
LOG:  connection received: host=::1 port=49277
LOG:  connection authorized: user=my_db database=my_db
LOG:  connection received: host=::1 port=49362
LOG:  connection authorized: user=my_db database=my_db
LOG:  connection received: host=::1 port=49363
LOG:  connection authorized: user=my_db database=my_db
LOG:  connection received: host=::1 port=50293
LOG:  connection authorized: user=my_db database=my_db
sh-3.2# 

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Очень похоже на повреждение диска / файловой системы.Я бы посоветовал вам как можно скорее выполнить цикл дампа / перезагрузки базы данных, а также, если возможно, проверку файловой системы и оборудования диска.

Не должно быть связано со свободным дисковым пространством - чтовыдаст вам другую ошибку.

0 голосов
/ 27 декабря 2011

Скорее всего, некоторые системные таблицы повреждены.По крайней мере, pg_type.А поскольку pg_type обычно довольно мало (десяток страниц / блоков), а ваше число (4169) довольно велико, могут возникнуть другие проблемы, например, несколько уборок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...