-<!-- $PostgreSQL: pgsql/doc/src/sgml/maintenance.sgml,v 1.87 2008/12/08 20:30:58 mha Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/maintenance.sgml,v 1.88 2008/12/11 18:16:18 tgl Exp $ -->
<chapter id="maintenance">
<title>Routine Database Maintenance Tasks</title>
<programlisting>
WARNING: database "mydb" must be vacuumed within 177009986 transactions
-HINT: To avoid a database shutdown, execute a full-database VACUUM in "mydb".
+HINT: To avoid a database shutdown, execute a database-wide VACUUM in "mydb".
</programlisting>
+ (A manual <command>VACUUM</> should fix the problem, as suggested by the
+ hint; but note that the <command>VACUUM</> must be performed by a
+ superuser, else it will fail to process system catalogs and thus not
+ be able to advance the database's <structfield>datfrozenxid</>.)
If these warnings are
ignored, the system will shut down and refuse to execute any new
transactions once there are fewer than 1 million transactions left
<!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/vacuum.sgml,v 1.53 2008/11/14 10:22:47 petere Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/vacuum.sgml,v 1.54 2008/12/11 18:16:18 tgl Exp $
PostgreSQL documentation
-->
<para>
With no parameter, <command>VACUUM</command> processes every table in the
- current database. With a parameter, <command>VACUUM</command> processes
- only that table.
+ current database that the current user has permission to vacuum.
+ With a parameter, <command>VACUUM</command> processes only that table.
</para>
<para>
<refsect1>
<title>Notes</title>
+ <para>
+ To vacuum a table, one must ordinarily be the table's owner or a
+ superuser. However, database owners are allowed to
+ vacuum all tables in their databases, except shared catalogs.
+ (The restriction for shared catalogs means that a true database-wide
+ <command>VACUUM</> can only be performed by a superuser.)
+ <command>VACUUM</> will skip over any tables that the calling user
+ does not have permission to vacuum.
+ </para>
+
<para>
<command>VACUUM</> cannot be executed inside a transaction block.
</para>
* Copyright (c) 2000-2008, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/transam/varsup.c,v 1.81 2008/01/01 19:45:48 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/access/transam/varsup.c,v 1.82 2008/12/11 18:16:18 tgl Exp $
*
*-------------------------------------------------------------------------
*/
(errmsg("database \"%s\" must be vacuumed within %u transactions",
NameStr(ShmemVariableCache->limit_datname),
ShmemVariableCache->xidWrapLimit - xid),
- errhint("To avoid a database shutdown, execute a full-database VACUUM in \"%s\".",
+ errhint("To avoid a database shutdown, execute a database-wide VACUUM in \"%s\".",
NameStr(ShmemVariableCache->limit_datname))));
}
(errmsg("database \"%s\" must be vacuumed within %u transactions",
NameStr(*oldest_datname),
xidWrapLimit - curXid),
- errhint("To avoid a database shutdown, execute a full-database VACUUM in \"%s\".",
+ errhint("To avoid a database shutdown, execute a database-wide VACUUM in \"%s\".",
NameStr(*oldest_datname))));
}