Flash recovery area - область восстановления в базе данных Oracle

Илья Дергунов

Илья Дергунов

Автор статьи. ИТ-специалист с 20 летним стажем, автор большого количества публикаций на профильную тематику (разработка ПО, администрирование, новостные заметки). Подробнее.

Flash recovery area - пакетное восстановление в базе данных OracleКомпания Oracle рекомендует назначать область пакетного восстановления (flash recovery area) в качестве стандартной области для хранения каждого файла, который имеет отношение к операциям резервного копирования и восстановления. Поэтому одним из первых шагов в процессе подготовки стратегии резервного копирования и восстановления является конфигурирование области пакетного восстановления.

Раньше администраторам баз данных Oracle приходилось самостоятельно управлять областями хранения резервных копий и удостоверяться в наличии в них достаточного места для сохранения связанных с резервным копированием файлов. Теперь, однако,стало возможно позволять заботиться о выполнении этих задач базе данных за счет применения функции Automatic Disk-Based Backup and Recovery (Автоматическое дисковое резервное копирование и восстановление). Применение для резервного копирования стратегии, подразумевающей использование дисков, сводит к минимуму время, требуемое для восстановления базы данных, и увеличивает степень ее доступности.


На заметку! Настраивать область пакетного восстановления не обязательно, но настоятельно рекомендуется. Некоторые функции для резервного копирования и восстановления баз данных Oracle, наподобие Oracle Flashback Database (Ретроспективный откат базы данных Oracle), требуют использования этой области. Хранить в ней все связанные с резервным копированием файлы не обязательно, хотя Oracle рекомендует поступать именно таким образом.


Для включения функции Automatic Disk-Based Backup and Recovery необходимо выделить достаточный объем дискового пространства под область пакетного восстановления, установить для нее максимальный размер и указать Oracle, насколько долго должна храниться связанная с резервным копированием информация. Тогда Oracle будет управлять всеми резервными копиями, копиями файлов архивных журналов, управляющих файлов и прочих файлов в том числе (запасной набор тоже будет входить в этот набор файлов). Кроме того, Oracle будет удалять любые файлы, в которых база данных больше не нуждается. Следовательно, получается, что все, что требуется от администратора баз данных — это просто выделить для области пакетного восстановления достаточный объем пространства и выбрать подходящий период для хранения файлов.

В том, что касается автоматического удаления нежелательных файлов, база данных Oracle полагается на систему Oracle Managed Files (Управляемые файлы Oracle) или просто OMF. Система OMF автоматизирует управление файлами базы данных Oracle за счет создания и управления ими так, будто бы он являются частью операционной системы. Настраивается файловая система OMF установкой следующих связанных с ней параметров инициализации: DB_CREATE_FILE_DEST и DB_CREATE_ONLINE_LOG_DEST_n. Система OMF обладает способностью создавать и удалять файлы Oracle без участия администратора баз данных. Утилита RMAN использует эту ее способность в своих связанных с резервным копированием и восстановлением функциях вместе с областью пакетного восстановления. При желании область пакетного восстановления можно также применять и вместе с файловой системой ASM.


Совет. Область пакетного восстановления может совместно использоваться несколькими базами данных.


 

Преимущества flash recovery area (области пакетного восстановления)

Ниже перечислены главные преимущества области пакетного восстановления.

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

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

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

В случае настройки области пакетного восстановления утилита RMAN будет по умолчанию сохранять все свои связанные с резервным копированием файлы в ней, и тогда Oracle будет использовать файлы OMF и генерировать имена для них автоматически.

В частности, в области пакетного восстановления может содержаться следующая информация.

  • Копии файлов данных. RMAN-команда BACKUP AS COPY предусматривает создание копий образов каждого файла данных. Это значит, что утилита RMAN будет сохранять эти копии в области пакетного восстановления. Вдобавок в области пакетного восстановления могут храниться фрагменты резервных копий RMAN (Фрагментом резервной копии RMAN называется файл операционной системы, содержащий резервную копию файла данных, управляющего файла или файлов архивных журналов повторного выполнения.)
  • Инкрементные резервные копии. Если выбранная стратегия резервного копирования предусматривает создание инкрементных резервных копий, они могут сохраняться здесь.
  • Автоматические резервные копии управляющих файлов. Область пакетного восстановления по умолчанию используется для сохранения всех резервных копий управляющих файлов, которые создаются RMAN автоматически.
  • Файлы архивных журналов повторного выполнения. Oracle автоматически удаляет любой устаревающий файл и каждый файл, которые переносится на ленту, что делает область пакетного восстановления идеальным местом для хранения файлов архивных журналов повторного выполнения.
  • Файлы оперативных журналов повторного выполнения. В Oracle рекомендуют сохранять мультиплексированные копии файлов оперативных журналов повторного выполнения в области пакетного восстановления. Oracle генерирует свои собственные имена для этих файлов.
  • Текущие управляющие файлы. Мультиплексированные копии текущих управляющих файлов тоже следует хранить в области пакетного восстановления.
  • Журналы ретроспективных данных. Журналы ретроспективных данных генерируются поддерживаемой в Oracle функцией ретроспективного отката базы данных (Flashback Database), которая представляет собой удобную альтернативу традиционному механизму восстановления до состояния на определенный момент в прошлом (PITR). Oracle сохраняет эти журналы в области пакетного восстановления. Функция Flashback Database, если она включена, копирует в них образы каждого блока, который был изменен в каждом файле данных.

Мультиплексированные файлы журналов повторного выполнения и управляющие файлы, которые содержатся в области пакетного восстановления, называются постоянными (permanent), поскольку их никогда не следует удалять (их удаление в конечном итоге обязательно приведет к аварийному отказу экземпляра). Все остальные файлы, которые содержатся в области пакетного восстановления (и имеют отношение к восстановлению), называются непостоянными (transient), потому что после устаревания или копирования на ленту будут удаляться. К числу непостоянных файлов относятся архивные журналы повторного выполнения, копии файлов данных, копии управляющих файлов, автоматические резервные копии управляющих файлов и фрагменты резервных копий.


На заметку! Архивные журналы, не сохраняемые на ленте, следует хранить хотя бы в области пакетного восстановления.


Фоновый процесс архивирования (ARCn) будет автоматически делать копию каждого файла архивного журнала повторного выполнения в области пакетного восстановления, если область пакетного восстановления была указана как место для сохранения архивных журналов. В случае настройки области пакетного восстановления использовать прежние параметры LOG_ARCHIVE_DEST и LOG_ARCHIVE_DUPLEX_DEST не получится; вместо них нужно применять параметр LOG_ARCHIVE_DEST_n. Параметр LOG_ARCHIVE_DEST_10 неявным образом устанавливается в область пакетного восстановления, в которой база данных будет сохранять файлы архивных журналов повторного выполнения. В случае не указания никаких других локальных мест для размещения архивов параметр LOG_ARCHIVE_DEST_10 по умолчанию устанавливается в USE_DB_RECOVERY_FILE_DEST. Это означает, что файлы архивных журналов повторного выполнения будут автоматически отправляться в область пакетного восстановления. Вдобавок, в случае указания дополнительных мест для сохранения архивных журналов с помощью параметра LOG_ARCHIVE_DEST_n, копии всех архивных журналов повторного выполнения будут также отправляться и в эти дополнительные места.

Например, в случае настройки области пакетного восстановления и включения для базы данных функции архивирования без указания явного места для сохранения архивных журналов, а затем выполнения команды ARCHIVE LOG LIST, на экране появится примерно такая информация: 

SQL> ARCHIVE LOG LIST
Database log mode             Archive Mode
Automatic archival            Enabled
Archive destination           USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence    825
Next log sequence to archive  827
Current log sequence          827
SQL>

Параметр USE_DB_RECOVERY_FILE_DEST указывает на область пакетного восстановления в базе данных. Объясняется это тем, что область пакетного восстановления была сконфигурирована, но значение для параметра LOG_ARCHIVE_DEST_n указано не было. Поэтому LOG_ARCHIVE_DEST_10 в качестве целевого места неявно назначается область пакетного восстановления. (Это поведение можно легко переопределить явным присваиванием LOG_ARCHIVE_DEST_10 пустой строки.)

 

Установка размера для области пакетного восстановления

В Oracle рекомендуют, чтобы размер области пакетного восстановления соответствовал сумме размеров базы данных, любых инкрементных копий и каждого архивного журнала повторного выполнения.

Область пакетного восстановления должна быть большой настолько, чтобы в ней могли умещаться следующие элементы:

  • копии всех файлов данных;
  • инкрементные резервные копии;
  • оперативные журналы повторного выполнения;
  • архивные журналы повторного выполнения, которые не сохранялись на ленте;
  • управляющие файлы;
  • автоматические резервные копии управляющих файлов.

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

Размер базы данных является главным фактором при определении размера для области пакетного восстановления. К числу других факторов, которые тоже оказывают влияние на выбор размера для области пакетного восстановления, относятся:

  • политика периода сохранности резервных копий RMAN;
  • тип устройства хранения, которое планируется использовать для хранения резервных копий (лента и диск или только дисковое устройство);
  • количество изменений блоков данных в базе данных.

 

Способы создания области пакетного восстановления

Создавать область пакетного восстановления можно несколькими способами.

  • Конфигурирование ее на этапе создания базы данных при помощи инструмента DBCA (Database Configuration Assistant — Помощник по конфигурированию базы данных).
  • Конфигурирование двух связанных с ней динамических параметров инициализации (такой способ позволяет создавать область пакетного восстановления, когда база данных уже работает).
  • Применение для ее конфигурирования интерфейса OEM Database Control.

 

Конфигурирование области пакетного восстановления

Для конфигурирования области пакетного восстановления применяются два параметра инициализации, которые описаны ниже.

  • DB_RECOVERY_FILE_DEST_SIZE. Этот параметр позволяет задавать максимальный размер для области пакетного восстановления.
  • DB_RECOVERY_FILE_DEST. Этот параметр позволяет указывать место размещения области пакетного восстановления на диске. Область пакетного восстановления должна обязательно размещаться на диске отдельно от области базы данных, в которой хранятся активные файлы базы данных, наподобие файлов данных, управляющих файлов и оперативных журналов повторного выполнения.

Параметр DB_RECOVERY_FILE_DEST_SIZE задается перед параметром DB_RECOVERY_FILE_DEST.

Ниже приведен пример задания этих двух параметров инициализации области пакетного восстановления в файле init.ora:

DB_RECOVERY_FILE_DEST_SIZE = 10G
DB_RECOVERY_FILE_DEST = '/u01/oradata/rcv_area'

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

 

Определение области пакетного восстановления динамическим образом

Конфигурировать область пакетного восстановления можно не только статически с помощью файла init.ora или SPFILE, но и динамически — оператором ALTER SYSTEM и теми же параметрами DB_RECOVERY_FILE_DEST и DB_RECOVERY_FILE_DEST_SIZE, как показано ниже: 

SQL> ALTER SYSTEM SET
2* DB_RECOVERY_FILE_DEST_SIZE = 2G;
System altered.
SQL> ALTER SYSTEM SET
2 DB_RECOVERY_FILE_DEST = '/u01/app/oracle/flashrec_area';
System altered.
SQL>

Как уже упоминалось выше, параметр DB_RECOVERY_FILE_DEST_SIZE нужно задавать первым, перед параметром DB_RECOVERY_FILE_DEST. Прежде чем использовать параметр DB_RECOVERY_FILE_DEST необходимо обязательно удостоверяться в том, что каталог области пакетного восстановления уже создан. Конструкция SCOPE=BOTH гарантирует, что все внесенные изменения будут записаны в файл SPFILE. При желании внести какие-то изменения в параметры области пакетного восстановления после ее создания достаточно снова выдать команду ALTER SYSTEM.


На заметку! Место, указываемое в DB_RECOVERY_FILE_DEST, по сути, является синонимом места размещения области пакетного восстановления.


 

Отключение текущей области пакетного восстановления

При желании отключить текущую область пакетного восстановления нужно установить для параметра DB_RECOVERY_FILE_DEST пустое значение (''). Это приводит к сбрасыванию места назначения, установленного для размещения файлов области пакетного восстановления. Узнать, как в текущий момент выглядит место размещения области пакетного восстановления, можно с помощью представления V$RECOVERY_FILE_DEST.

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

 

Указание места, которое должно использоваться по умолчанию для размещения файлов

Область пакетного восстановления требует, чтобы использовалась система OMF, а это означает, что применять параметры LOG_ARCHIVE_DEST и LOG_ARCHIVE_DUPLEX_DEST для указания целевого места, в котором должны размещаться архивы журналов повторного выполнения, нельзя (в случае их применения включить область пакетного восстановления не получится). Вместо них необходимо использовать более новые параметры LOG_ARCHIVE_DEST_n.

Когда применяется система OMF, Oracle назначает место, которое должно по умолчанию использоваться для размещения файлов данных, управляющих файлов и файлов журналов повторного выполнения, на основании значений параметров DB_CREATE_FILE_DEST и DB_CREATE_ONLINE_LOG_DEST_n. Эти два параметра инициализации применяются вместе с параметром DB_RECOVERY_FILE_DEST, в котором задается место размещения области пакетного восстановления.


На заметку! Место, указываемое в параметре DB_RECOVERY_FILE_DEST, не должно совпадать ни с тем, что задается в параметре DB_CREATE_FILE_DEST, ни с тем, что указывается в любом из вариантов параметра DB_CREATE_ONLINE_LOG_DEST_n.


 

Управляющие файлы

Установка параметра CONTROL_FILES перед запуском экземпляра и созданием новой базы данных вынуждает Oracle создавать управляющие файлы в указываемых местах. В случае если параметр CONTROL_FILES не задается во время создания экземпляра, Oracle следует при создании управляющих файлов таким правилам.

  • Задание параметра DB_CREATE_ONLINE_LOG_DEST_n заставляет Oracle создавать управляющий файл на базе OMF в соответствующем указанному на месте n количестве мест. Главный экземпляр управляющего файла размещается в первом каталоге.
  • В случае задания параметров DB_CREATE_FILE_DEST и DB_RECOVERY_FILE_DEST, Oracle создает управляющий файл на базе OMF в местах, на которые указывают оба этих параметра.
  • В случае задания только параметра DB_RECOVERY_FILE_DEST, Oracle создает управляющий файл на базе OMF только в области пакетного восстановления.
  • В случае если не задан ни один из этих параметров инициализации, Oracle создает управляющий файл, отличный от OMF, в принятом по умолчанию каталоге системы.

 

Файлы журналов повторного выполнения

Как уже отмечалось ранее, применять параметры LOG_ARCHIVE_DEST и LOG_ARCHIVE_DUPLEX_DEST для указания мест, в которых должны размещаться архивы журналов повторного выполнения, нельзя. Если конструкция LOGFILE не задана при создании базы данных, Oracle следует при создании файлов журналов повторного выполнения перечисленным ниже правилам.

  • Если задается параметр DB_CREATE_ONLINE_LOG_DEST_n, Oracle создает файл оперативного журнала повторного выполнения в соответствующем указанному на месте n количестве мест. Максимальное число, которое может указываться на месте n, совпадает со значением параметра MAXLOGMEMBERS.
  • Если задаются параметры DB_CREATE_FILE_DEST и DB_RECOVERY_FILE_DEST, Oracle создает файл оперативного журнала повторного выполнения, в местах, на которые указывают оба этих параметра.
  • Если задается только параметр DB_RECOVERY_FILE_DEST, Oracle создает файл оперативного журнала повторного выполнения только в области пакетного восстановления, и также неявно устанавливает эту область в качестве значения для параметра LOG_ARCHIVE_DEST_10.
  • Если не задан ни один из этих трех параметров инициализации, Oracle создает файл журнала повторного выполнения, отличный от OMF, в принятом по умолчанию каталоге системы.

 

Настройка параметров пакетного восстановления

Давайте еще раз посмотрим на процедуру конфигурирования области пакетного восстановления и рассмотрим пример настройки параметров пакетного восстановления в файле инициализации. В этом примере предполагается, что используется система OMF. Файлы OMF автоматически именуются и управляются самой базой данных Oracle. Достаточно лишь предоставить для этих файлов каталог, а обо всем остальном позаботится Oracle.

В случае использования файлов OMF для указания Oracle, где следует создавать файлы данных, оперативные журналы повторного выполнения и управляющие файлы, применяются два параметра. Для указания места размещения всех файлов базы данных применяется параметр DB_CREATE_FILE_DEST, а для указания места размещения всех оперативных журналов повторного выполнения и управляющих файлов — параметр DB_CREATE_ONLINE_LOG_DEST_n. В случае пропуска второго параметра Oracle будет создавать файлы всех трех перечисленных типов в каталоге, который был указан в параметре DB_CREATE_FILE_DEST.

Например, ниже приведен ряд параметров инициализации, которые можно было бы использовать для создания базы данных test:

DB_CREATE_FILE_DEST = /u02/test/oradata/dbfiles/
LOG_ARCHIVE_DEST_1 = 'LOCATION=/u03/test/arc_dest1'
LOG_ARCHIVE_DEST_2 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST'
DB_RECOVERY_FILE_DEST = '/u03/test/oradata/rcv_area'
DB_RECOVERY_FILE_DEST_SIZE = 10G

Эти параметры приведут к созданию следующих элементов.

  • Основанные на OMF файлы данных, файлы оперативных журналов повторного выполнения и управляющие файлы в каталоге, на который указывает параметр DB_CREATE_FILE_DEST.
  • Одна копия текущего управляющего файла в области пакетного восстановления, поскольку используются оба параметра — и DB_CREATE_FILE_DEST, и DB_RECOVERY_FILE_DEST.
  • Одна копия файлов оперативных журналов повторного управления в области пакетного восстановления, поскольку используются оба параметра — и DB_CREATE_FILE_DEST, и DB_RECOVERY_FILE_DEST.
  • Одна копия архивных журналов повторного выполнения в файловой системе, как указывает параметр LOG_ARCHIVE_DEST_1='LOCATION=/u03/test/arc_dest1';
  • Одна копия файлов архивных журналов повторного выполнения в области пакетного восстановления, как указывает параметр LOG_ARCHIVE_DEST_2='LOCATION=USE_DB_RECOVERY_FILE_DEST'.

В случае точного физического отделения области пакетного восстановления от остальных файлов выполнение описанного здесь примера гарантирует создание безопасного запасного набора файлов. По умолчанию RMAN будет отправлять все резервные копии файлов данных и управляющих файлов в область пакетного восстановления. Вдобавок согласно заданным здесь параметрам туда будут также отправляться и копии оперативных журналов повторного выполнения и управляющих файлов. Вот так и получится запасной набор.

 

Выполнение резервного копирования области пакетного восстановления

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

В частности, RMAN-команда BACKUP RECOVERY AREA позволяет делать резервную копию каждого файла пакетного восстановления, который находится либо в текущей, либо в предыдущей области пакетного восстановления. Она будет приводить к резервному копированию только тех файлов, которые еще не архивировались на ленту раньше.

Такая команда RMAN, как BACKUP RECOVERY FILES, позволяет создать резервную копию каждого файла, что и команда BACKUP RECOVERY AREA, но включает в процесс резервного копирования файлы из всех областей, которые имеются в файловой системе.


Совет. Команду BACKUP RECOVERY FILES можно также использовать для перемещения резервных копий с диска на ленту.


 

Работа с областью пакетного восстановления

Необходимо удостовериться в том, что размер области пакетного восстановления достаточен для удовлетворения имеющихся потребностей.

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

  • Постоянные файлы (мультиплексированные файлы журналов повторного выполнения и управляющие файлы) не удаляются никогда.
  • Файлы, которые устаревают согласно сконфигурированной политике сохранности, считаются годными для удаления.
  • Непостоянные файлы (все остальные файлы, кроме файлов журналов повторного выполнения и управляющих файлов), которые были скопированы на ленту, тоже считаются пригодными для удаления.

Несмотря на то что файл может становиться пригодным для удаления, Oracle удаляет его только тогда, когда в области пакетного восстановления перестает хватать места. Следовательно, файлы, недавно перемещенные на ленту, могут оставаться по-прежнему доступными на диске, если в области пакетного восстановления все еще хватает пространства.

Представление V$RECOVERY_FILE_DEST является наилучшим местом для поиска информации, касающейся управления областью пакетного восстановления. Выдав запрос к нему, можно выяснить, где в текущий момент размещается область пакетного восстановления, как выглядит ее квота на диске, сколько в ней пространства используется, сколько места можно освободить за счет удаления файлов и сколько всего файлов содержится на данный момент: 

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;
NAME             SPACE_LIMIT   SPACE_USED   SPACE_RECLAIMABLE   NUMBER_OF_FILES
----------       -----------   ----------   -----------------   ---------------
u01/app/oracle    2147483648   1545718272                   0               100
SQL>

В столбце SPACE_LIMIT представления V$RECOVERY_FILE_DEST отображается информация о том, сколько всего пространства было выделено под область пакетного восстановления, а в столбце SPACE_RECLAIMABLE — о том, сколько места можно высвободить за счет удаления устаревших и ненужных файлов в области пакетного восстановления.

С помощью представления V$FLASH_RECOVERY_AREA_USAGE удобно выяснять, сколько места в области пакетного восстановления занимают файлы различных типов и сколько места для каждого типа файлов можно высвободить за счет удаления файлов, которые устарели, являются избыточными или уже были сохранены на ленте: 

SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE     PERCENT_SPACE_USED  PERCENT_SPACE_RECLAIMABLE  NUMBER_OF_FILES
------------  ------------------  -------------------------  ---------------
CONTROLFILE                    0                          0                0
ONLINELOG                      0                          0                0
ARCHIVELOG                 43.57                          0               96
BACKUPPIECE                28.41                          0                4
IMAGECOPY                      0                          0                0
FLASHBACKLOG                   0                          0                0

Кроме того, в Oracle теперь предусмотрено отображение в представлениях V$LOGFILE, V$CONTROLFILE, V$ARCHIVED_LOG, V$DATAFILE_COPY и V$BACKUP_PIECE столбца IS_RECOVERY_DEST_FILE, значение YES в котором означает, что файл находится в области пакетного восстановления, а значение NO — в противном случае.

В случае если в области пакетного восстановления заканчивается пространство, и нет возможности удалить никакие файлы, чтобы высвободить хоть немного места, сначала выдается простое предупреждение о заполнении в 85%, а потом критическое предупреждение о заполнении в 97%. Когда такое происходит, Oracle добавляет соответствующие записи в файл журнала предупреждений и представление DBA_OUTSTANDING_ALERTS, но все равно продолжает размещать касающиеся восстановления файлы в области пакетного восстановления до тех, пока не будут заполнены все 100% пространства, после чего выдает ошибку, сообщающую о том, что область пакетного восстановления заполнена.

В частности, когда область пакетного восстановления заполняется на 100%, Oracle выдает такую ошибку: 

ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 100.00%
used, and has 0 remaining bytes available.
ПРЕДУПРЕЖДЕНИЕ: область db_recovery_file_dest_size, занимающая
2147483648 байт, используется на 100.00%; осталось 0 доступных байтов.

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

  • Ошибка ORA-19809, означающая, что был превышен лимит, указанный в параметре DB_RECOVERY_FILE_DEST_SIZE.
  • Ошибка ORA-19804, означающая, что Oracle не удается выделить указанное количество байтов из лимита, установленного в параметре DB_RECOVERY_FILE_DEST_SIZE.

На заметку! Кроме того, может появляться ошибка ORA-00257, сопровождаемая сообщением “Archiver error. Connect internal only, until freed” (Ошибка архиватора. До освобождения возможна установка только внутренних подключений). Она означает, что каталог архивных журналов полностью заполнен и пользователи больше не могут подключаться к базе данных. Существующие пользователи могут продолжать выполнять запросы к базе данных, но не могут выполнять никаких DML-операторов, потому что Oracle не может архивировать журналы. Если быстро переместить какие-то файлы из каталога архивных журналов в другое место, база данных сможет продолжить выполнение своих обычных операций. При наличии сценария, следящего за свободным местом в каталоге архивных журналов, подобной проблемы возникать не должно.


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

  • Задуматься об изменении политик, отвечающих за период сохранности резервных копий и архивных журналов.
  • Увеличить значение параметра DB_RECOVERY_FILE_DEST_SIZE.
  • Подготовить резервную копию содержимого области пакетного восстановления и сохранить ее на ленточном устройстве с помощью RMAN-команды BACKUP RECOVERY AREA.
  • Удалить ненужные файлы резервных копий утилитой RMAN, например, за счет выполнения такой команды, как DELETE OBSOLETE.

При желании переместить область пакетного восстановления нужно воспользоваться параметром инициализации DB_RECOVERY_FILE_DEST:

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/u01/app/oracle/new_area';

Такая команда вынуждает Oracle создавать файлы области пакетного восстановления в новой области пакетного восстановления. Если нужно, постоянные файлы, журналы ретроспективных данных и непостоянные файлы можно оставить там, где они и были. Тогда Oracle будет постепенно удалять все непостоянные файлы по мере того, как они будут становиться пригодными для удаления. Однако можно также и переместить все постоянные файлы, непостоянные файлы и журналы ретроспективного отката в новое место посредством стандартных команд для работы с файлами, которые предусмотрены в операционной системе.

Вас заинтересует / Intresting for you:

Ищем и исправляем ошибки в баз...
Ищем и исправляем ошибки в баз... 6770 просмотров Александров Попков Tue, 21 Nov 2017, 13:18:05
Восстановление баз данных Orac...
Восстановление баз данных Orac... 9410 просмотров Дэн Tue, 21 Nov 2017, 13:18:05
Выполнение восстановления базы...
Выполнение восстановления базы... 9670 просмотров Дэн Tue, 21 Nov 2017, 13:18:05
Восстановление в базе данных O...
Восстановление в базе данных O... 3953 просмотров Antoniy Mon, 29 Jan 2018, 16:31:55
Войдите чтобы комментировать

ildergun аватар
ildergun ответил в теме #8905 6 года 1 мес. назад
Технологии уже шагнули в будущее, но кто-то работает еще на старых версиях Оракла. Для них статья будет весьма полезной!