使用以下过程来恢复数据库如果永久的介质故障已损坏一个或多个数据库的控制文件和至少一个当前的控制文件没有被介质故障损坏。
1.拷贝一个多路复用控制文件到缺省的位置
如果包含丢失的控制文件的磁盘和文件系统是完好无损的,那么可以简单地拷贝完好无损的控制文件到缺失的控制文件的位置。在这种情况中,你不需要编辑CONTROL_FILES初始化参数。
通过拷贝多路复用控制文件来替换损坏的控制文件:
1)如果实例仍在运行,那么关闭它:
SQL> SHUTDOWN ABORT
2)纠正导致介质故障的硬件问题。如果你不能快速修复硬件问题,那么通过还原损坏的控制文件到备选的存储设备来继续数据库恢复。
3)使用数据库当前控制文件的完好无损的多路复用副本来拷贝覆盖损坏的控制文件。例如:
% cp /oracle/good_cf.f /oracle/dbs/bad_cf.f
4)启动实例,挂载和打开数据库。
SQL> STARTUP
2.拷贝一个多路复用控制文件到非缺省的位置
如果包含丢失的控制文件的磁盘和文件系统不是完好无损的,那么你不可以拷贝完好无损的控制文件到缺失的控制文件的位置。在这种情况中,你必须编辑CONTROL_FILES初始化参数为缺失的控制文件指示新的位置。
还原控制文件到非缺省的位置:
1)如果实例仍在运行,那么关闭它:
SQL> SHUTDOWN ABORT
2)如果不能纠正导致介质故障的硬件问题,那么拷贝完好无损的控制文件到备选的位置。
例如,拷贝control01.dbf的完整版本到新的磁盘位置:
% cp /disk1/oradata/trgt/control01.dbf /new_disk/control01.dbf
3)编辑数据库的参数文件以便CONTROL_FILES参数反映所有控制文件的当前位置和排除不能还原的所有控制文件。
假设初始化参数文件包含以下设置:
CONTROL_FILES=‘/disk1/oradata/trgt/control01.dbf’,‘/bad_disk/control02.dbf’
可以编辑CONTROL_FILES初始化参数如下:
CONTROL_FILES=‘/disk1/oradata/trgt/control01.dbf’,‘/new_disk/control02.dbf’
4)启动实例,挂载和打开数据库。
SQL> STARTUP
来源:《Oracle Database Backup and Recovery User’s Guide,19c》