Oracle数据库的RMAN备份,数据、控制、初始化文件、重做日志恢复

Oracle数据库使用RMAN备份,需要把数据库的非归档模式改成归档模式,启动控制文件的自动备份,全库备份。

1、改变数据库为归档模式

SQL>alter database archivelog;(归档改为非归档语句为alter database noarchivelog;)

2、启动控制文件的自动备份

RMAN>configure controlfile autobackup on;

3、全库备份

3.1最简单的全库备份

RMAN>backup database;

Oracle数据库的恢复(三)

前面有两篇文章写了恢复,这次恢复是丢失数据文件、控制文件、重做日志、初始化文件的恢复。

恢复的顺序是,初始化文件—控制文件—恢复数据库—重做日志文件

一、恢复前检查

1.1、进入数据库的rman环境

[oracle@shell orcl]$ rman target/

1.2、查看备份文件情况

RMAN> list backup;

1.3、删除文件

删除初始化文件spfileorcl.ora

位置
/usr/local/oracle/product/11.2.0/db_1/dbs

[oracle@shell dbs]$ rm spfileorcl.ora

删除控制文件、数据文件、重做日志文件,

在目录

/usr/local/oradata/orcl

[oracle@shell orcl]$ rm *.*

二、恢复

2.1以oracle用户(linux)的sys用户登录数据库

[oracle@shell orcl]$ sqlplus / as sysdba

2.1.1查询emp表

SQL> select count(*) from bankuser.emp;

上图显示由于找不到数据库的数据文件而报错

2.1.2强制关闭数据库

SQL>shutdown abort

2.1.3重新启动,由于找不到初始化文件而报错

SQL>startup

2.1.4查看数据库实例

SQL> select instance_name,status from v$instance;

由上图知悉,数据库实例没有启动

2.2恢复初始化文件

2.2.1借用初始化文件启动

[oracle@shell orcl]$ rman target/

先从备份中恢复初始化文件spfile,现在需要一个初始化文件来启动数据库到nomount状态。可以在
/usr/local/oracle/admin/orcl/pfile目录下找到一个安装数据库时所产生的pfile文件。

由上图知悉,一个名为init.ora.910202014321的文件,可以修改该文件生成一个数据库的初始化文件pfile。如果该文件中控制文件和其他参数都一致,可以使用该文件来启动数据库到nomount状态。

SQL> startup pfile='/usr/local/oracle/admin/orcl/pfile/init.ora.910202014321';

由上图可知,找不到控制文件而报错。

2.2.2查看实例状态

SQL> select instance_name,status from v$instance;

由上图可知数据库为nomount状态。

2.2.3从原来的的数据库备份中恢复原来的数据库初始化文件spfile。

[oracle@shell pfile]$ rman target/

RMAN> restore spfile from autobackup;

由上图知悉成功恢复了spfile文件,在
/usr/local/oracle/product/11.2.0/db_1/dbs中查看

2.2.4接下来关闭数据库,用恢复出来的初始化文件spfile启动数据库到nomount状态

[oracle@shell RmanBackup]$ sqlplus / as sysdba

SQL> shutdown immediate;

SQL> startup nomount

2.2.5查看当前数据库初始化文件spfile的位置

SQL> show parameter spfile;

2.3恢复数据库的控制文件

2.3.1进入rman并恢复

[oracle@shell RmanBackup]$ rman target/

RMAN> restore controlfile from autobackup;

由上图知悉,恢复了一个控制文件

2.3.2验证

在/usr/local/oradata/orcl目录中也能看到

2.4恢复数据库文件

2.4.1先设置数据库到mount状态,

RMAN> alter database mount;

2.4.2从原来的备份中还原数据库文件

RMAN> restore database;

2.4.3在目录下查看

/usr/local/oradata/orcl

由上图知悉,恢复了存在的数据文件。

2.5恢复数据库

SQL> recover database using backup controlfile until cancel;

2.6恢复重做日志文件

重做日志文件不能恢复,只能使用resetlog重新创建,并且用archive验证

2.6.1重新创建日志文件并验证

SQL> alter database open resetlogs;

SQL> archive log list;

2.7验证数据库

SQL> select instance_name,status from v$instance;

SQL> select count(*) from bankuser.emp;

至此,数据库恢复成功

原文链接:,转发请注明来源!