免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1184 | 回复: 0
打印 上一主题 下一主题

[备份软件] Oracle RMAN物理备份技术详解(3) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-13 15:59 |只看该作者 |倒序浏览

简单讲述一下全库恢复和恢复个别表空间或数据文件。如果想实现上述恢复,必要条件如下:
1、 当前控制文件完好。
2、 必须具备恢复需要的数据文件备份、增量备份和归档日志备份。
3、 如果任何一个数据文件没有备份,必须具备自从文件创建以来的在线REDO和归档REDO,这样RMAN可以重新创建数据文件,过程就是先创建空的数据文件,然后再应用归档REDO和在线REDO
恢复案例一:全库恢复
如果丢失了所有的数据文件,存在有效的当前控制文件和参数文件,必须进行全库恢复。
SQL> shutdown immediate
数据库已经关闭
已经卸载数据库
ORACLE 例程已经关闭
删除所有数据文件
SQL> startup
ORACLE 例程已经启动
Total System Global Area 167772160 bytes
Fixed Size 1288340 bytes
Variable Size 104859500 bytes
Database Buffers 54525952 bytes
Redo Buffers 7098368 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF'
SQL> startup mount
ORACLE 例程已经启动
Total System Global Area 167772160 bytes
Fixed Size 1288340 bytes
Variable Size 104859500 bytes
Database Buffers 54525952 bytes
Redo Buffers 7098368 bytes
数据库装载完毕
C:\Documents and Settings\Administrator>set oracle_sid=rome
C:\Documents and Settings\Administrator>rman target /
恢复管理器: Release 10.2.0.2.0 - Production on 星期二 1月 23 15:09:53 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到目标数据库: ROME (DBID=252956976, 未打开)
RMAN> restore database;
启动 restore 于 23-1月 -07
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
正将数据文件00002恢复到F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
正将数据文件00005恢复到E:\ORACLE\ORADATA\ROME\TEST.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM
E\BACKUPSET\2007_01_23\O1_MF_NNNDF_TAG20070123T150249_2VCDRVRW_.BKP
通道 ORA_DISK_1: 已恢复备份段 1段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\
                                       ROME\BACKUPSET\2007_01_23\
O1_MF_NNNDF_TAG20070123T150249_2VCDRVRW_.BKP 标记 = TAG20070123T150249
通道 ORA_DISK_1: 恢复完成, 用时: 00:07:03
完成 restore 于 23-1月 -07
SQL> recover database;
完成介质恢复
SQL> alter database open;
数据库已更改
几点说明
1、

RMAN> RESTORE DATABASE CHECK READONLY;
对于存在只读表空间的情况,如果我们是在有效备份之前把表空间设置为只读的情况,RMAN会跳过只读表空间的恢复。

SQL> alter tablespace test read only;


表空间已更改


做全库备份


SQL> shutdown immediate

数据库已经关闭

已经卸载数据库

ORACLE 例程已经关闭


删除所有数据文件


SQL> startup mount

ORACLE 例程已经启动


Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

数据库装载完毕


RMAN> restore database;


启动 restore 于 23-1月 -07

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

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK


未处理数据文件 5, 因为文件是只读的

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

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

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

正将数据文件00002恢复到F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF

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

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

通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM

E\BACKUPSET\2007_01_23\O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_23\

O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP 标记 = TAG20070123T154106

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

完成 restore 于 23-1月 -07


RMAN> restore database check readonly;


启动 restore 于 23-1月 -07

使用通道 ORA_DISK_1


正在略过数据文件 1; 已恢复到文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.

DBF

正在略过数据文件 2; 已恢复到文件 F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF

正在略过数据文件 3; 已恢复到文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.

DBF

正在略过数据文件 4; 已恢复到文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.D

BF

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

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

正将数据文件00005恢复到E:\ORACLE\ORADATA\ROME\TEST.DBF

通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM

E\BACKUPSET\2007_01_23\O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_23\

O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP 标记 = TAG20070123T154106

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

完成 restore 于 23-1月 -07

2、

RMAN> RECOVER DATABASE DELETE ARCHIVELOG MAXSIZE 25MB;
在进行RESTORE操作的时候可以加上DELETE ARCHIVELOG参数来删除由于RESTORE操作产生的归档日志(已经应用到数据文件)以节约磁盘空间;MAXSIZE限制了产生的归档日志文件的最大值,如果恢复过程中产生的日志大于所设置的最大值,将会报错,只能重新设置更大的MAXSIZE值。
恢复案例二:恢复个别表空间或者数据文件
1、 确认数据库处于MOUNT或者OPEN状态。
2、 将表空进OFFLINE:ALTER TABLESPACE ... OFFLINE IMMEDIATE。
3、 恢复表空间或者数据文件。

SQL> alter tablespace test read write;


表空间已更改。


RMAN> sql 'alter tablespace test offline immediate';


sql 语句: alter tablespace test offline immediate


RMAN> restore tablespace "TEST";


启动 restore 于 23-1月 -07

使用通道 ORA_DISK_1


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

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

正将数据文件00005恢复到E:\ORACLE\ORADATA\ROME\TEST.DBF

通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM

E\BACKUPSET\2007_01_23\O1_MF_NNNDF_TAG20070123T160914_2VCJOCY8_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_23\

O1_MF_NNNDF_TAG20070123T160914_2VCJOCY8_.BKP 标记 = TAG20070123T160914

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

完成 restore 于 23-1月 -07


RMAN> recover tablespace "TEST";


启动 recover 于 23-1月 -07

使用通道 ORA_DISK_1


正在开始介质的恢复

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


完成 recover 于 23-1月 -07


RMAN> sql 'alter tablespace test online';


sql 语句: alter tablespace test online

几个不同类型的文件恢复案例
恢复案例三:恢复控制文件
全部控制文件丢失,需要从备份的控制文件恢复。恢复了控制文件后必须要进行RECOVER恢复然后用RESETLOGS参数打开数据库,我们也可以把控制文件恢复到其他位置(不是在参数文件中给出的控制文件位置)。本例假定没有使用恢复目录,我们将在以后介绍带有恢复目的RMAN备份如何恢复控制文件。如果没有恢复目录,用RMAN只能在NOMOUNT状态从备份中进行控制文件的恢复。
从自动备份控制文件恢复:

RMAN> configure controlfile autobackup on;
旧的 RMAN 配置参数:

CONFIGURE CONTROLFILE AUTOBACKUP OFF;
新的 RMAN 配置参数:

CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数:

RMAN> show all;
RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET PARALLELISM 1;

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\S

NCFROME.ORA'; # default


RMAN> backup database;


启动 backup 于 24-1月 -07

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=143 devtype=DISK

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

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

输入数据文件 fno=00002 name=F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF

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

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

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

输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\ROME\TEST.DBF

通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07

通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07

段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O1

_MF_NNNDF_TAG20070124T091006_2VFDHGYR_.BKP 标记=TAG20070124T091006 注释=NONE

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

完成 backup 于 24-1月 -07


启动 Control File and SPFILE Autobackup 于 24-1月 -07段
      handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\AUTOBACKUP\2007_01_2

4\O1_MF_S_612695432_2VFDJ95V_.BKP comment=NONE

完成 Control File and SPFILE Autobackup 于 24-1月 -07


SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。


删除所有的控制文件。


SQL> startup

ORACLE 例程已经启动。


Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

ORA-00205: ?????????, ??????, ???????


SQL> shutdown immediate

ORA-01507: ??????


ORACLE 例程已经关闭。


SQL> startup nomount

ORACLE 例程已经启动。


Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes


RMAN> SET DBID 252956976;

正在执行命令: SET DBID

RMAN>  restore controlfile from autobackup;


启动 restore 于 24-1月 -07

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

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK


恢复区域目标: d:\oracle\product\10.2.0\flash_recovery_area

用于搜索的数据库名 (或数据库的唯一名称): ROME

通道 ORA_DISK_1: 在恢复区域中找到自动备份

通道 ORA_DISK_1: 已找到的自动备份:
   D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\

ROME\AUTOBACKUP\2007_01_24\O1_MF_S_612695432_2VFDJ95V_.BKP

通道 ORA_DISK_1: 从自动备份复原控制文件已完成

输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\CONTROL01.CTL

输出文件名=F:\ORACLE\ORADATA\ROME\CONTROL02.CTL

输出文件名=E:\ORACLE\ORADATA\ROME\CONTROL03.CTL

完成 restore 于 24-1月 -07


RMAN> sql 'alter database mount';


sql 语句: alter database mount

释放的通道: ORA_DISK_1


RMAN> recover database;


启动 recover 于 24-1月 -07

启动 implicit crosscheck backup 于 24-1月 -07

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

已交叉检验的 21 对象

完成 implicit crosscheck backup 于 24-1月 -07


启动 implicit crosscheck copy 于 24-1月 -07

使用通道 ORA_DISK_1

已交叉检验的 1 对象

完成 implicit crosscheck copy 于 24-1月 -07


搜索恢复区域中的所有文件

正在编制文件目录...

目录编制完毕


已列入目录的文件的列表

=======================

文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\AUTOBACKUP\2007_01_24\

O1_MF_S_612714183_2VFYT8Y8_.BKP


使用通道 ORA_DISK_1


正在开始介质的恢复


存档日志线程 1 序列 1 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.L

OG 存在于磁盘上

存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.LOG 线程 =1 序列 =

1

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

完成 recover 于 24-1月 -07


RMAN> sql 'alter database open resetlogs';


sql 语句: alter database open resetlogs

从包含控制文件的全库备份恢复:

RMAN> configure controlfile autobackup off;
旧的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
已成功存储新的 RMAN 配置参数
RMAN> backup database;
启动 backup 于 24-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\ROME\TEST.DBF
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O1
_MF_NNNDF_TAG20070124T152907_2VG2P400_.BKP 标记=TAG20070124T152907 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O1
_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP 标记=TAG20070124T152907 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 24-1月 -07
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
删除所有控制文件。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1288340 bytes
Variable Size 104859500 bytes
Database Buffers 54525952 bytes
Redo Buffers 7098368 bytes
C:\Documents and Settings\Administrator>rman target /
恢复管理器: Release 10.2.0.2.0 - Production on 星期三 1月 24 15:37:54 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: rome (未装载)
RMAN> RESTORE CONTROLFILE FROM 'D:\oracle\product\10.2.0\flash_recovery_area\ROM
E\BACKUPSET\2007_01_24\O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP';
启动 restore 于 24-1月 -07
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\CONTROL01.CTL
输出文件名=F:\ORACLE\ORADATA\ROME\CONTROL02.CTL
输出文件名=E:\ORACLE\ORADATA\ROME\CONTROL03.CTL
完成 restore 于 24-1月 -07
RMAN> sql 'alter database mount';
sql 语句: alter database mount
释放的通道: ORA_DISK_1
RMAN> recover database;
启动 recover 于 24-1月 -07
启动 implicit crosscheck backup 于 24-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
已交叉检验的 24 对象
完成 implicit crosscheck backup 于 24-1月 -07
启动 implicit crosscheck copy 于 24-1月 -07
使用通道 ORA_DISK_1
已交叉检验的 1 对象
完成 implicit crosscheck copy 于 24-1月 -07
搜索恢复区域中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O
1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.L
OG 存在于磁盘上
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.LOG 线程 =1 序列 =
1
介质恢复完成, 用时: 00:00:02
完成 recover 于 24-1月 -07
RMAN> sql 'alter database open resetlogs';
sql 语句: alter database open resetlogs
我们可以利用dbms_backup_restore包来恢复控制文件。

RMAN> backup database;


启动 backup 于 24-1月 -07

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=143 devtype=DISK

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

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

输入数据文件 fno=00002 name=F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF

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

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

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

输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\ROME\TEST.DBF

通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07

通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07

段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O1

_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP 标记=TAG20070124T120738 注释=NONE

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

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

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

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

在备份集中包含当前的 SPFILE

通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07

通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07

段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O1

_MF_NCSNF_TAG20070124T120738_2VFPX6G5_.BKP 标记=TAG20070124T120738 注释=NONE

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

完成 backup 于 24-1月 -07


SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。


删除所有控制文件。


SQL> startup nomount

ORACLE 例程已经启动。


Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

SQL> DECLARE

  2  devtype varchar2(256);

  3  done boolean;

  4  BEGIN

  5  devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'');

  6  sys.dbms_backup_restore.restoreSetDatafile;

  7  sys.dbms_backup_restore.restoreControlfileTo(cfname=>'D:\oracle\product\10.

2.0\oradata\rome\Control01.ctl');

  8  sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:\oracle\pr

oduct\10.2.0\flash_recovery_area\ROME\BACKUPSET\2007_01_24\O1_MF_NCSNF_TAG200701

24T120738_2VFPX6G5_.BKP', params=>null);

  9  sys.dbms_backup_restore.deviceDeallocate;

10  exception when others then

11  dbms_output.put_line(sqlerrm);

12  END;

13  /


PL/SQL 过程已成功完成。


RMAN> restore database;


启动 restore 于 24-1月 -07

启动 implicit crosscheck backup 于 24-1月 -07

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

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

已交叉检验的 17 对象

完成 implicit crosscheck backup 于 24-1月 -07


启动 implicit crosscheck copy 于 24-1月 -07

使用通道 ORA_DISK_1

已交叉检验的 1 对象

完成 implicit crosscheck copy 于 24-1月 -07


搜索恢复区域中的所有文件

正在编制文件目录...

目录编制完毕


已列入目录的文件的列表

=======================

文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O

1_MF_NCSNF_TAG20070124T120738_2VFPX6G5_.BKP


使用通道 ORA_DISK_1


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

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

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

正将数据文件00002恢复到F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF

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

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

正将数据文件00005恢复到E:\ORACLE\ORADATA\ROME\TEST.DBF

通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM

E\BACKUPSET\2007_01_24\O1_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\

O1_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP 标记 = TAG20070124T120738

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

完成 restore 于 24-1月 -07


RMAN> recover database;


启动 recover 于 24-1月 -07

使用通道 ORA_DISK_1


正在开始介质的恢复


存档日志线程 1 序列 26 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.

LOG 存在于磁盘上

存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.LOG 线程 =1 序列 =

26

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

完成 recover 于 24-1月 -07


RMAN> sql 'alter database open resetlogs';


sql 语句: alter database open resetlogs

如果使用了Flash Recovery Area,RMAN自动执行CROSSCHECK检查控制文件中涉及到的备份文件和竞相拷贝(磁盘备份),如果是使用磁带备份RMAN不会自动进行CROSSCHECK检查,需要我们恢复完控制文件后执行下列检查操作:

RMAN> CROSSCHECK BACKUP DEVICE TYPE SBT;
如果我们的RMAN是带有恢复目录的话,则在恢复的时候不用进行SET DBID操作,直接执行如下命令即可:

RMAN>  restore controlfile;
我们可以在数据库处于任何状态的情况下把控制文件恢复到参数文件中设置的控制文件以外的位置:

RMAN〉restore controlfile to ‘...’ from ‘...’;
恢复案例四:恢复参数文件

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。


删除参数文件。


数据库关闭状态丢失参数文件:


C:\Documents and Settings\Administrator>rman target /


恢复管理器: Release 10.2.0.2.0 - Production on 星期三 1月 24 16:16:25 2007


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


已连接到目标数据库 (未启动)


RMAN> set dbid 252956976


正在执行命令: SET DBID


RMAN> RESTORE SPFILE FROM 'D:\oracle\product\10.2.0\flash_recovery_area\ROME\BAC

KUPSET\2007_01_24\O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP';


启动 restore 于 24-1月 -07

使用通道 ORA_DISK_1


通道 ORA_DISK_1: 已找到的自动备份: D:\oracle\product\10.2.0\flash_recovery_area\

ROME\BACKUPSET\2007_01_24\O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP

通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成

完成 restore 于 24-1月 -07

数据库打开状态丢失参数文件:

SQL> alter system set sga_max_size=100M scope=spfile;

alter system set sga_max_size=100M scope=spfile

*

第 1 行出现错误:

ORA-01565: 标识文件 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SPFILEROME.ORA'

时出错

ORA-27041: 无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。

这是我们应该先关闭数据库,然后执行数据库关闭状态丢失参数文件的操作。
另外我们也可以从控制文件自动备份中恢复参数文件,操作过程类似从控制文件自动备份恢复控制文件的操作,这里就不再赘述。
恢复案例五:隐含参数_allow_resetlogs_corruption的使用
用RMAN做好备份后,删除所有归档日志文件和备份。
恢复自动备份的控制文件。

SQL> startup nomount

ORACLE 例程已经启动。


Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes


RMAN> set dbid 252956976

正在执行命令: SET DBID


RMAN> restore controlfile from autobackup;


启动 restore 于 31-1月 -07

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

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK


恢复区域目标: d:\oracle\product\10.2.0\flash_recovery_area

用于搜索的数据库名 (或数据库的唯一名称): ROME

通道 ORA_DISK_1: 在恢复区域中找到自动备份

通道 ORA_DISK_1: 已找到的自动备份: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\

ROME\AUTOBACKUP\2007_01_30\O1_MF_S_613239538_2VXZVMGN_.BKP

通道 ORA_DISK_1: 从自动备份复原控制文件已完成

输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\CONTROL01.CTL

输出文件名=F:\ORACLE\ORADATA\ROME\CONTROL02.CTL

输出文件名=E:\ORACLE\ORADATA\ROME\CONTROL03.CTL

完成 restore 于 31-1月 -07


RMAN> sql 'alter database mount';


sql 语句: alter database mount

释放的通道: ORA_DISK_1


RMAN> restore database;


SQL> recover database using backup controlfile;

ORA-00279: ?? 1151325 (? 01/30/2007 16:18:22 ??) ???? 1 ????

ORA-00289: ??:

D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1_


1_%U_.ARC

ORA-00280: ?? 1151325 (???? 1) ??? #1 ?




指定日志: ...{RET>=suggested | filename | AUTO | CANCEL}

auto

ORA-00308: ????????

'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1


_1_%U_.ARC'

ORA-27041: ??????

OSD-04002: ????????????

O/S-Error: (OS 2) ??????????????????????



ORA-00308: ????????

'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1


_1_%U_.ARC'

ORA-27041: ??????

OSD-04002: ????????????

O/S-Error: (OS 2) ??????????????????????


SQL> alter database open resetlogs;

alter database open resetlogs

*

第 1 行出现错误:

ORA-01113: 文件 1 需要介质恢复

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



SQL> recover database using backup controlfile;

ORA-00279: 更改 1151325 (在 01/30/2007 16:18:22 生成) 对于线程 1 是必需的

ORA-00289: 建议:

D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1_


1_%U_.ARC

ORA-00280: 更改 1151325 (用于线程 1) 在序列 #1 中




指定日志: ...{RET>=suggested | filename | AUTO | CANCEL}

auto

ORA-00308: 无法打开归档日志

'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1


_1_%U_.ARC'

ORA-27041: 无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。



ORA-00308: 无法打开归档日志

'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1


_1_%U_.ARC'

ORA-27041: 无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。


SQL> create pfile='d:\rome.ora' from spfile;


文件已创建。


修改rome.ora加入 *._allow_resetlogs_corruption=TRUE


SQL> startup pfile='d:\rome.ora'

ORACLE 例程已经启动。


Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

数据库装载完毕。

ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项



SQL> alter database open resetlogs;


数据库已更改。


SQL> show parameter _allow_


NAME                                 TYPE        VALUE

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

_allow_resetlogs_corruption          boolean     TRUE

列举几个恢复命令,这里就不再一并给出示例了。

RMAN> RECOVER DATABASE SKIP TABLESPACE users;

RMAN> RECOVER TABLESPACE users, tools;

RMAN> RECOVER DATAFILE '/newdisk/users01.dbf','/newdisk/tools01.dbf';

RMAN> RECOVER DATAFILE 4;

RMAN> RECOVER TABLESPACE users, tools DELETE ARCHIVELOG;

恢复表空间和数据文件到新位置:


RUN ...{

    SET NEWNAME FOR DATAFILE 3 to 'new_location';

    RESTORE DATAFILE 3;

    SWITCH DATAFILE 3;

    RECOVER DATAFILE 3;

}

如果没有指定新位置,将按照OMF命名规则创建新文件:


RUN ...{

    SET NEWNAME FOR DATAFILE 3 to NEW;

    RESTORE DATAFILE 3;

    SWITCH DATAFILE 3;

    RECOVER DATAFILE 3;

}

基于时间点和SCN的恢复我们将在RMAN高级应用讲述。
归档日志文件恢复这里也不举例子了,比较简单。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/71105/showart_1000522.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP