Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18337
  • 博文数量: 5
  • 博客积分: 160
  • 博客等级: 入伍新兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-03 12:00
个人简介

态度决定一切!

文章分类
文章存档

2013年(1)

2010年(4)

我的朋友

分类: Oracle

2010-09-03 12:07:02

Rman[backup database skip inaccessible]备份的恢复测试

一、概述

    此模拟为PHONE表空间新添加数据文件‘PHONE02.DBF’(该数据文件中没有任何数据写入),然后将该数据文件脱机,并从操作系统删除,因为该数据文件尚为写入任何数据,所以其offline并删除并不会影响的PHONE的正常使用。然后通过RMAN对执行全备(因为丢失数据文件,所以备份时须指定skip inaccessible关键字)。然后再就整个数据库执行恢复(因为是跳过丢失的数据文件进行的备份,所以恢复的时候需要到下通过执行recover)。

二、模拟故障

1.检查PHONE表空间的当前数据文件
SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='PHONE';

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------------------------------------
PHONE                          D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF
 
2.向PHONE添加一个新的数据文件‘PHINE02.DBF’
SQL> alter tablespace phone add datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE02.DBF' size 2
表空间已更改。
 
3.再次检查PHONE表空间是否已有新建的数据文件
SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='PHONE';
TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------------------------------------
PHONE                          D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF
PHONE                          D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE02.DBF
 
4.将新添加的数据文件‘PHONE02.DBF’脱机
SQL> ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE02.DBF' OFFLINE;
数据库已更改。
SQL>
SQL> SELECT NAME,STATUS FROM V$DATAFILE WHERE NAME LIKE '%PHONE%';
NAME                                                         STATUS
------------------------------------------------------------ -------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF           ONLINE
D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE02.DBF           RECOVER
 
5.从操作系统删除‘PHONE02.DBF ’数据文件
SQL>host
C:\>del D:\oracle\product\10.2.0\oradata\study\PHONE02.DBF
 
6.执行RMAN备份,因为PHONE表空间的‘PHONE02.DBF ’数据文件已经不存在,所以RMAN备份需指定“skip inaccessible” 关键字
RMAN> run{
2> allocate channel c1 device type disk format "f:\FULL-x\%U";
3>  backup database skip inaccessible plus archivelog delete input;
4> backup current controlfile  format 'f:\FULL-x\control%t%f.ctl';
5> }
 
7.恢复测试(恢复控制文件)
SQL>startup nomount force
SQL>host
C:\Documents and Settings\Administrator> rman target /
恢复器: Release 10.2.0.1.0 - Production on 星期三 9月 1 23:19:41 2010
Copyright (c) 1982, , .  All rights reserved.
连接到目标数据库: study (未装载)
RMAN> restore controlfile from 'F:\FULL-x\CONTROL7286087020.CTL';
启动 restore 于 01-9月 -10
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:06
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\CONTROL01.CTL
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\CONTROL02.CTL
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\CONTROL03.CTL
完成 restore 于 01-9月 -10
RMAN> alter database mount;
数据库已装载
释放的通道: ORA_DISK_1
RMAN>
 
8.恢复测试(restore所有可用的数据文件)
SQL> select file#,name from v$datafile;
     FILE# NAME
---------- ------------------------------------------------------------
         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSTEM01.DBF
         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\UNDOTBS01.DBF
         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSAUX01.DBF
         4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\USERS01.DBF
         5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\STREAMS_TBS01.DBF
         6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF
         7 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE02.DBF
已选择7行。

RMAN> restore datafile 1,2,3,4,5,6;
启动 restore 于 01-9月 -10
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSTEM01.DBF
正将数据文件00002恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSAUX01.DBF
正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\USERS01.DBF
正将数据文件00005恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\STREAMS_TBS01.DBF
正将数据文件00006恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF
通道 ORA_DISK_1: 正在读取备份段 F:\FULL-X\0CLMRBQU_1_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = F:\FULL-X\0CLMRBQU_1_1 标记 = TAG20100901T231645
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:15
完成 restore 于 01-9月 -10
 
9.恢复测试(恢复数据库)
 因为数据库中PHONE表空间的‘PHINE02.DBF’数据文件已在系统中删除,所以恢复的时候回报错RMAN-06067,这个时候我们不要害怕 ,切换到SQL>中执行【recover database using backup controlfile until cancel;】即可完成数据库的恢复
 
RMAN> recover datafile 1;
启动 recover 于 02-9月 -10
使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/01/2010 22:15:43
RMAN-06067: RECOVER DATABASE required with a backup or created controlfile
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 9月 2 00:32:51 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> alter database datafile 7 offline drop;
数据库已更改。
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 313505 (在 09/01/2010 23:16:46 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOG\ARC00027_0728496696.001
ORA-00280: 更改 313505 (用于线程 1) 在序列 #27 中

指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 313565 (在 09/01/2010 23:18:18 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOG\ARC00028_0728496696.001
ORA-00280: 更改 313565 (用于线程 1) 在序列 #28 中
ORA-00278: 此恢复不再需要日志文件
'D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOG\ARC00027_0728496696.001'

已应用的日志。
完成介质恢复。
SQL>
 
10.指定 resetlogs关键字,启动数据库到open状态
SQL> alter database open resetlogs;
数据库已更改。
 
11.验证数据库是否正常,验证PHONE表空间是否可用
SQL> select tablespace_name,file_name from dba_data_files where file_name like '%PHONE%';
TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------------------------------------
PHONE                          D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF
PHONE                          D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE02.DBF
SQL>

SQL> select name,status from v$datafile where name like '%PHONE%';
NAME                                                         STATUS
------------------------------------------------------------ -------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF           ONLINE
D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE02.DBF           OFFLINE
SQL>
 
三、数据库恢复正常
    数据库恢复测试完成,数据库恢复正常。
阅读(3399) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-05 15:11:21

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com

chinaunix网友2010-09-05 15:11:21

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com