Восстановление табличного пространства Oracle (APEX) из резервных копий файловой системы файлов табличного пространства базы данных - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь восстановить случайно удаленные приложения из рабочей области Oracle APEX.База данных 12c и APEX 18.1

Как лучше всего это сделать, если единственной доступной резервной копией является резервная копия на уровне ОС для папки oradata (со всеми файлами табличного пространства)?Моя схема APEX живет в своем собственном табличном пространстве.Могу ли я просто скопировать вчерашнюю копию файла табличного пространства APEX поверх текущего для восстановления?

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

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

1 Ответ

0 голосов
/ 18 мая 2019

Уточнение

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

Здесь есть несколько вариантов.Все, что вам действительно нужно, это

  1. Файл данных
  2. Контрольный файл
  3. Архив / редологи (если вы хотите двигаться вперед или назад во времени)

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

Восстановление RMAN

Сначала установите следующий параметр в файле init.ora

_allow_resetlogs_corruption=TRUE

Переместите весь oradata резервная копия каталога /tmp/oradata.Затем найдите местоположение ваших файлов dbf и ctl в этом каталоге.

Затем запустите rman target / из терминала bash.В rman запустите следующее.

RESTORE CONTROLFILE FROM '/tmp/oradata/your_ctrl_file_dir'
ALTER TABLESPACE apex OFFLINE IMMEDIATE';
SET NEWNAME FOR DATAFILE '/tmp/oradata/apex01.dbf' TO 
RESTORE TABLESPACE apex;
SWITCH DATAFILE ALL; 
RECOVER TABLESPACE apex;

Поменять файл данных

Сначала найдите местоположение ваших файлов данных.Вы можете найти их, запустив следующую команду в sqlplus / as sysdba или в любом используемом вами клиенте

spool '/tmp/spool.out'
select value from v$parameter where name = 'db_create_file_dest';
select tablespace name from dba_data_files;

Просмотрите файл spool.out и

  1. Проверьте расположение ваших файлов данных
  2. Проверьте, связан ли файл данных с этим табличным пространством.

Если табличное пространство все еще там, запустите

select file_name, status from dba_data_files WHERE tablespace name = < name > 

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

alter tablespace < name > read only;
alter tablespace < name > offline;

Теперь скопируйте в файл dbf каталог, возвращаемый из запроса значения db_create_file_dest.Не перезаписывайте старый, затем запустите.

alter tablespace < name > rename datafile '/u03/waterver/oradata/yourold.dbf' to '/u03/waterver/oradata/yournew.dbf'

Это обновит ваш контрольный файл, чтобы он указывал на новый файл данных.

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

...