千家信息网

RMAN的使用(七)

发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,十五、非归档模式下的完全恢复非归档模式下的恢复可能是完全恢复,也可能是不完全恢复,如果联机重做日志被复写,只能做不完全恢复的可能性更大。参数文件丢失1.控制文件、数据文件以及联机重做日志文件丢失的恢复
千家信息网最后更新 2024年11月16日RMAN的使用(七)

十五、非归档模式下的完全恢复

非归档模式下的恢复可能是完全恢复,也可能是不完全恢复,如果联机重做日志被复写,只能做不完全恢复的可能性更大。

参数文件丢失

1.控制文件、数据文件以及联机重做日志文件丢失的恢复

先对数据库做全备。包括数据文件、控制文件和参数文件,并使用快闪恢复区作为备份目录。

SQL> shutdown immediate;

SQL> startup mount;

[oracle@oracle11g ~]$ rman target username/password

RMAN> backup as compressed backupset database;

创建测试表

SQL> alter database open;

SQL> create table test123 as select * from dba_segments;

删除所有数据文件、控制文件

[oracle@oracle11g ~]$ rm -rf /u01/app/oradata/orcl/*

重启数据库,这里直接shutdown immediate可能失败,也可以成功。

SQL> shutdown abort

SQL>

首先恢复控制文件

[oracle@oracle11g 2018_08_05]$ rman target /

RMAN> restore controlfile from '/u01/app/fast_recovery_area/orcl/autobackup/2018_08_05/o1_mf_s_983353814_fpdpkdox_.bkp'

--这里也可以让RMAN自己选择备份文件

RMAN> restore controlfile from autobackup;

SQL> alter database mount;

接着恢复数据库

RMAN> restore database;

由于丢失了所有联机重做日志文件,需要恢复数据库并使用noredo选项,不让RMAN尝试将重做日志应用于数据库,再通过resetlogs重建联机重做日志。

RMAN> recover database noredo;

SQL> alter database open resetlogs;

验证测试表丢失

SQL> select * from test123 where rownum <=1;

2.数据文件丢失的恢复

删除数据文件users01.dbf

[oracle@oracle11g orcl]$ rm -rf users01.dbf

SQL> shutdown abort;

SQL> startup

RMAN> restore datafile 4;

RMAN> recover datafile 4;

SQL> alter database open;

如果联机重做日志没有被复写,能做到完全恢复,否则只能做不完全恢复。

RMAN> restore database;

RMAN> recover database;

SQL> alter database open resetlogs;

3.将数据文件恢复到其他磁盘目录

如果是磁盘损坏,恢复数据文件时必须更改数据文件存放路径。

[oracle@oracle11g orcl]$ rm -rf undotbs01.dbf system01.dbf

SQL> shutdown abort;

SQL> startup

RMAN> run {

set newname for datafile

'/u01/app/oradata/orcl/system01.dbf' to '/u01/app/backup/orcl/system01.dbf';

set newname for datafile

'/u01/app/oradata/orcl/undotbs01.dbf' to '/u01/app/backup/orcl/undotbs01.dbf';

restore database;

switch datafile all;

}

RMAN> recover database until cancel;

SQL> alter database open resetlogs;

0