您的位置:首页 > 数据库 > Oracle

Oracle 10g中使用RMAN进行备份恢复的几个实验手记

2012-01-31 21:24 477 查看
***********************************************************************************

实验一: 对于非归档模式的数据库处于OPEN状态使用RMAN备份,系统出错

如果对于非归档模式的数据库处于MOUNT状态使用RMAN备份,系统会出错吗?不会,可以实施备份。

***********************************************************************************

SQL> archive log list;

数据库日志模式 非存档模式

自动存档 禁用

存档终点 USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列 216

当前日志序列 218

SQL>

RMAN> backup database;

启动 backup 于 11-5月 -09

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=144 devtype=DISK

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

ORA-19602: 无法按 NOARCHIVELOG 模式备份或复制活动文件通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

备份集中包括当前控制文件

在备份集中包含当前的 SPFILE

通道 ORA_DISK_1: 正在启动段 1 于 11-5月 -09

通道 ORA_DISK_1: 已完成段 1 于 11-5月 -09

段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\KEYMEN\BACKUPSET\2009_05_11\O1_MF_NCSNF_TAG20090511T144853_50HLLSHN_

.BKP 标记=TAG20090511T144853 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:07

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

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

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

***********************************************************************************

实验二: 有RMAN产生的全库备份,目标数据库部分数据文件丢失,包括SYSTEM和UNDO丢失的恢复

其中还有一个USERS表空间的数据文件之前已经脱机。

***********************************************************************************

利用RMAN产生全库备份

RMAN> connect target /

连接到目标数据库: MYGOD (DBID=85383244)

RMAN> backup database;

启动 backup 于 11-5月 -09

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=134 devtype=DISK

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

输入数据文件 fno=00001 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\SYSTEM01.DBF

输入数据文件 fno=00003 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\SYSAUX01.DBF

输入数据文件 fno=00005 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\EXAMPLE01.DBF

输入数据文件 fno=00002 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\UNDOTBS01.DBF

输入数据文件 fno=00004 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\USERS01.DBF

通道 ORA_DISK_1: 正在启动段 1 于 11-5月 -09

通道 ORA_DISK_1: 已完成段 1 于 11-5月 -09

段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\BACKUPSET\2009_05_11\O1_MF_NNNDF_TAG20090511T151129_50HMX55V_.

BKP 标记=TAG20090511T151129 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:55

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

备份集中包括当前控制文件

在备份集中包含当前的 SPFILE

通道 ORA_DISK_1: 正在启动段 1 于 11-5月 -09

通道 ORA_DISK_1: 已完成段 1 于 11-5月 -09

段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\BACKUPSET\2009_05_11\O1_MF_NCSNF_TAG20090511T151129_50HMYWDP_.

BKP 标记=TAG20090511T151129 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03

完成 backup 于 11-5月 -09

RMAN>

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

C:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 5月 11 15:18:01 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn / as sysdba

已连接。

SQL> select * from scott.dept;

select * from scott.dept

*

第 1 行出现错误:

ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询

SQL> alter database open;

alter database open

*

第 1 行出现错误:

ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件

ORA-01110: 数据文件 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\SYSTEM01.DBF'

SQL>

数据库需要恢复。

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

开始恢复:

在RMAN窗口中,编写恢复的脚本

RMAN> connect target /

已连接到目标数据库: MYGOD (DBID=85383244, 未打开)

RMAN> run{

2> restore database;

3> recover database;

4> sql 'alter database open';

5> }

启动 restore 于 11-5月 -09

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

数据文件4未被处理, 因为文件已脱机

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00001恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\SYSTEM01.DBF

正将数据文件00002恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\UNDOTBS01.DBF

正将数据文件00003恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\SYSAUX01.DBF

正将数据文件00005恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\EXAMPLE01.DBF

通道 ORA_DISK_1: 正在读取备份段 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\BACKUPSET\2009_05_11\O1_MF_NNNDF_TAG2

0090511T151129_50HMX55V_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\BACKUPSET\2009_05_11\O1_MF_NNNDF_TAG20090511T151129_50HMX55V

_.BKP 标记 = TAG20090511T151129

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:55

完成 restore 于 11-5月 -09

启动 recover 于 11-5月 -09

使用通道 ORA_DISK_1

数据文件4未被处理, 因为文件已脱机

正在开始介质的恢复

介质恢复完成, 用时: 00:00:04

完成 recover 于 11-5月 -09

sql 语句: alter database open

RMAN>

恢复完成以后,在SQLPlus窗口中发现,数据已经打开

SQL> select open_mode from v$database;

OPEN_MODE

----------

READ WRITE

SQL>

但是发现USERS表空间还是没有被恢复

SQL> select * from scott.dept;

select * from scott.dept

*

第 1 行出现错误:

ORA-00376: 此时无法读取文件 4

ORA-01110: 数据文件 4: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\USERS01.DBF'

SQL>

需要针对于单个表空间进行恢复

RMAN> run{

2> restore tablespace users;

3> recover tablespace users;

4> }

启动 restore 于 11-5月 -09

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=130 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00004恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\USERS01.DBF

通道 ORA_DISK_1: 正在读取备份段 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\BACKUPSET\2009_05_11\O1_MF_NNNDF_TAG2

0090511T151129_50HMX55V_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\BACKUPSET\2009_05_11\O1_MF_NNNDF_TAG20090511T151129_50HMX55V

_.BKP 标记 = TAG20090511T151129

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04

完成 restore 于 11-5月 -09

启动 recover 于 11-5月 -09

使用通道 ORA_DISK_1

正在开始介质的恢复

介质恢复完成, 用时: 00:00:01

完成 recover 于 11-5月 -09

SQL> alter tablespace users online;

表空间已更改。

SQL> select * from scott.dept;

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

SQL>

***********************************************************************************

实验三: 有RMAN产生的全库备份,目标数据库部分数据文件丢失。

在数据库打开的时候,模拟USERS表空间损坏或者丢失,恢复也是在数据库打开时进行。

***********************************************************************************

在数据库打开时,让USERS表空间脱机,然后通过OS命令删除其对应的数据文件。模拟故障!

SQL> alter tablespace users offline immediate;

表空间已更改。

SQL> select count(*) from scott.myemp;

select count(*) from scott.myemp

*

第 1 行出现错误:

ORA-00376: 此时无法读取文件 4

ORA-01110: 数据文件 4: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\USERS01.DBF'

SQL>

SQL> alter tablespace users online;

alter tablespace users online

*

第 1 行出现错误:

ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件

ORA-01110: 数据文件 4: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\USERS01.DBF'

SQL>

需要进行数据库的恢复!

------------------------------使用RMAN开始进行单个表空间的恢复。

C:\Documents and Settings\Administrator>rman

恢复管理器: Release 10.2.0.1.0 - Production on 星期一 5月 11 16:42:27 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

RMAN> connect target sys/sysadmin@mygod;

连接到目标数据库: MYGOD (DBID=85383244)

RMAN> run{

2> restore tablespace users;

3> recover tablespace users;

4> }

启动 restore 于 11-5月 -09

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=147 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00004恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\USERS01.DBF

通道 ORA_DISK_1: 正在读取备份段 E:\ORABAK\20090511_8_1_08KEP62Q.RMN

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = E:\ORABAK\20090511_8_1_08KEP62Q.RMN 标记 = TAG20090511T163538

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04

完成 restore 于 11-5月 -09

启动 recover 于 11-5月 -09

使用通道 ORA_DISK_1

正在开始介质的恢复

介质恢复完成, 用时: 00:00:03

完成 recover 于 11-5月 -09

RMAN>

恢复完成,在SQL Plus窗口中,执行表空间联机操作

SQL> alter tablespace users online;

表空间已更改。

SQL> select count(*) from scott.myemp;

COUNT(*)

----------

18432

SQL>

***********************************************************************************

实验四: 没有数据库的备份,如何恢复?此时受损的不能是SYSTEM或者UNDO文件

***********************************************************************************

在没有备份的情况下,恢复一个数据文件,此时受损的不能是SYSTEM或者UNDO文件

create tablespace testtbs datafile 'c:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\testtbs.DBF' size 10M;

alter system switch logfile;

create table scott.com4 (n1 number) tablespace testtbs;

alter system switch logfile;

insert into scott.com4 values(1);

commit;

alter system switch logfile;

SQL> create tablespace testtbs datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\testtbs.DBF' size 10M;

表空间已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> create table scott.com4 (n1 number) tablespace testtbs;

表已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into scott.com4 values(1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL>

破坏 testtbs.dbf

我采用的方法:将数据文件指向另外一个目录

alter tablespace testtbs offline immediate;

alter database create datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\testtbs.DBF'

as 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\testtbs1.DBF';

SQL> select * from scott.com4;

select * from scott.com4

*

第 1 行出现错误:

ORA-00376: 此时无法读取文件 6

ORA-01110: 数据文件 6: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\TESTTBS1.DBF'

SQL>

需要使用RMAN恢复数据库:

连接到RMAN,运行:

run{

set newname for datafile 6 to 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\testtbs1.DBF';

}

recover tablespace testtbs;

RMAN> run{

2> set newname for datafile 6 to 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\testtbs1.DBF';

3> }

正在执行命令: SET NEWNAME

RMAN> recover tablespace testtbs;

启动 recover 于 11-5月 -09

使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 6 已作为文件 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\ARCHIVELOG\2009_05_11\O1_MF_1_6_50HS

GHMK_.ARC 存在于磁盘上

存档日志线程 1 序列 7 已作为文件 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\ARCHIVELOG\2009_05_11\O1_MF_1_7_50HS

GTCQ_.ARC 存在于磁盘上

存档日志线程 1 序列 8 已作为文件 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\ARCHIVELOG\2009_05_11\O1_MF_1_8_50HS

HBWS_.ARC 存在于磁盘上

存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\ARCHIVELOG\2009_05_11\O1_MF_1_6_50HSGHMK_.ARC 线程 =1

序列 =6

介质恢复完成, 用时: 00:00:02

完成 recover 于 11-5月 -09

RMAN>

在RMAN恢复过程中存在一个介质恢复的过程。

在SQLPLus窗口中,让USERS表空间联机,然后查询,确认数据已经恢复了。

alter tablespace testtbs online;

select * from scott.com4;

不完全恢复的三个实验

***************************************************************************************************************

不完全恢复实验一:

***************************************************************************************************************

注意:在开始实验之前,需要首先对数据进行备份处理。

设置环境:

alter session set nls_date_format='yyyy-mm-dd:hh24:mi:ss';

SQL> alter session set nls_date_format='yyyy-mm-dd:hh24:mi:ss';

会话已更改。

SQL> select sysdate from dual;

SYSDATE

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

2009-05-11:17:06:43

SQL> drop table scott.myemp;

表已删除。

SQL>

SQL> create table scott.com4(id number);

表已创建。

SQL> insert into scott.com4 values(1000);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

需要将删除的数据表找回来,将数据库恢复到2009-05-11:17:06:43时间点。需要执行基于时间点的不完全恢复。

SQL> shutdown immediate;

SQL> startup mount;

ORACLE 例程已经启动。

Total System Global Area 612368384 bytes

Fixed Size 1250428 bytes

Variable Size 188746628 bytes

Database Buffers 415236096 bytes

Redo Buffers 7135232 bytes

数据库装载完毕。

SQL>

在RMAN中

run{

set until time="to_date('2009-05-11:17:06:43','yyyy-mm-dd:hh24:mi:ss')";

restore database;

recover database;

}

C:\Documents and Settings\Administrator>rman

恢复管理器: Release 10.2.0.1.0 - Production on 星期一 5月 11 17:16:39 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

RMAN> connect target sys/sysadmin@mygod;

已连接到目标数据库: MYGOD (DBID=85383244, 未打开)

RMAN> run{

2> set until time="to_date('2009-05-11:17:06:43','yyyy-mm-dd:hh24:mi:ss')";

3> restore database;

4> recover database;

5> }

正在执行命令: SET until clause

使用目标数据库控制文件替代恢复目录

启动 restore 于 11-5月 -09

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00001恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\SYSTEM01.DBF

正将数据文件00002恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\UNDOTBS01.DBF

正将数据文件00003恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\SYSAUX01.DBF

正将数据文件00004恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\USERS01.DBF

正将数据文件00005恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\EXAMPLE01.DBF

正将数据文件00006恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\TESTTBS1.DBF

通道 ORA_DISK_1: 正在读取备份段 E:\ORABAK\20090511_17_1_0HKEP7NS.RMN

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = E:\ORABAK\20090511_17_1_0HKEP7NS.RMN 标记 = TAG20090511T170355

通道 ORA_DISK_1: 恢复完成, 用时: 00:01:16

完成 restore 于 11-5月 -09

启动 recover 于 11-5月 -09

使用通道 ORA_DISK_1

正在开始介质的恢复

介质恢复完成, 用时: 00:00:02

完成 recover 于 11-5月 -09

RMAN>

恢复完成以后在SQLPLus窗口中:

SQL> alter database open resetlogs;

数据库已更改。

SQL> select count(*) from scott.myemp;

COUNT(*)

----------

18432

SQL> select * from scott.com4;

select * from scott.com4

*

第 1 行出现错误:

ORA-00942: 表或视图不存在

SQL>

数据库已经进行了基于时间点的恢复。。

附加信息:数据库的备份方法

RMAN> backup database format='e:\orabak\20090511_%s_%p_%u.rmn';

启动 backup 于 11-5月 -09

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

输入数据文件 fno=00001 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\SYSTEM01.DBF

输入数据文件 fno=00003 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\SYSAUX01.DBF

输入数据文件 fno=00005 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\EXAMPLE01.DBF

输入数据文件 fno=00002 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\UNDOTBS01.DBF

输入数据文件 fno=00006 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\TESTTBS1.DBF

输入数据文件 fno=00004 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\MYGOD\USERS01.DBF

通道 ORA_DISK_1: 正在启动段 1 于 11-5月 -09

通道 ORA_DISK_1: 已完成段 1 于 11-5月 -09

段句柄=E:\ORABAK\20090511_17_1_0HKEP7NS.RMN 标记=TAG20090511T170355 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:05

完成 backup 于 11-5月 -09

启动 Control File and SPFILE Autobackup 于 11-5月 -09

段 handle=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYGOD\AUTOBACKUP\2009_05_11\O1_MF_S_686595902_50HTKZNJ_.BKP comme

nt=NONE

完成 Control File and SPFILE Autobackup 于 11-5月 -09
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: