Oracle数据库多种故障场景Rman恢复手册10v.docx
- 文档编号:10922362
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:33
- 大小:32.44KB
Oracle数据库多种故障场景Rman恢复手册10v.docx
《Oracle数据库多种故障场景Rman恢复手册10v.docx》由会员分享,可在线阅读,更多相关《Oracle数据库多种故障场景Rman恢复手册10v.docx(33页珍藏版)》请在冰豆网上搜索。
Oracle数据库多种故障场景Rman恢复手册10v
ORACLE数据库
各种故障场景RMAN恢复操作手册
文件状态:
【】草稿
【】修改稿
【√】正式发布
公司
尚福科技
保密等级
作者
福哥
最后完成日期
2015-01-29
审核人员
最后审核日期
修改记录
日期
版本
作者/修改者
修订类型
描述
2015-01-29
1.0
/福武
修改
目录
1概述1
1.1前言1
1.2备份与恢复重要性1
2数据库环境说明1
3数据库系统环境要求1
4RMAN异机恢复场景2
4.1数据完全恢复方式2
4.1.1完全恢复场景2
4.2数据不完全恢复方式5
4.2.1基于时间点恢复场景5
4.2.2基于tablespace恢复场景9
5RMAN本机恢复场景14
5.1数据完全恢复方式14
5.1.1所有数据文件被误删恢复场景14
5.1.2单个数据文件被误删除恢复场景16
5.1.3数据文件所在ASM磁盘组故障恢复场景18
5.1.4控制文件损坏恢复场景23
6恢复结束25
1概述
1.1前言
随着商业银行业务规模的扩大,信息系统处理和存储的数据量不断增加,对信息系统稳定和数据的可用性提出了严格要求。
如何保障系统数据的安全完整、保障银行业务系统的正常持续运行越来越重要。
为了更加有效保障业务系统数据的安全性与可靠性。
为此,结合XX银行业务系统的实际情况,制定了Oracle数据库各种故障场景恢复方案。
以便在突如其来的数据库各种故障面前,能迅速确认故障类型、评估风险、选择有效而快速的恢复方案。
1.2备份与恢复重要性
数据库备份与恢复是为了保护一个数据库免于数据损失或者在发生数据损失后进行数据重新创建的各种策略、步骤和方法。
数据库系统在运行中,随时可能发生各种故障。
在发生故障后,能快速、有效的根据业务需求使用备份文件进行完全库恢复或按不完全恢复。
2数据库环境说明
项目名称
Oracle数据库源主机
Oracle数据库目标主机
系统平台
LinuxRehat5.5
LinuxRehat5.5
主机名称
lzsjptdb01p/lzsjptdb02p
lzsjptdb
IP地址
11.66.1.xx/xx
11.66.1.xx
Oracle版本
OracleRelease11.1.0.6.0
OracleRelease11.1.0.6.0
数据库模式
RAC
单实例或RAC
数据文件存储
Filesystem
Filesystem
实例名
ORADB
ORADB
数据文件路径
ASM磁盘
本地系统文件或ASM磁盘
3数据库系统环境要求
(1)安装操作系统LinuxRehat5.5,过程省略;
(2)Oracle11gR1数据库软件安装,过程省略;
(3)创建一个实例与源数据库实例一致。
4RMAN异机恢复场景
4.1数据完全恢复方式
4.1.1完全恢复场景
场景描述:
数据库业务系统,由于故障(硬件或软件故障),导致数据库系统全面崩溃,数据库无法正常运行,业务中断。
故障分析:
短时间内无法恢复数据库故障,需要紧急切换到备机数据库系统。
恢复方式:
选择完全恢复方式。
恢复步骤:
(1)备份文件管理。
从源数据库系统的备份目录中拷贝出“控制文件备份”、“数据库全备文件”、“归档日志备份文件”到目标数据库系统指定目录下。
(2)恢复控制文件。
登录RMAN管理中心,先shutdownimmediate实例,然后在把实例启动到nomount状态下setDBID(dbid要与源数据库实例相同),使用从源数据库拷贝过来的控制文件备份,进行restoerControl文件。
命令:
[oracle@stat~]$rmantarget/
RMAN>startupnomount;
RMAN>setdbid2573003471;
RMAN>restorecontrolfilefrom'/path/controlfile.ctl';
(3)恢复数据文件。
把数据库实例启动到mount的状态下,先注册从源数据库拷贝过来的备份集(数据库全备文件)到rman中,通过listbackup命令查看SCN号和ElapsedTime。
然后使用RESTORE命令转储数据文件备份。
命令:
RMAN>alterdatabasemount;
RMAN>catalogstartwith'/path/数据库全备文件.bak';
RMAN>run{
setnewnamefordatafile1to'/path/oradb/system.dbf';
setnewnamefordatafile2to'/path/oradb/sysaux.dbf';
setnewnamefordatafile3to'/path/oradb/undotbs1.dbf';
setnewnamefordatafile4to'/path/oradb/users.dbf';
allocatechannelc1devicetypedisk;
allocatechannelc2devicetypedisk;
allocatechannelc3devicetypedisk;
restoredatabase;
switchdatafileall;
releasechannelc1;
releasechannelc2;
releasechannelc3;
}
备注:
由于源数据库数据文件路径是ASM磁盘,因此需要将数据文件定义到新的路径上。
(4)Recover数据库。
先注册从源数据库拷贝过来的归档备份文件备份集到rman中,然后通过RECOVER命令将数据文件恢复到失败点的状态,或者说Oracle会自行根据archivedlog里面的信息来恢复到控制文件记录最终点。
命令:
RMAN>catalogstartwith'/path/归档备份文件.bak';
RMAN>run{
allocatechannelc1devicetypedisk;
allocatechannelc2devicetypedisk;
allocatechannelc3devicetypedisk;
recoverdatabase;
releasechannelc1;
releasechannelc2;
releasechannelc3;
}
(5)修改在线日志文件。
由于在线重做文件源数据库路径是在ASM磁盘组,需要重命名或者重建在线重做日志。
使用sqlplus登录修改。
命令:
[oracle@lzoracle01t]$sqlplus/assysdba
SQL*Plus:
Release11.1.0.6.0-ProductiononWedFeb411:
44:
062015
Copyright(c)1982,2007,Oracle.Allrightsreserved.
Connectedto:
OracleDatabase11gEnterpriseEditionRelease11.1.0.6.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
-----查看在线重做日志原来的路径-------
SQL>selectGROUP#,STATUS,MEMBER,IS_RECOVERY_DEST_FILEfromv$logfile;
GROUP#STATUSMEMBERIS_RECOVERY_DEST_FILE
------------------------------------------------------------------------------
4ONLINE+DATADG/oradb/onlinelog/group_4.264.819738751NO
3ONLINE+DATADG/oradb/onlinelog/group_3.263.819738729NO
2ONLINE+DATADG/oradb/onlinelog/group_2.262.819738713NO
1ONLINE+DATADG/oradb/onlinelog/group_1.261.819738703NO
----修改在线重做日志的路劲----
SQL>alterdatabaserenamefile'+DATADG/redo01.log'to'/path/redo01.log';
alterdatabaserenamefile'+DATADG/redo02.log'to'/path/redo02.log';
alterdatabaserenamefile'+DATADG/redo03.log'to'/path/redo03.log';
alterdatabaserenamefile'+DATADG/redo04.log'to'/path/redo04.log';
Databasealtered.
-----查看修改后在线重做日志的路劲状态------
SQL>selectGROUP#,STATUS,MEMBER,IS_RECOVERY_DEST_FILEfromv$logfile;
GROUP#STATUSMEMBERIS_RECOVERY_DEST_FILE
------------------------------------------------------------------------
4ONLINE/app/oracle/oradata/oradb/redo01.logNO
3ONLINE/app/oracle/oradata/oradb/redo02.logNO
2ONLINE/app/oracle/oradata/oradb/redo03.logNO
1ONLINE/app/oracle/oradata/oradb/redo04.logNO
(6)Open数据库。
以Resetlogs打开数据库后,会复位日志序列号,并生成新的数据库副本。
命令:
RMAN>alterdatabaseopenresetlogs;
databaseopened
(7)重建临时表空间。
由于RMAN是不备份temp表空间的,所以目前temp表空间是不可用的,同时temp01.dbf临时表空间的数据文件也是不存在的。
需要给临时表空间添加数据文件。
命令:
SQL>setline200
----查看源tempfile----
SQL>selectnamefromv$tempfile;
NAME
------------------------------------------------------------------------------------------------------------------------
+DATADG/oradb/tempfile/temp.265.819738817
----添加临时表空间新数据----
SQL>altertablespacetempaddtempfile'/app/oracle/oradata/oradb/temp01.dbf'size1024m;
----查看添加临时表空间数据文件----
SQL>selectnamefromv$tempfile;
NAME
-----------------------------------------------------------------------------------------------------------------------
+DATADG/oradb/tempfile/temp.265.819738817
/app/oracle/oradata/oradb/temp01.dbf
----把旧临时表空间数据文件修改为offline状态----
SQL>alterdatabasetempfile'+DATADG/oradb/tempfile/temp.265.819738817'offline;
Databasealtered.
----drop旧临时表空间数据文件----
SQL>alterdatabasetempfile'+DATADG/oradb/tempfile/temp.265.819738817'dropincludingdatafiles;
Databasealtered.
4.2数据不完全恢复方式
4.2.1基于时间点恢复场景
场景描述:
某财务总账数据库业务系统,业务员在进行对账时,不小心造成部分数据混乱或者出现错误。
业务员要求查看未对账之前的所有数据。
由于该财务总账数据库业务系统是实时性,不能停数据库进行恢复。
经过与数据库管理员讨论,决定在数据库备机系统进行数据恢复。
故障分析:
原业务数据库不能动。
业务员要求恢复数据到故障前(未对账前数据)的某个时间点,而在对账之后的时间段里所产生的数据都不需要恢复。
由此,选择基于某个时间点不完全恢复方式,比如故障时间点是:
2015-02-0511:
25:
30。
恢复方式:
基于时间点恢复
恢复步骤:
(1)备份文件管理。
查看源数据库系统的备份目录及备份时间,从中选择正确而易于恢复“控制文件备份”、“数据库全备文件”、“归档日志文件”拷贝到目标数据库系统指定目录下。
(2)恢复控制文件。
登录RMAN管理中心,先shutdownimmediate实例,然后在把实例启动到nomount状态下setDBID(dbid要与源数据库实例相同),使用从源数据库拷贝过来的控制文件备份,进行restoerControl文件。
命令:
[oracle@stat~]$exportNLS_DATE_FORMAT='yyyy-mm-ddhh24:
mi:
ss'
[oracle@stat~]$rmantarget/
RMAN>startupnomount;
RMAN>setdbid2573003471;
RMAN>restorecontrolfilefrom'/path/controlfile.ctl';
(3)恢复数据文件。
把数据库实例启动到mount的状态下,先注册从源数据库拷贝过来的备份集(数据库全备文件)到rman中,然后使用RESTORE命令转储数据文件备份。
命令:
RMAN>alterdatabasemount;
RMAN>catalogstartwith'/path/数据库全备文件.bak';
RMAN>run{
setnewnamefordatafile1to'/path/oradb/system.dbf';
setnewnamefordatafile2to'/path/oradb/sysaux.dbf';
setnewnamefordatafile3to'/path/oradb/undotbs1.dbf';
setnewnamefordatafile4to'/path/oradb/users.dbf';
allocatechannelc1devicetypedisk;
allocatechannelc2devicetypedisk;
allocatechannelc3devicetypedisk;
restoredatabase;
switchdatafileall;
releasechannelc1;
releasechannelc2;
releasechannelc3;
}
备注:
由于源数据库数据文件路径是ASM磁盘,因此需要将数据文件定义到新的路径上。
(4)catalog归档备份集。
先注册从源数据库拷贝过来的归档备份文件备份集到rman中,通过listbackup命令查看归档日志文件时间状态。
命令:
RMAN>catalogstartwith'/path/归档备份文件.bak';
RMAN>listbackup;
(5)Recover数据库。
根据业务要求,通过RECOVER命令将数据文件恢复到故障点(某个时间点)之前的状态。
命令:
RMAN>run{
allocatechannelc1devicetypedisk;
allocatechannelc2devicetypedisk;
allocatechannelc3devicetypedisk;
recoverdatabaseuntiltime'2015-02-0511:
25:
30';
releasechannelc1;
releasechannelc2;
releasechannelc3;
}
(6)修改在线日志文件。
由于在线重做文件源数据库路径是在ASM磁盘组,需要重命名或者重建在线重做日志。
使用sqlplus登录修改。
[oracle@lzoracle01t]$sqlplus/assysdba
SQL*Plus:
Release11.1.0.6.0-ProductiononWedFeb411:
44:
062015
Copyright(c)1982,2007,Oracle.Allrightsreserved.
Connectedto:
OracleDatabase11gEnterpriseEditionRelease11.1.0.6.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
-----查看在线重做日志原来的路径-------
SQL>selectGROUP#,STATUS,MEMBER,IS_RECOVERY_DEST_FILEfromv$logfile;
GROUP#STATUSMEMBERIS_RECOVERY_DEST_FILE
---------------------------------------------------------------------------
4ONLINE+DATADG/oradb/onlinelog/group_4.264.819738751NO
3ONLINE+DATADG/oradb/onlinelog/group_3.263.819738729NO
2ONLINE+DATADG/oradb/onlinelog/group_2.262.819738713NO
1ONLINE+DATADG/oradb/onlinelog/group_1.261.819738703NO
----修改在线重做日志的路劲----
SQL>alterdatabaserenamefile'+DATADG/redo01.log'to'/path/redo01.log';
alterdatabaserenamefile'+DATADG/redo02.log'to'/path/redo02.log';
alterdatabaserenamefile'+DATADG/redo03.log'to'/path/redo03.log';
alterdatabaserenamefile'+DATADG/redo04.log'to'/path/redo04.log';
Databasealtered.
-----查看修改后在线重做日志的路劲状态------
SQL>selectGROUP#,STATUS,MEMBER,IS_RECOVERY_DEST_FILEfromv$logfile;
GROUP#STATUSMEMBERIS_RECOVERY_DEST_FILE
------------------------------------------------------------------------
4ONLINE/app/oracle/oradata/oradb/redo01.logNO
3ONLINE/app/oracle/oradata/oradb/redo02.logNO
2ONLINE/app/oracle/oradata/oradb/redo03.logNO
1ONLINE/app/oracle/oradata/oradb/redo04.logNO
(7)Open数据库。
以Resetlogs打开数据库后,会复位日志序列号,并生成新的数据库副本。
命令:
RMAN>alterdatabaseopenresetlogs;
databaseopened
(8)重建临时表空间。
由于RMAN是不备份temp表空间的,所以目前temp表空间是不可用的,同时temp01.dbf临时表空间的数据文件也是不存在的。
需要给临时表空间添加数据文件。
命令:
SQL>setline200
----查看源tempfile----
SQL>selectnamefromv$tempfile;
NAME
------------------------------------------------------------------------------------------------------------------------
+DATADG/oradb/tempfile/temp.265.819738817
----添加临时表空间新数据----
SQL>altertablespacetempaddtempfile'/app/oracle/oradata/oradb/temp01.dbf'size1024m;
----查看添加临时表空间数据文件----
SQL>selectnamefromv$tempfile;
NAME
----------------------------------------------------------------------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 多种 故障 场景 Rman 恢复 手册 10