Oracle 12g - 如何恢复被覆盖的表空间文件?

Oracle 12g - How to recover overwritten tablespace file?

我不小心更改了表空间以将新文件添加到当前表空间,但我不小心使用了与现有文件相同的名称。换句话说,我覆盖了一个现有的。

我的问题是:

  1. 我如何知道我的表中的哪一行从该表空间中被覆盖?
  2. 如何恢复被覆盖的表空间?考虑到它发生在 2 天前。

如果有帮助,我使用的查询: ALTER TABLESPACE [TABLESPACE NAME] ADD DATAFILE '[EXISTING DBF FILE]' SIZE 2000M AUTOEXTEND ON NEXT 10M MAXSIZE 20000M;

数据库不允许您添加已经是数据库一部分的文件

SQL> create tablespace demo datafile 'X:\ORADATA\DB18\PDB1\DEMO.DBF' size 10m;

Tablespace created.

SQL> alter tablespace demo add datafile 'X:\ORADATA\DB18\PDB1\DEMO.DBF' size 10m;
alter tablespace demo add datafile 'X:\ORADATA\DB18\PDB1\DEMO.DBF' size 10m
*
ERROR at line 1:
ORA-01537: cannot add file 'X:\ORADATA\DB18\PDB1\DEMO.DBF' - file already part of database

所以这一定是发生了其他事情。

但除此之外,如果某些外部操作已经吞噬了该数据文件,那么唯一的办法就是从备份中恢复该文件,并向前恢复。你如何从这里开始取决于你有什么备份,你使用什么工具进行备份等。

但是如果您使用的是 RMAN,那么标准文档有一套场景可以引导您完成所需的操作。

https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/index.html