如果数据文件是损坏的和没有文件的备份可用,那么你仍然可以恢复数据文件如果:
1)在原始数据文件创建之后的所有归档日志文件是可用的。
2)控制文件包含损坏文件的名称(即控制文件是当前的,或在损坏的数据文件被增加到数据库之后做的备份)
注:你不能使用ALTER DATABASE语句的CREATE DATAFILE子语句来重建SYSTEM表空间的任何数据文件,因为必要的redo不是可用的。
为恢复重建数据文件:
1)创建空的数据文件来替换没有相应备份的损坏的数据文件。例如,假设数据文件/disk1/oradata/trgt/users01.dbf是损坏的和没有备份是可用的。以下语句在disk2上重建原始的数据文件(相同大小):
ALTER DATABASE CREATE DATAFILE ‘/disk1/oradata/trgt/users01.dbf’ AS ‘/disk2/users01.dbf’;
这个语句创建一个与丢失的文件相同大小的空的文件。数据库查看控制文件中的信息和数据字典来获取大小信息。旧数据文件被重命名为新数据文件。
2)在空的数据文件上执行介质恢复。
RECOVER DATAFILE ‘/disk2/users01.dbf’
3)恢复期间所有原始数据文件创建之后写的归档日志必须应用到新的空版本的丢失的数据文件。
来源:《Oracle Database Backup and Recovery User’s Guide,19c》