Назад | Перейти на главную страницу

Как восстановить пользовательские таблицы Oracle по умолчанию?

Эта проблема:

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

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

В процессе импорта Oracle запросила systemимя пользователя и пароль. Я, подумав, что это просто необходимо для аутентификации, согласился.

Вместо этого произошло то, что таблицы базы данных файла дампа были восстановлены пользователю. system.

Возможно, я мало что знаю об Oracle, но могу предположить, что это, вероятно, плохой. Действительно плохо. Я смотрю на Oracle SQL Developer и вижу МНОГО таблиц, которых, вероятно, не должно быть - я почти уверен, что ACCRUALRULE не является системной таблицей Oracle.

Как это исправить? Есть ли способ сбросить пользователя system вернуться к настройкам по умолчанию? Мне бы очень не хотелось вручную избавляться от каждого стола, особенно учитывая, что я не знаю, какие из них должны там оставаться.

Спасибо.

Моя система:

Если у меня нет резервной копии и Flashback отключен, я бы сделал что-то вроде этого:

select 'drop table ' || table_name || ' cascade constraints purge;'
from dba_tables
where table_name in (
  select object_name
  from dba_objects
  where owner = 'SYS'
  and object_type = 'TABLE'
  and created > 'DATE-OF-IMPORT-HERE');

Конечно, вам нужно дважды проверить перед запуском этих DDL (ищите системные таблицы, у вас не должно быть много их, созданных после импорта). И повторить это для других объектов.

И конечно же тест и бэкап!

Удалите созданные объекты вручную (убедившись, что они действительно созданы из дампа) или восстановите из резервной копии ...

PS: Сделайте резервную копию и проверьте эту резервную копию на другой машине или в виртуальной машине, прежде чем что-либо делать с SYS !!!

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

Oracle Flashback в "Перемотка базы данных с помощью Flashback Database"