Перемещение экстентов
Помимо мониторинга использования экстентов базы данных, необходимо контролировать заполнение экстентами пространства на диске. Существует множество административных инструментов, позволяющих отслеживать свободное место на диске. В СУБД OpenEdge для этого можно воспользоваться консолью OpenEdge Management.
Если вы заметили, что ваша база данных вот-вот заполнит выделенное ей пространство на диске, вы можете переместить часть экстентов с одного диска на другой, чтобы освободить пространство и предоставить базе данных возможность дальнейшего роста. Самый простой способ – это добавить новые экстенты, разместив их на других дисках. Для этого используется уже известная вам, утилита prostrct add/addonline. Но в некоторых ситуациях может потребоваться перенести существующие экстенты на другой диск, для чего необходимо выполнить более сложные манипуляции с экстентами. Об этом вы и узнаете далее, но сначала рассмотрим, как выполнять мониторинг используемого пространства базой данных с помощью OpenEdge Management.
Для мониторинга использования дискового пространства в OpenEdge Management используется страница File Systems. Для перехода на эту страницу щёлкните мышью по меню Resources и в разделе Discover перейдите по ссылке File Systems.
Страница File Systems содержит информацию об использовании не только пространства на диске, но и информацию о размещённых на диске экстентах базы данных, в том числе размер каждого файла базы данных, используемое файлом пространство в процентах относительно размера диска, количество чтений и записей в файл. На основании этих данных вы можете определить, какие экстенты необходимо переместить. Например, можно переместить на новый диск экстенты, которые занимают большое дисковое пространство или переместить определённые экстенты на более быстрый диск, если к ним происходит наибольшее количество обращений.
Пример страницы File Systems:
Перед перемещением экстентов необходимо остановить базу данных. При этом возьмите себе за правило всегда формировать резервную копию перед выполнением не только этой процедуры, но и во всех прочих случаях выполнения административных задач, при которых существует, пусти и минимальный, но риск возникновения сбоя в процессе выполнения.
Для перемещения экстента необходимо:
1. Вручную переместить экстент на новое место, используя инструменты операционной системы.
2. Внести изменения в структурный файл о новом месторасположении перемещаемого экстента. Перед переносом экстента инструментами операционной системы необходимо обновить структурный файл базы данных командой prostrct list и только после этого вносить изменения в файл о новом местоположении перемещаемого экстента. В результате у вас будет актуальный .st-файл. Если вы не сделаете этих изменений, то далее, при обновлении информации в .db-файле на основе «старого» .st-файла, база данных в лучшем случае так и «не узнает» о новом расположение перемещённого экстента, а поскольку фактически экстента на старом месте нет, то вы не сможете работать с такой базой данных.
3. Обновить .db-файл используя утилиту prostrct repair и обновлённые данные из .st-файла. Утилита prostrct repair обновит информацию о размещении экстентов в .db-файле на основе подготовленного структурного файла базы данных. Как вы помните из предыдущих уроков, .db-файл – это фактические «оглавление» содержимого базы данных. Как в книге по оглавлению мы ищем нужную главу, так и база данных на основании информации из .db-файла «узнаёт» о месторасположении её экстентов.
Синтаксис команды:
prostrct repair <db-name> [.st-file]
Указывать структурный файл в команде prostrct repair необязательно, так как по умолчанию утилита будет использовать структурный файл базы данных, размещённый в каталоге базы данных с именем db-name.st.
4. Обновить .st-файл базы данных утилитой prostrct list, чтобы убедиться, что новый путь к экстенту зафиксирован в базе.