pg_amcheck

pg_amcheck — realiza comprobaciones de corrupción en una o más bases de datos PostgreSQL

Synopsis

pg_amcheck [option...] [dbname]

Descripción

pg_amcheck permite ejecutar las funciones de comprobación de corrupción de amcheck en una o más bases de datos, con opciones para seleccionar qué esquemas, tablas e índices comprobar, qué tipos de comprobaciones realizar y si realizar las comprobaciones en paralelo y, en tal caso, la cantidad de conexiones paralelas a establecer y utilizar.

Actualmente solo se admiten relaciones de tablas ordinarias y toast, vistas materializadas, secuencias e índices btree. Otros tipos de relaciones se omiten silenciosamente.

Si se especifica dbname, debe ser el nombre de una sola base de datos a comprobar, y no debe haber ninguna otra opción de selección de base de datos. De lo contrario, si hay alguna opción de selección de base de datos presente, se comprobarán todas las bases de datos coincidentes. Si no hay tales opciones presentes, se comprobará la base de datos predeterminada. Las opciones de selección de bases de datos incluyen --all, --database y --exclude-database. También incluyen --relation, --exclude-relation, --table, --exclude-table, --index y --exclude-index, but only cuando tales opciones se usan con un patrón de tres partes (por ejemplo, mydb*.myschema*.myrel*). Finalmente, incluyen --schema y --exclude-schema cuando estas opciones se usan con un patrón de dos partes (por ejemplo, mydb*.myschema*).

dbname también puede ser una cadena de conexión.

Opciones

Las siguientes opciones de línea de comandos controlan qué se comprueba:

-a
--all

Comprueba todas las bases de datos, excepto las excluidas mediante --exclude-database.

-d pattern
--database=pattern

Comprueba las bases de datos que coincidan con el patrón especificado, excepto las excluidas por --exclude-database. Esta opción se puede especificar más de una vez.

-D pattern
--exclude-database=pattern

Excluye las bases de datos que coincidan con el patrón dado. Esta opción se puede especificar más de una vez.

-i pattern
--index=pattern

Comprueba los índices que coincidan con el patrón especificado, a menos que estén excluidos de otra manera. Esta opción se puede especificar más de una vez.

Esto es similar a la opción --relation, excepto que se aplica solo a índices, no a otros tipos de relaciones.

-I pattern
--exclude-index=pattern

Excluye los índices que coincidan con el patrón especificado. Esta opción se puede especificar más de una vez.

Esto es similar a la opción --exclude-relation, excepto que se aplica solo a índices, no a otros tipos de relaciones.

-r pattern
--relation=pattern

Comprueba las relaciones que coincidan con el patrón especificado, a menos que estén excluidas de otra manera. Esta opción se puede especificar más de una vez.

Los patrones pueden no estar calificados, por ejemplo, myrel*, o pueden estar calificados por esquema, por ejemplo, myschema*.myrel*, o calificados por base de datos y esquema, por ejemplo, mydb*.myschema*.myrel*. Un patrón calificado por base de datos agregará las bases de datos coincidentes a la lista de bases de datos a ser comprobadas.

-R pattern
--exclude-relation=pattern

Excluye las relaciones que coincidan con el patrón especificado. Esta opción se puede especificar más de una vez.

Al igual que con --relation, el patrón puede no estar calificado, calificado por esquema, o calificado por base de datos y esquema.

-s pattern
--schema=pattern

Comprueba las tablas e índices en los esquemas que coincidan con el patrón especificado, a menos que estén excluidos de otra manera. Esta opción se puede especificar más de una vez.

Para seleccionar solo tablas en esquemas que coincidan con un patrón particular, considera usar algo como --table=SCHEMAPAT.* --no-dependent-indexes. Para seleccionar solo índices, considera usar algo como --index=SCHEMAPAT.*.

Un patrón de esquema puede estar calificado por base de datos. Por ejemplo, puedes escribir --schema=mydb*.myschema* para seleccionar esquemas que coincidan con myschema* en bases de datos que coincidan con mydb*.

-S pattern
--exclude-schema=pattern

Excluye tablas e índices en esquemas que coincidan con el patrón especificado. Esta opción se puede especificar más de una vez.

Al igual que con --schema, el patrón puede estar calificado por base de datos.

-t pattern
--table=pattern

Comprueba las tablas que coincidan con el patrón especificado, a menos que estén excluidas de otra manera. Esta opción se puede especificar más de una vez.

Esto es similar a la opción --relation, excepto que se aplica solo a tablas, vistas materializadas y secuencias, no a índices.

-T pattern
--exclude-table=pattern

Excluye las tablas que coincidan con el patrón especificado. Esta opción se puede especificar más de una vez.

Esto es similar a la opción --exclude-relation, excepto que se aplica solo a tablas, vistas materializadas y secuencias, no a índices.

--no-dependent-indexes

Por defecto, si se comprueba una tabla, también se comprobará cualquier índice btree de esa tabla, incluso si no se selecciona explícitamente mediante una opción como --index o --relation. Esta opción desactiva ese comportamiento.

--no-dependent-toast

Por defecto, si se comprueba una tabla, también se comprobará su tabla TOAST, si la tiene, incluso si no se selecciona explícitamente mediante una opción como --table o --relation. Esta opción desactiva ese comportamiento.

--no-strict-names

Por defecto, si un argumento para --database, --table, --index, o --relation no coincide con ningún objeto, es un error fatal. Esta opción reduce ese error a una advertencia.

Las siguientes opciones de línea de comandos controlan la comprobación de tablas:

--exclude-toast-pointers

Por defecto, cada vez que se encuentra un puntero TOAST en una tabla, se realiza una búsqueda para asegurarse de que hace referencia a entradas aparentemente válidas en la tabla TOAST. Estas comprobaciones pueden ser bastante lentas, y esta opción se puede usar para omitirlas.

--on-error-stop

Después de informar todas las corrupciones en la primera página de una tabla donde se encuentre corrupción, detiene el procesamiento de esa relación de tabla y pasa a la siguiente tabla o índice.

Ten en cuenta que la comprobación de índices siempre se detiene después de la primera página corrupta. Esta opción solo tiene sentido con respecto a las relaciones de tablas.

--skip=option

Si se especifica all-frozen, las comprobaciones de corrupción de tablas omitirán las páginas de todas las tablas que estén marcadas como completamente congeladas (all frozen).

Si se especifica all-visible, las comprobaciones de corrupción de tablas omitirán las páginas de todas las tablas que estén marcadas como completamente visibles (all visible).

Por defecto, no se omite ninguna página. Esto se puede especificar como none, pero al ser el valor predeterminado, no es necesario mencionarlo.

--startblock=block

Comienza la comprobación en el número de bloque especificado. Se producirá un error si la relación de tabla que se está comprobando tiene menos de este número de bloques. Esta opción no se aplica a los índices y probablemente solo sea útil cuando se comprueba una sola relación de tabla. Consulta --endblock para obtener más advertencias.

--endblock=block

Finaliza la comprobación en el número de bloque especificado. Se producirá un error si la relación de tabla que se está comprobando tiene menos de este número de bloques. Esta opción no se aplica a los índices y probablemente solo sea útil cuando se comprueba una sola relación de tabla. Si se comprueban tanto una tabla normal como una tabla TOAST, esta opción se aplicará a ambas, pero aún se puede acceder a bloques TOAST con números más altos al validar los punteros TOAST, a menos que eso se desactive mediante --exclude-toast-pointers.

Las siguientes opciones de línea de comandos controlan la comprobación de índices B-tree:

--checkunique

Para cada índice con restricción única comprobado, verifica que no haya más de una entrada duplicada visible en el índice utilizando la opción checkunique de amcheck.

--heapallindexed

Para cada índice comprobado, verifica la presencia de todas las tuplas de heap como tuplas de índice en el índice utilizando la opción heapallindexed de amcheck.

--parent-check

Para cada índice btree comprobado, utiliza la función bt_index_parent_check de amcheck, que realiza comprobaciones adicionales de las relaciones padre/hijo durante la comprobación de índices.

El comportamiento predeterminado es utilizar la función bt_index_check de amcheck, pero ten en cuenta que el uso de la opción --rootdescend selecciona implícitamente bt_index_parent_check.

--rootdescend

Para cada índice comprobado, vuelve a buscar las tuplas en el nivel de hoja realizando una nueva búsqueda desde la página raíz para cada tupla utilizando la opción rootdescend de amcheck.

El uso de esta opción también selecciona implícitamente la opción --parent-check.

Esta forma de verificación se escribió originalmente para ayudar en el desarrollo de características de índices btree. Puede ser de utilidad limitada o incluso nula para ayudar a detectar los tipos de corrupción que ocurren en la práctica. También puede hacer que la comprobación de corrupción tarde considerablemente más tiempo y consuma considerablemente más recursos en el servidor.

Warning

Las comprobaciones adicionales que se realizan en los índices B-tree cuando se especifica la opción --parent-check o la opción --rootdescend requieren bloqueos de nivel de relación relativamente fuertes. Estas comprobaciones son las únicas comprobaciones que bloquearán la modificación concurrente de datos por parte de los comandos INSERT, UPDATE y DELETE.

Las siguientes opciones de línea de comandos controlan la conexión con el servidor:

-h hostname
--host=hostname

Especifica el nombre de host de la máquina en la que se ejecuta el servidor. Si el valor comienza con una barra diagonal, se utiliza como el directorio para el socket de dominio Unix.

-p port
--port=port

Especifica el puerto TCP o la extensión del archivo de socket de dominio Unix local en el que el servidor escucha las conexiones.

-U
--username=username

Nombre de usuario con el que conectarse.

-w
--no-password

Nunca solicita una contraseña. Si el servidor requiere autenticación por contraseña y no hay una contraseña disponible por otros medios como un archivo .pgpass, el intento de conexión fallará. Esta opción puede ser útil en trabajos por lotes y scripts donde no hay ningún usuario presente para introducir una contraseña.

-W
--password

Fuerza a pg_amcheck a solicitar una contraseña antes de conectarse a una base de datos.

Esta opción nunca es indispensable, ya que pg_amcheck solicitará automáticamente una contraseña si el servidor requiere autenticación por contraseña. Sin embargo, pg_amcheck desperdiciará un intento de conexión para descubrir que el servidor requiere una contraseña. En algunos casos, vale la pena escribir -W para evitar el intento de conexión adicional.

--maintenance-db=dbname

Especifica una base de datos o cadena de conexión que se utilizará para descubrir la lista de bases de datos que se comprobarán. Si no se utiliza --all ni ninguna opción que incluya un patrón de base de datos, no se requiere dicha conexión y esta opción no hace nada. De lo contrario, cualquier otro parámetro de la cadena de conexión que no sea el nombre de la base de datos y que se incluya en el valor de esta opción también se utilizará al conectarse a las bases de datos que se están comprobando. Si se omite esta opción, el valor predeterminado es postgres o, si eso falla, template1.

También están disponibles otras opciones:

-e
--echo

Muestra en la salida estándar todo el SQL enviado al servidor.

-j num
--jobs=num

Utiliza num conexiones concurrentes al servidor, o una por objeto a comprobar, lo que sea menor.

El comportamiento predeterminado es utilizar una sola conexión.

-P
--progress

Muestra información de progreso. La información de progreso incluye el número de relaciones para las cuales se ha completado la comprobación y el tamaño total de esas relaciones. También incluye el número total de relaciones que finalmente se comprobarán y el tamaño estimado de esas relaciones.

-v
--verbose

Muestra más mensajes. En particular, esto imprimirá un mensaje para cada relación que se esté comprobando e incrementará el nivel de detalle mostrado para los errores del servidor.

-V
--version

Muestra la versión de pg_amcheck y termina.

--install-missing
--install-missing=schema

Instala cualquier extensión faltante que sea requerida para comprobar las bases de datos. Si aún no está instalada, los objetos de cada extensión se instalarán en el esquema dado, o si no se especifica, en el esquema pg_catalog.

Actualmente, la única extensión requerida es amcheck.

-?
--help

Muestra ayuda sobre los argumentos de línea de comandos de pg_amcheck y termina.

Entorno

pg_amcheck, al igual que la mayoría de las demás utilidades de PostgreSQL, también utiliza las variables de entorno admitidas por libpq (ver Section 32.15).

La variable de entorno PG_COLOR especifica si se debe usar color en los mensajes de diagnóstico. Los valores posibles son always, auto y never.

Notas

pg_amcheck está diseñado para funcionar con PostgreSQL 14.0 y versiones posteriores.

Véase también

amcheck