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 и более поздними версиями.