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
实验一: 对于非归档模式的数据库处于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
相关文章推荐
- Oracle学习(11)---使用rman备份进行数据库的恢复
- 使用导入导出进行备份和恢复OCR(10g)
- 使用NetBackup进行oracle备份和恢复
- 使用导入导出进行备份和恢复OCR(10g)
- 非归档模式下使用Rman进行备份和恢复
- oracle 10g rman 备份与恢复 之四
- oracle 10g rman 备份与恢复 之五
- ORACLE 12C使用RMAN进行表恢复
- oracle rman 实验(oracle rman Cumulative累积增量备份和恢复)
- LINUX下使用crontab进行RMAN备份实验
- 使用RMAN恢复Oracle 10g RAC库至异机
- oracle 10g rman 备份与恢复 之一
- oracle直通车6关于rman备份恢复数据文件,以及创建分区表的实验
- Oracle 10g rac+asm 磁盘头备份与恢复实验
- Oracle技术之使用rman进行表空间基于时间点的恢复
- oracle 10g rman 备份与恢复 之二
- ORACLE 使用rman备份通过restore、recover恢复standby库ORA-10877实战
- 备份文件oracle 10g rman备份与恢复 之二
- oracle 10g rman 备份与恢复 之三
- ORACLE模拟一个数据文件坏块并使用RMAN备份来恢复