pg_amcheck — realiza comprobaciones de corrupción en una o más bases de datos PostgreSQL
pg_amcheck [option...] [dbname]
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.
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-pointersPor 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-stopDespué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.
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=hostnameEspecifica 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=portEspecifica 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=usernameNombre 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--passwordFuerza 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--echoMuestra 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--progressMuestra 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--verboseMuestra 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--versionMuestra 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.
-?--helpMuestra ayuda sobre los argumentos de línea de comandos de pg_amcheck y termina.
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.
pg_amcheck está diseñado para funcionar con PostgreSQL 14.0 y versiones posteriores.