Я предваряю здесь свои замечания примечанием: это НЕ нормативный образец. Обычно мы используем RMAN для резервного копирования ВСЕХ файлов данных в базе данных. С этим сказал ...
Да, возможно восстановить и восстановить базу данных из резервной копии с помощью файла данных m msing. Но для восстановления потребуется для удаления табличного пространства при восстановлении базы данных.
Для простого случая удаления табличного пространства, содержащего один файл данных: сначала восстановите файлы базы данных, затем:
STARTUP NOMOUNT;
ALTER DATABASE MOUNT ;
ALTER DATABASE DATAFILE '<complete_path_to_datafile>' OFFLINE DROP ;
ALTER DATABASE OPEN ;
DROP TABLESPACE <tablespace_name> INCLUDING CONTENTS ;
Затем продолжите восстановление базы данных (RECOVER DATABASE;)
Очевидно, что имя табличного пространства, указанное вами в команде DROP TABLESPACE, будет тем, которое связано с удаленным файлом данных.
Очевидно, что это не будет работать для табличного пространства SYSTEM. И я бы не посмел попробовать это на других табличных пространствах, таких как UNDO, SYSAUX, USERS. И есть другой синтаксис для удаления и добавления ВРЕМЕННЫХ ТАБЛИЦ.
Я не знаю каких-либо «ошибок» с «DROP TABLESPACE ... ВКЛЮЧАЯ СОДЕРЖАНИЕ», но считаю, что объекты в других табличных пространствах могут быть затронуты. (Учтите, что удаленное табличное пространство может иметь индексы для таблиц в других табличных пространствах, влияние на ограничения внешнего ключа, влияние на хранимые процедуры и т. Д.)
И само собой разумеется, что вам потребуется проверить этот тип процедуры восстановления в тестовой среде до , когда вы будете использовать эту технику в производстве.
Без тестирования вы бы гораздо лучше обслужили, используя RMAN для резервного копирования ВСЕХ файлов данных.
ПРИМЕЧАНИЕ: я не делал ничего подобного со времен Oracle 8, возможно, Oracle 7.3 (тогда, когда нам приходилось накатывать собственные сценарии hotbackup). С тех пор, как мы начали использовать RMAN, у меня не было необходимости тестировать что-то подобное.
ПРИМЕЧАНИЕ. Возможно, потребуется запустить базу данных RECOVER до открытия ALTER DATABASE. Я думаю, что вы можете получить предупреждение об исключении «файл данных нуждается в большем восстановлении», как вы делаете это при запуске базы данных, когда табличное пространство оставлено в режиме BEGIN BACKUP ...