oracle dbf文件丢失 无备份情况下ORACLE数据文件丢失恢复

使用alter database create datafile恢复丢失数据文件

如果由于误删除操作或其它物理原因呆滞Oracle数据库数据文件丢失。
在已开启归档且所创建数据文件之后的归档都在的情况下,即使数据库没有备份,其丢失数据文件也是进行恢复的,且不会有数据丢失。

这里我们可以使用以下语句来建立新的空数据文件以替代旧数据文件:

ALTER DATABASE ... CREATE DATAFILE <filenumber>;
ALTER DATABASE CREATE DATAFILE '<filename>' AS '<filename>'; 

并在之后使用recover datafile命令来进行数据恢复。

recover datafile <filenumber>;

ALTER DATABASE ... <create_datafile_clause>:
其中<create_datafile_clause>,我们可以使用CREATE DATAFILE来建立一个新的空数据文件以替换旧的丢失文件,这是一种在无备份情况下重建数据文件的方法。
其中的<filename>或<filenumber>,必须被用于定位数据库文件。
你可以根据文件编号定位文件,文件号可以在动态性能视图v$datafile中找到file#,或在DBA_DATA_FILES数据字典视图中找到FILE_ID列值。

  • 语法中可以用AS NEW以系统自生成的方式生成Oracle数据文件名,文件大小将和被替换的旧文件大小相同,生成的数据文件存放在系统默认位置。
  • 语法中也可以用AS <filename>的形式来自定义一个新的数据文件名。
  • 如果最初丢失的数据文件(文件名或文件号)是一个Oracle管理的数据文件,那么在Oracle数据库建立新文件后,将会尝试删除最初的旧文件。
  • 如果最初丢失的数据文件是一个用户自管理的数据文件,那么Oracle数据库之后不会去删除旧文件。
  • 如果你在语句中省略AS语句,那么Oracle数据库将使用之前同名方式来建立新数据文件,沿用之前的数据文件名和文件号。

在新文件建立后,进行数据恢复时,需要所有从最初旧数据文件建立以来的归档日志,应用到新文件上。
Oracle在新文件建立后会保持和旧文件相同的文件状态。你需要进行介质恢复将新文件恢复到旧文件丢失前的状态。

建立新数据文件需要注意的限制:

SYSTEM表空间下首个数据文件不可使用此语句进行文件新建。
在CREATE DATAFILE语法中不能对临时文件指定autoextend语法。

猜你喜欢

转载自blog.csdn.net/liu_maclean/article/details/81463031