>>> On Fri, Dec 22, 2006 at 12:14 PM, in message <26238.1166811258@xxxxxxxxxxxxx>, Tom Lane <tgl@xxxxxxxxxxxxx> wrote: > "Kevin Grittner" <Kevin.Grittner@xxxxxxxxxxxx> writes: >> As I understand it, the log space accumulates for the oldest transaction >> which is still running, and all transactions which started after it. > > No, pg_xlog can be truncated as soon as a checkpoint occurs. Thanks. Good to know. I had missed that. > If Jeremy > wasn't using archive_command then the only possible explanation for > bloated pg_xlog is that checkpoints were failing. Which is not unlikely > if the *data* partition runs out of space. Were there gripes in the log > before the system crash? The scenario we've seen in the past is > > * data partition out of space, so writes fail > * each time Postgres attempts a checkpoint, writes fail, so the > checkpoint fails. No data loss at this point, the dirty buffers > just stay in memory. > * pg_xlog bloats because we can't truncate away old segments So, at this point, if space is freed on the data partition somehow, Postgres recovers with no problems? (i.e.,, the database is still running and no requests have been terminated abnormally due to the space problems?) > * eventually pg_xlog runs out of space, at which point we PANIC > and can't continue running the database > > Once you free some space on the data partition and restart, you should > be good to go --- there will be no loss of committed transactions, since > all the operations are in pg_xlog. Might take a little while to replay > all that log though :- ( Just to confirm what I would assume at this point -- non-committed transactions should roll back cleanly; it is reasonable to assume no corruption at this point? Thanks, -Kevin