千家信息网

基于rman的恢复操作有哪些呢

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,今天就跟大家聊聊有关基于rman的恢复操作有哪些呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。针对RMAN进行的备份,下面从几个方面利用RM
千家信息网最后更新 2024年11月30日基于rman的恢复操作有哪些呢

今天就跟大家聊聊有关基于rman的恢复操作有哪些呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

针对RMAN进行的备份,下面从几个方面利用RMAN进行一些恢复操作。

恢复

1. 对数据库进行完全介质恢复

1.1进入rman命令行

rman target /

1.2开始备份

backup database format=' /oracle/u01/app/oracle/backup/%U';

1.3一致性停止数据库

shutdown immediate;

1.4 删除所有的数据文件

rm -rf /oracle/u01/app/oracle/oradata/orcl/*.dbf

开始恢复:

1.5 利用rman启动数据库到mount状态

RMAN> startup mount;

1.6 数据库修复

RMAN> restore database;

1.7 数据库恢复

RMAN> recover database;

可以添加其他参数:

recover database delete archivelog;用于删除在恢复过程中产生的归档日志文件

recover database skip tablespace temp;指定再恢复过程中跳过临时表空间,默认是不恢 复临时表空间的。

recover database delete archivelog maxsize 100m;用于指定再恢复过程中限制自动产生 的归档大小为100m,如果超过这个大小就会被删除在循环继续使用来恢复。

1.8 启动数据库到open状态

RMAN>alter database open;

2. 表空间的恢复

在有备份的基础上我们先模拟破坏表空间,然后将其恢复

2.1 破坏users表空间

echo "" > /oracle/u01/app/oracle/oradata/orcl/users01.dbf

2.2 切换日志

这时我们查询表空间users中的表不一定报错,因为在内存中还有记录,查询到的

是内存中的信息,需要我们手动切换日志

SQL>alter system switch logfile;

多执行几次,保证切换完成

2.3 检查表空间是否可用

SQL>select * from test


ERROR at line 1:

ORA-00376:file 4 cannot be read at this time

ORA-01110: data file 4: '/oracle/u01/app/oracle/oradata/orcl/users01.dbf'

这时发现users表空间已经不能使用

开始恢复

2.4 将表空间offline

RMAN> SQL 'alter tablespace users offline';

2.5修复

RMAN>restore tablespace users;

2.6 恢复

RMAN>recover tablespace users;

2.7 将表空间online

RMAN>SQL 'alter tablespace users online';

2.8 检验是否恢复

SQL>select * from test;

可以查询到数据,表明表空间已经恢复

3. 数据文件的恢复

3.1 将数据文件offline

RMAN> SQL 'alter database datafile 4 offline';

3.2修复

RMAN>restore datafile 4;

3.3恢复

RMAN>recover datafile 4;

3.4将数据文件online

RMAN>SQL 'alter database datafile 4 online';

RMAN> SQL 'alter database datafile 4 offline';

RMAN>run {

RMAN>SQL 'alter database datafile 4 online';

4.1进入rman命令行

SQL>rman target /

4.2备份归档

RMAN>backup archivelog all delete input;

4.3 检查备份

RMAN>List backup of archivelog all;

BS Key Size Device Type Elapsed Time Completion Time

------- ---------- ----------- ------------ ---------------

91 59.54M DISK 00:00:02 28-FEB-13

BP Key: 95 Status: AVAILABLE Compressed: NO Tag: TAG20130228T162106

Piece Name: /oracle/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_02_28/o1_mf_annnn_TAG20130228T162106_8ly4vmt4_.bkp

List of Archived Logs in backup set 91

Thrd Seq Low SCN Low Time Next SCN Next Time

---- ------- ---------- --------- ---------- ---------

1 311 5582914 27-FEB-13 5583269 27-FEB-13

1 312 5583269 27-FEB-13 5601615 28-FEB-13

1 313 5601615 28-FEB-13 5623126 28-FEB-13

1 314 5623126 28-FEB-13 5625133 28-FEB-13

1 315 5625133 28-FEB-13 5625135 28-FEB-13

1 316 5625135 28-FEB-13 5625138 28-FEB-13

1 317 5625138 28-FEB-13 5628235 28-FEB-13

1 318 5628235 28-FEB-13 5628281 28-FEB-13

通过查看,备份了从311-318archivelog,并保存在备份集中,删除了 /oracle/u01/app/oracle/路径下的归档日志文件.

4.4 恢复归档

RMAN>restore archivelog sequence between 311 and 315;

查看log_archive_dest_1路径,发现已经恢复出311-315的归档文件

4.4指定归档恢复路径

通过在run脚本中来制定恢复的路径

RMAN>run {

set archivelog destination to '';

restore archivelog sequence between 311 and 315;

set archivelog destination to '';

restore archivelog sequence between 316 and 317;

}

可以指定多个路径。

5. 控制文件的恢复

5.1 开启控制文件自动备份

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;

5.2备份控制文件

RMAN>backup current controlfile;

5.3 设置DBID

没有了控制文件,数据库只能启动到nomount状态,启动之前需要设置DBID

RMAN>set dbid=1324770912

怎样获取DBID呢:

a) 创建自动备份时未改名的备份文件包含;

b)rman连接时

c) Rman备份日志

d) 数据库v$database视图

5.4 恢复控制文件

RMAN> restore controlfile from autobackup;

如果没有指定路径会恢复到参数文件control_files的路径下

指定路径:

RMAN> restore controlfile to '/home/oracle/control01.ctl' from autobackup;

5.5 找不到恢复路径的解决办法

在自动备份控制文件前改过备份路径,比如改到/oracle/u01/app/oracle/backup

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK

TO '/oracle/u01/app/oracle/backup/%F';

备份表空间

RMAN> backup tablespace users;

因为开启了自动备份控制文件,备份表空间也会备份控制文件,查询

RMAN>list backup of controlfile;

这时提示有控制文件的备份。

这时记录dbid=1324770912

SQL>shutdown immediate;

SQL>startup nomount

SQL>rman target /

RMAN>set dbid=1324770912

RMAN>restore controlfile from autobackup;

提示报错:

Starting restore at 28-FEB-13

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=540 devtype=DISK

recovery area destination: /oracle/u01/app/oracle/flash_recovery_area

database name (or database unique name) used for search: ORCL

channel ORA_DISK_1: no autobackups found in the recovery area

channel ORA_DISK_1: looking for autobackup on day: 20130228

channel ORA_DISK_1: looking for autobackup on day: 20130227

channel ORA_DISK_1: looking for autobackup on day: 20130226

channel ORA_DISK_1: looking for autobackup on day: 20130225

channel ORA_DISK_1: looking for autobackup on day: 20130224

channel ORA_DISK_1: looking for autobackup on day: 20130223

channel ORA_DISK_1: looking for autobackup on day: 20130222

channel ORA_DISK_1: no autobackup in 7 days found

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of restore command at 02/28/2013 17:12:17

RMAN-06172: no autobackup found or specified handle is not a valid copy or piece

因为:在默认路径下找不到自动备份的控制文件进一步产rman参数

RMAN>show all;

发现自动备份控制文件的路径并不是/oracle/u01/app/oracle/backup,而是默认路径

针对windows下默认路径为:$ORACLE_HOME/database

linux系统下默认路径为:$ORACLE_HOME/dbs

那么为什么在我们之前设置了rman参数,这里又会改变呢,因为我们利用的 configure设置的参数,这个改变是保存在控制文件中的,所以会找不到路径。

针对这种情况有两种方法:

a) 将备份的文件拷贝到所需要默认的路径下:$ORACLE_HOME/dbs

b) 重新设置自动备份控制文件路径

set CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/u01/app/oracle/backup/%F';

这里为什么采用set来设置呢,因为现在数据库是nomount状态,不能使用 configure来设置。

5.6 如果数据库是非归档数据库

修改自动备份控制文件路径时也不要使用configure来执行,因为此命令是永久生效,默认是保存到控制文件的,这样导致在恢复时找不到控制文件,使用set命令来设置修改自动备份控制文件路径。

从备份集中恢复

5.7 通过备份集中的备份恢复控制文件

需要设置dbid

启动数据库到nomount状态

恢复控制文件

restore controlfile from

'/oracle/u01/app/oracle/backup/c-1324770912-20130301-08';

这样即使更改过默认参数,只要指定备份集正确就可以恢复。

注意:

再恢复控制文件后启动数据库步骤:

a) 启动数据库到mount

SQL>alter database mount;

b) 恢复数据库

SQL>recover database using backup controlfile;

auto

Additional information: 3

在执行auto后,会自动应用归档,但是当前日志文件还没有归档,所以需要指定redo.log来应用剩下的日志从而恢复数据库

SQL>recover database using backup controlfile;

/oracle/u01/app/oracle/oradata/orcl/redo01.log

Media recovery complete.

提示:Media recovery complete.恢复完成

c) 重做日志文件

SQL>alter database open resetlogs;


参数文件在备份的时候即使不手工备份也会自动完成备份,一般不手动备份。

恢复类似于控制文件的恢复.

6.1 利用自动备份恢复

a) 设置dbid

b) 启动到nomount状态

c) 恢复

RMAN>restore spfile from autobackup;

6.2 指定恢复文件

也可以通过手工指定的备份的控制文件进行恢复

RMAN>restore spfile from '/oracle/u01/app/oracle/backup/ c-1324770912-20130301-0a';

6.3 恢复到制定目标地址

RMAN>restore spfile to '/home/oracle/spfiletmp.ora' from '/oracle/u01/app/oracle/backup/ c-1324770912-20130301-0a';

看完上述内容,你们对基于rman的恢复操作有哪些呢有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0