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;
至此,数据库恢复成功