pg_amcheck#

pg_amcheck

pg_amcheck

pg_amcheck — проверяет наличие повреждений в одной или нескольких базах данных Tantor SE-1C

Синтаксис

pg_amcheck [option...] [dbname]

Описание

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

Сохраняются только обычные и toast-отношения таблиц, материализованные представления, последовательности и btree-индексы. В настоящее время не поддерживаются другие типы отношений. Они пропускаются без предупреждения.

Если указано dbname, то это должно быть имя одной базы данных для проверки, и другие опции выбора базы данных не должны присутствовать. В противном случае, если присутствуют какие-либо опции выбора базы данных, будут проверены все соответствующие базы данных. Если таких опций нет, будет проверена база данных по умолчанию. Опции выбора базы данных включают --all, --database и --exclude-database. Они также включают --relation, --exclude-relation, --table, --exclude-table, --index и --exclude-index, но только когда такие опции используются с трехчастным шаблоном (например, mydb*.myschema*.myrel*). Наконец, они включают --schema и --exclude-schema, когда такие опции используются с двухчастным шаблоном (например, mydb*.myschema*).

dbname также может быть строкой подключения.

Опции

Следующие параметры командной строки управляют тем, что проверяется:

-a
--all

Проверьте все базы данных, за исключением тех, которые исключены с помощью --exclude-database.

-d pattern
--database=pattern

Проверьте базы данных, соответствующие указанному pattern, за исключением любых, исключенных с помощью --exclude-database. Этот параметр может быть указан несколько раз.

-D pattern
--exclude-database=pattern

Исключить базы данных, соответствующие заданному pattern. Этот параметр может быть указан несколько раз.

-i pattern
--index=pattern

Проверьте соответствие индексов указанному pattern, если они не исключены. Этот параметр может быть указан несколько раз.

Это аналогично опции --relation, за исключением того, что она применяется только к индексам, а не к другим типам отношений.

-I pattern
--exclude-index=pattern

Исключите индексы, соответствующие указанному pattern. Этот параметр можно указать несколько раз.

Это аналогично опции --exclude-relation, за исключением того, что она применяется только к индексам, а не к другим типам отношений.

-r pattern
--relation=pattern

Проверьте соответствие отношений, указанных в pattern, если они не исключены. Этот параметр можно указать несколько раз.

Шаблоны могут быть неполными, например, myrel*, или они могут быть уточнены с указанием схемы, например, myschema*.myrel* или базы данных и схемы, например, mydb*.myschema*.myrel*. Шаблон, уточненный c указанием базы данных, добавит соответствующие базы данных в список баз данных для проверки.

-R pattern
--exclude-relation=pattern

Исключите отношения, соответствующие указанному pattern. Этот параметр можно указать несколько раз.

Как и с --relation, pattern может быть неопределенным, с указанием схемы или с указанием базы данных и схемы.

-s pattern
--schema=pattern

Проверьте таблицы и индексы в схемах, соответствующих указанному pattern, если они не исключены. Этот параметр может быть указан несколько раз.

Для выбора только таблиц в схемах, соответствующих определенному шаблону, рассмотрите использование чего-то вроде --table=SCHEMAPAT.* --no-dependent-indexes. Для выбора только индексов рассмотрите использование чего-то вроде --index=SCHEMAPAT.*.

Шаблон схемы может быть указан с указанием базы данных. Например, вы можете написать --schema=mydb*.myschema* для выбора схем, соответствующих myschema* в базах данных, соответствующих mydb*.

-S pattern
--exclude-schema=pattern

Исключить таблицы и индексы в схемах, соответствующих указанному pattern. Этот параметр может быть указан несколько раз.

Как и с параметром --schema, шаблон может быть указан с указанием базы данных.

-t pattern
--table=pattern

Проверьте таблицы, соответствующие указанному pattern, если они не исключены. Этот параметр можно указать несколько раз.

Это аналогично опции --relation, за исключением того, что она применяется только к таблицам, материализованным представлениям и последовательностям, а не к индексам.

-T pattern
--exclude-table=pattern

Исключите таблицы, соответствующие указанному pattern. Этот параметр можно указать несколько раз.

Это аналогично опции --exclude-relation, за исключением того, что она применяется только к таблицам, материализованным представлениям и последовательностям, а не к индексам.

--no-dependent-indexes

По умолчанию, если таблица проверяется, все индексы btree этой таблицы также будут проверены, даже если они не были явно выбраны с помощью опции, такой как --index или --relation. Эта опция подавляет такое поведение.

--no-dependent-toast

По умолчанию, если таблица проверяется, ее toast-таблица, если таковая имеется, также будет проверена, даже если она не выбрана явно с помощью опции, такой как --table или --relation. Эта опция подавляет такое поведение.

--no-strict-names

По умолчанию, если аргумент для --database, --table, --index, или --relation не соответствует ни одному объекту, это являетсякритической ошибкой. Этот параметр понижает эту ошибку до предупреждения.

Следующие параметры командной строки управляют проверкой таблиц:

--exclude-toast-pointers

По умолчанию, каждый раз, когда в таблице встречается указатель на toast, выполняется поиск для проверки, что он ссылается на видимо действительные записи в таблице toast. Эти проверки могут быть довольно медленными, и этот параметр может быть использован для их пропуска.

--on-error-stop

После сообщения обо всех повреждениях на первой странице таблицы, где обнаружено повреждение, прекратите обработку этой таблицы и перейдите к следующей таблице или индексу.

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

--skip=option

Если указано all-frozen, проверки на повреждение таблицы будут пропускать страницы во всех таблицах, помеченных как полностью замороженные.

Если задано значение all-visible, проверки на повреждение таблицы будут пропускать страницы во всех таблицах, помеченных как все видимые.

По умолчанию ни одна страница не пропускается. Это можно указать как none, но так как это значение по умолчанию, оно не нуждается в упоминании.

--startblock=block

Начните проверку с указанного номера блока. Если у таблицы, которую проверяют, меньше блоков, чем указанное число, возникнет ошибка. Этот параметр не применяется к индексам и, вероятно, полезен только при проверке отдельной таблицы. См. --endblock для получения дополнительной информации.

--endblock=block

Завершение проверки на указанном номере блока. Если у таблицы, которая проверяется, меньше блоков, чем указанное число, возникнет ошибка. Эта опция не применяется к индексам и, вероятно, полезна только при проверке отдельной таблицы. Если проверяются как обычная таблица, так и таблица toast, эта опция будет применяться к обеим, но более высокономерные блоки toast могут быть доступны при проверке указателей toast, если это не подавлено с помощью --exclude-toast-pointers.

Следующие параметры командной строки управляют проверкой индексов B-дерева:

--heapallindexed

Для каждого проверяемого индекса проверьте наличие всех кортежей кучи в качестве индексных кортежей в индексе, используя опцию heapallindexed amcheck.

--parent-check

Для каждого проверяемого индекса btree используйте функцию bt_index_parent_check из amcheck, которая выполняет дополнительные проверки отношений родитель/потомок во время проверки индекса.

По умолчанию используется функция bt_index_check из amcheck, но обратите внимание, что использование опции --rootdescend неявно выбирает функцию bt_index_parent_check.

--rootdescend

Для каждого проверенного индекса повторно находятся кортежи на уровне листьев, выполняя новый поиск с корневой страницы для каждого кортежа с использованием опции rootdescend из amcheck.

Использование этой опции неявно также выбирает опцию --parent-check.

Эта форма проверки была изначально разработана для помощи в разработке функций индекса btree. Она может быть ограниченно полезной или даже бесполезной для обнаружения видов повреждений, которые возникают на практике. Она также может привести к значительному увеличению времени проверки на повреждения и потреблению сервером значительно большего количества ресурсов.

Предупреждение

Все дополнительные проверки, выполняемые против индексов B-дерева, когда указана опция --parent-check или опция --rootdescend, требуют относительно сильных блокировок на уровне отношений. Эти проверки являются единственными проверками, которые будут блокировать одновременное изменение данных из команд INSERT, UPDATE и DELETE.

Следующие параметры командной строки управляют подключением к серверу:

-h hostname
--host=hostname

Указывает имя хоста машины, на которой работает сервер. Если значение начинается с косой черты, оно используется в качестве каталога для Unix-доменного сокета.

-p port
--port=port

Указывает TCP-порт или расширение локального файла домена Unix, на котором сервер прослушивает соединения.

-U
--username=username

Имя пользователя для подключения.

-w
--no-password

Никогда не запрашивайте пароль. Если сервер требует аутентификации по паролю и пароль не доступен другими средствами, такими как файл .pgpass, попытка подключения завершится неудачей. Этот параметр может быть полезен в пакетных заданиях и скриптах, где отсутствует пользователь, чтобы ввести пароль.

-W
--password

Заставьте pg_amcheck запросить пароль перед подключением к базе данных.

Эта опция никогда не является обязательной, так как pg_amcheck автоматически запросит пароль, если сервер требует аутентификацию по паролю. Однако pg_amcheck будет тратить попытку подключения, чтобы узнать, что сервер требует пароль. В некоторых случаях стоит ввести -W, чтобы избежать дополнительной попытки подключения.

--maintenance-db=dbname

Указывает базу данных или строку подключения для использования при поиске списка баз данных для проверки. Если не используется ни --all, ни какая-либо опция, включающая шаблон базы данных, подключение не требуется и эта опция ничего не делает. В противном случае, любые параметры строки подключения, кроме имени базы данных, включенные в значение этой опции, также будут использоваться при подключении к базам данных, которые проверяются. Если эта опция не указана, используется значение по умолчанию postgres или, если это не удалось, template1.

Доступны и другие варианты:

-e
--echo

Отобразить на стандартный вывод все SQL-запросы, отправленные на сервер.

-j num
--jobs=num

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

По умолчанию используется одно соединение.

-P
--progress

Показывать информацию о прогрессе. Информация о прогрессе включает количество завершенных проверок отношений и общий размер этих отношений. Она также включает общее количество отношений, которые будут проверены, и предполагаемый размер этих отношений.

-v
--verbose

Выводить больше сообщений. В частности, это позволит вывести сообщение для каждого проверяемого отношения и увеличит уровень детализации, отображаемый для ошибок сервера.

-V
--version

Выведите версию pg_amcheck и завершите работу.

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

Установите все отсутствующие расширения, необходимые для проверки базы данных(ей). Если они еще не установлены, объекты каждого расширения будут установлены в указанную схему schema, или, если не указано, в схему pg_catalog.

В настоящее время единственным обязательным расширением является amcheck.

-?
--help

Показать справку о командной строке для pg_amcheck и выйти.

Примечания

pg_amcheck предназначен для работы с Tantor SE-1C 14.0 и более поздними версиями.

См. также

amcheck