qhb_amcheck
qhb_amcheck — проверить одну или несколько баз данных QHB на предмет повреждения
Синтаксис
qhb_amcheck [параметр...] [имя_бд]
Описание
Утилита qhb_amcheck поддерживает запуск реализованных в расширении amcheck функций проверки на повреждения в одной или нескольких базах данных с параметрами для выбора проверяемых схем, таблиц и индексов, видов проверки, а также возможностью запустить эти проверки в параллельном режиме и задать для него число параллельных подключений.
В настоящее время поддерживаются только табличные отношения (обычные и TOAST), материализованные представления, последовательности и индексы B-деревья. Другие типы отношений молча пропускаются.
Если задается имя_бд, это должно быть имя одной проверяемой базы данных, и никакие другие параметры выбора баз данных задаваться не должны. В ином случае, если присутствуют какие-либо параметры выбора баз данных, будут проверяться все соответствующие базы. В отсутствие таких параметров будет проверяться база данных по умолчанию. Параметрами выбора баз данных являются --all, --database и --exclude-database. Также сюда можно включить --relation, --exclude- relation, --table, --exclude-table, --index и --exclude-index, но только когда эти параметры используются с трехкомпонентным шаблоном (например, mydb*.myschema*.myrel*). И, наконец, к ним можно отнести --schema и --exclude-schema, когда эти параметры используются с двухкомпонентным шаблоном (например, mydb*.myschema*).
В качестве параметра имя_бд может также передаваться строка подключения.
Параметры
Следующие параметры командной строки определяют, что будет проверяться:
-a
--all
Проверить все базы данных, кроме исключенных параметром --exclude-database.
-d шаблон
--database=шаблон
Проверить базы данных, соответствующие заданному шаблону, кроме
исключенных параметром --exclude-database. Этот параметр можно указать
неоднократно.
-D шаблон
--exclude-database=шаблон
Исключить базы данных, соответствующие заданному шаблону. Этот параметр
можно указать неоднократно.
-i шаблон
--index=шаблон
Проверить индексы, соответствующие заданному шаблону, если они не
исключены каким-либо образом. Этот параметр можно указать неоднократно.
Этот параметр схож с параметром --relation за исключением того, что он
применяется только к индексам, а не к другим типам отношений.
-I шаблон
--exclude-index=шаблон
Исключить индексы, соответствующие заданному шаблону. Этот параметр
можно указать неоднократно.
Этот параметр схож с параметром --exclude-relation, за исключением того, что
он применяется только к индексам, а не к другим типам отношений.
-r шаблон
--relation=шаблон
Проверить отношения, соответствующие заданному шаблону, если они не
исключены каким-либо образом. Этот параметр можно указать неоднократно.
Шаблоны могут быть неполными, например myrel*, либо могут быть дополнены схемой,
например myschema*.myrel*, либо могут быть дополнены базой данных и схемой,
например mydb*.myschema*.myrel*. Если шаблон указан с базой данных, все
соответствующие базы будут добавлены в список проверяемых.
-R шаблон
--exclude-relation=шаблон
Исключить отношения, соответствующие заданному шаблону. Этот параметр
можно указать неоднократно.
Как и с --relation, шаблон может быть неполным, дополненным схемой
или базой данных и схемой.
-s шаблон
--schema=шаблон
Проверить таблицы и индексы в схемах, соответствующие заданному шаблону,
если они не исключены каким-либо образом. Этот параметр можно указать неоднократно.
Чтобы выбрать таблицы только в схемах, соответствующих определенному шаблону, можно
написать что-то вроде --table=ШАБЛОН_СХЕМЫ.* --no-dependent-indexes. Чтобы
выбрать только индексы, можно использовать синтаксис --index=ШАБЛОН_СХЕМЫ.*.
Шаблон схемы можно дополнить указанием базы данных. Например, можно написать
--schema=mydb*.myschema*, чтобы выбрать схемы, соответствующие myschema*,
в базах данных, соответствующих mydb*.
-S шаблон
--exclude-schema=шаблон
Исключить таблицы и индексы, соответствующие заданному шаблону. Этот
параметр можно указать неоднократно.
Как и в --schema, шаблон можно дополнить указанием базы данных.
-t шаблон
--table=шаблон
Проверить таблицы, соответствующие заданному шаблону, если они не
исключены каким-либо образом. Этот параметр можно указать неоднократно.
Этот параметр схож с параметром --relation, за исключением того, что он
применяется только к таблицам, материализованным представлениям и
последовательностям, а не к индексам.
-T шаблон
--exclude-table=шаблон
Исключить таблицы, соответствующие заданному шаблону. Этот параметр
можно указать неоднократно.
Этот параметр схож с параметром --exclude-relation, за исключением того, что
он применяется только к таблицам, материализованным представлениям и
последовательностям, а не к индексам.
--no-dependent-indexes
По умолчанию, если проверяется таблица, также будут проверяться все индексы
B-деревья, даже если они не были явно выбраны параметрами вроде --index или
--relation. Данный параметр подавляет это поведение.
--no-dependent-toast
По умолчанию, если проверяется таблица, также будет проверяться ее таблица TOAST
(если таковая имеется), даже она не была явно выбрана параметрами вроде --table
или --relation. Данный параметр подавляет это поведение.
--no-strict-names
По умолчанию, если аргументу --database, --table, --index или
--relation не соответствует ни один объект, это является критической ошибкой.
Данный параметр снижает уровень ошибки до предупреждения.
Следующие параметры командной строки управляют проверками таблиц:
--exclude-toast-pointers
По умолчанию, когда в таблице встречается указатель на TOAST, производится поиск
для проверки того, что указатель ссылается на однозначно корректные записи в таблице
TOAST. Эти проверки могут быть довольно медленными, и данный параметр позволяет
пропустить их.
--on-error-stop
Прекратить обработку табличного отношения после сообщения обо всех повреждениях
на первой странице, где они были обнаружены, и перейти к следующей таблице или
индексу.
Обратите внимание, что проверка индекса всегда прекращается после обнаружения
первой поврежденной страницы. Этот параметр актуален только для табличных
отношений.
--skip=параметр
Если задано all-frozen, проверки повреждений таблиц будут пропускать страницы,
помеченные как полностью замороженные, во всех таблицах.
Если задано all-visible, проверки повреждений таблиц будут пропускать страницы,
помеченные как полностью видимые, во всех таблицах.
По умолчанию никакие страницы не пропускаются. Это поведение задается значением
none, но поскольку это значение по умолчанию, указывать его необязательно.
--startblock=блок
Начать проверку с блока с указанным номером. Если в проверяемом табличном
отношении находится меньше этого числа блоков, будет выдана ошибка. Этот параметр
не применим к индексам и, вероятно, полезен только при проверке одного табличного
отношения. Дополнительные пояснения см. в описании --endblock.
--endblock=блок
Закончить проверку на блоке с указанным номером. Если в проверяемом табличном
отношении находится меньше этого числа блоков, будет выдана ошибка. Этот параметр
не применим к индексам и, вероятно, полезен только при проверке одного табличного
отношения. Если проверяется и обычная таблица, и таблица TOAST, этот параметр
подействует на обе, но при проверке указателей TOAST все равно возможны обращения
к блокам за указанным пределом, если только эта проверка не выключена параметром
--exclude-toast-pointers.
Следующие параметры командной строки управляют проверками индексов B-деревьев:
--heapallindexed
Для каждого обрабатываемого индекса проверять наличие всех кортежей кучи в виде
индексных кортежей с применением параметра heapallindexed расширения
amcheck.
--parent-check
Для каждого проверяемого индекса B-дерева выполнять функцию amcheck
bt_index_parent_check, которая при проверке индекса проводит дополнительные
проверки отношений родитель/потомок.
По умолчанию выполняется функция bt_index_check утилиты amcheck, но
обратите внимание, что при использовании параметра --rootdescend неявно
выбирается функция bt_index_parent_check.
--rootdescend
Для каждого проверяемого индекса повторно находить кортежи на уровне листьев,
для каждого кортежа заново проводя поиск с корневой страницы с помощью параметра
rootdescend расширения amcheck.
При использовании этого параметра также неявно выбирается параметр --parent-check.
Эта форма проверки изначально была написана в помощь разработке функциональности
индексов B-деревьев. Она может иметь ограниченное применение или вовсе быть
бесполезной для обнаружения тех видов повреждений, которые встречаются на практике.
Также она может значительно замедлить проверку на повреждения и потребовать гораздо
больше серверных ресурсов.
ВНИМАНИЕ!
Дополнительные проверки, выполняемые для индексов B-деревьев, когда указан параметр --parent-check или --rootdescend, требуют относительно тяжелых блокировок на уровне отношений. Только эти проверки блокируют параллельное изменение данных командамиINSERT
,UPDATE
иDELETE
.
Следующие параметры командной строки управляют подключением к серверу:
-h имя_хоста
--host=имя_хоста
Задает имя компьютера, на котором работает сервер. Если значение начинается со
слэша, оно определяет каталог сокета домена Unix.
-p порт
--port=порт
Указывает порт TCP или расширение файла локального сокета домена Unix, на котором
сервер принимает подключения.
-U имя_пользователя
--username=имя_пользователя
Имя пользователя для подключения.
-w
--no-password
Никогда не запрашивать ввод пароля. Если серверу требуется аутентификация по
паролю, и пароль недоступен с помощью иных средств, таких как файл .pgpass,
попытка подключения завершится неудачно. Этот параметр может быть полезен в
пакетных заданиях и скриптах, где нет пользователя, чтобы ввести пароль.
-W
--password
Принудительно запрашивать пароль перед подключением к базе данных, даже если он
не будет использоваться.
Это несущественный параметр, поскольку qhb_amcheck автоматически запросит
пароль, если сервер требует аутентификацию по паролю. Однако чтобы понять, что
требуется пароль, qhb_amcheck потребуется дополнительная попытка подключения
к серверу. В некоторых случаях имеет смысл ввести -W, чтобы исключить эту
лишнюю попытку.
--maintenance-db=имя_бд
Задает базу данных или строку подключения для установки
подключения, через которое будет получен список баз данных для проверки. Если не
установлен ни --all, ни какой-либо из параметров, задающих шаблон баз данных,
такое подключение не требуется, и этот параметр ничего не делает. В ином случае
все параметры из строки подключения, кроме имени базы данных, включенные в значение
этого параметра, также будут использованы при подключении к проверяемым базам
данных. Если этот параметр опущен, по умолчанию выполняется подключение к базе
qhb, а если к ней подключиться не удается — к базе
template1.
Также доступны другие параметры:
-e
--echo
Выводить в stdout все запросы SQL, передаваемые серверу.
-j число
--jobs=число
Использовать заданное число одновременных подключений к серверу или, если
проверяемых объектов меньше, чем заданных подключений, по одному на объект.
По умолчанию используется одно подключение.
-P
--progress
Показывать информацию о прогрессе операции. Информация о прогрессе включает число
отношений, для которых уже была проведена проверка, и общий размер этих отношений.
В нее также включается общее число отношений, которые в итоге будут проверены, и
примерный размер этих отношений.
-v
--verbose
Выводить больше сообщений. В частности, будут выводиться сообщения о каждом
проверенном отношении, а также повысится уровень детализации серверных ошибок.
--version
Вывести версию qhb_amcheck и завершиться.
--install-missing
--install-missing=схема
Установить все отсутствующие расширения, требуемые для проверки баз(ы) данных.
Если это расширение еще не было установлено, все его объекты будут установлены в
указанную схему или, если она не задана, в схему pg_catalog.
В настоящее время единственным необходимым расширением является amcheck.
-?
--help
Показать справку об аргументах командной строки qhb_amcheck и завершиться.