Oracle数据库多种故障场景Rman恢复手册_第1页
Oracle数据库多种故障场景Rman恢复手册_第2页
Oracle数据库多种故障场景Rman恢复手册_第3页
Oracle数据库多种故障场景Rman恢复手册_第4页
Oracle数据库多种故障场景Rman恢复手册_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ORACLE数据库各种故障场景RMAN恢复操作手册文件状态:【】草稿【 】修改稿【/】正式发布公司尚福科技保密等级作者福哥最后完成日期2015-01-29审核人员最后审核日期修改记录日期版本作者/修改者修订类型描述2015-01-291.0/福武修改第II页目录TOC\o"1-5"\h\z\o"CurrentDocument"1概述 11.1前言 1\o"CurrentDocument"1.2备份与恢复重要性 1\o"CurrentDocument"2数据库环境说明 1\o"CurrentDocument"3数据库系统环境要求 1\o"CurrentDocument"RMAN异机恢复场景 2\o"CurrentDocument"4.1数据完全恢复方式 24.1.1完全恢复场景 2\o"CurrentDocument"4.2数据不完全恢复方式 54.2.1基于时间点恢复场景 54.2.2基于tablespace恢复场景 9\o"CurrentDocument"RMAN本机恢复场景 145.1数据完全恢复方式 145.1.1所有数据文件被误删恢复场景 145.1.2单个数据文件被误删除恢复场景 165.1.3数据文件所在ASM磁盘组故障恢复场景 185.1.4控制文件损坏恢复场景 23\o"CurrentDocument"6恢复结束 251概述1.1前言随着商业银行业务规模的扩大,信息系统处理和存储的数据量不断增加,对信息系统稳定和数据的可用性提出了严格要求。如何保障系统数据的安全完整、保障银行业务系统的正常持续运行越来越重要。为了更加有效保障业务系统数据的安全性与可靠性。为此,结合XX银行业务系统的实际情况,制定了Oracle数据库各种故障场景恢复方案。以便在突如其来的数据库各种故障面前,能迅速确认故障类型、评估风险、选择有效而快速的恢复方案。1.2备份与恢复重要性数据库备份与恢复是为了保护一个数据库免于数据损失或者在发生数据损失后进行数据重新创建的各种策略、步骤和方法。数据库系统在运行中,随时可能发生各种故障。在发生故障后,能快速、有效的根据业务需求使用备份文件进行完全库恢复或按不完全恢复。2数据库环境说明项目名称Oracle数据库源主机Oracle数据库目标主机系统平台LinuxRehat5.5LinuxRehat5.5主机名称lzsjptdb01p/lzsjptdb02plzsjptdbIP地址11.66.1.xx/xx11.66.1.xxOracle版本OracleRelease11.1.0.6.0OracleRelease11.1.0.6.0数据库模式RAC单实例或RAC数据文件存储FilesystemFilesystem实例名ORADBORADB数据文件路径ASM磁盘本地系统文件或ASM磁盘3数据库系统环境要求安装操作系统LinuxRehat5.5,过程省略;Oracle11gR1数据库软件安装,过程省略;创建一个实例与源数据库实例一致。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{setnewname for datafile 1 to '/path/oradb/system.dbf';setnewname for datafile 2 to '/path/oradb/sysaux.dbf';setnewname for datafile 3 to '/path/oradb/undotbs1.dbf';setnewname for datafile 4 to '/path/oradb/users.dbf';allocatechannelcldevicetypedisk;allocatechannelc2devicetypedisk;allocatechannelc3devicetypedisk;restoredatabase;switchdatafileall;releasechannelcl;releasechannelc2;releasechannelc3;}备注:由于源数据库数据文件路径是ASM磁盘,因此需要将数据文件定义到新的路径上。Recover数据库。先注册从源数据库拷贝过来的归档备份文件备份集到rman中,然后通过RECOVER命令将数据文件恢复到失败点的状态,或者说Oracle会自行根据archivedlog里面的信息来恢复到控制文件记录最终点。命令:RMAN>catalogstartwith'/path/归档备份文件.bak';RMAN>run(allocatechannelc1devicetypedisk;allocatechannelc2devicetypedisk;allocatechannelc3devicetypedisk;recoverdatabase;releasechannelc1;releasechannelc2;releasechannelc3;}修改在线日志文件。由于在线重做文件源数据库路径是在ASM磁盘组,需要重命名或者重建在线重做日志。使用sqlplus登录修改。命令:[oracle@lzoracle01t]$sqlplus/assysdbaSQL*Plus:Release11.1.0.6.0-ProductiononWedFeb411:44:062015Copyright(c)1982,2007,Oracle.Allrightsreserved.Connectedto:

OracleDatabase11gEnterpriseEditionRelease11.1.0.6.0-64bitProductionWiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions-----查看在线重做日志原来的路径——SQL>selectGROUP#,STATUS,MEMBER,IS_RECOVERY_DEST_FILEfromv$logfile;ISRECOVERYDESTFILEGROUP#STATUSMEMBERISRECOVERYDESTFILETOC\o"1-5"\h\z4 ONLINE +DATADG/oradb/onlinelog/group_4.264.819738751 NO3 ONLINE +DATADG/oradb/onlinelog/group_3.263.819738729 NO2 ONLINE +DATADG/oradb/onlinelog/group_2.262.819738713 NO1 ONLINE +DATADG/oradb/onlinelog/group_1.261.819738703 NO----修改在线重做日志的路劲----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#STATUSMEMBERISRECOVERYDESTFILEONLINE/app/oracle/oradata/oradb/redo01.logNOONLINE/app/oracle/oradata/oradb/redo02.logNOONLINE/app/oracle/oradata/oradb/redo03.logNOONLINE/app/oracle/oradata/oradb/redo04.logNOGROUP#STATUSMEMBERISRECOVERYDESTFILEONLINE/app/oracle/oradata/oradb/redo01.logNOONLINE/app/oracle/oradata/oradb/redo02.logNOONLINE/app/oracle/oradata/oradb/redo03.logNOONLINE/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.dbfsize1024m;----查看添加临时表空间数据文件----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{set newname for datafile 1 to '/path/oradb/system.dbf';set newname for datafile 2 to '/path/oradb/sysaux.dbf';set newname for datafile 3 to '/path/oradb/undotbs1.dbf';set newname for datafile 4 to '/path/oradb/users.dbf';allocatechannelc1devicetypedisk;allocatechannelc2devicetypedisk;allocatechannelc3devicetypedisk;restoredatabase;switchdatafileall;releasechannelcl;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/assysdbaSQL*Plus:Release11.1.0.6.0-ProductiononWedFeb411:44:062015Copyright(c)1982,2007,Oracle.Allrightsreserved.Connectedto:OracleDatabase11gEnterpriseEditionRelease11.1.0.6.0-64bitProductionWiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions-----查看在线重做日志原来的路径——SQL>selectGROUP#,STATUS,MEMBER,IS_RECOVERY_DEST_FILEfromv$logfile;GROUP#STATUSMEMBER IS_RECOVERY_DEST_FILE4ONLINE+DATADG/oradb/onlinelog/group_4.264.819738751NO3ONLINE+DATADG/oradb/onlinelog/group_3.263.819738729NO2ONLINE+DATADG/oradb/onlinelog/group_2.262.819738713NO1ONLINE+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#STATUSMEMBER IS_RECOVERY_DEST_FILETOC\o"1-5"\h\z4 ONLINE /app/oracle/oradata/oradb/redo01.log NO3 ONLINE /app/oracle/oradata/oradb/redo02.log NO2 ONLINE /app/oracle/oradata/oradb/redo03.log NO1 ONLINE /app/oracle/oradata/oradb/redo04.log NO(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.dbfsize1024m;----查看添加临时表空间数据文件----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.2基于tablespace恢复场景场景描述:综合业务数据库系统,某用户在规定时间段内还没完成数据核对,就被新的数据覆盖,导致数据错乱。现要求把某用户下的数据恢复到未核对之前,鉴于不能在原数据库系统进行操作。经讨论决定在数据库备机系统进行数据恢复。由于备份文件非常庞大,如果进行全库恢复耗时过长。因此,采用特定用户下默认表空间所有数据文件恢复。故障分析:只恢复特定用户下默认表空间里的所有数据文件,然后按时间点recover数据库,这样就避免数据完全恢复方式,从而缩短恢复时间。恢复方式:基于tablespace恢复+基于时间点恢复或者基于SCN号恢复或者基于日志序列号恢复相结合。恢复步骤:(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命令转储特定tablespace下所有数据文件。说明:①系统表空间(SYSTEM,SYSAUX,USERS,UNDOTBS1)是必须要恢复的;②把不需要恢复的数据文件offline掉③switch要恢复的数据文件④也可以不用setnewname不需要恢复的数据文件;⑤由于源数据库数据文件路径是ASM磁盘,因此需要将数据文件定义(setnewname)到新的路径上。命令:RMAN>alterdatabasemount;RMAN>catalogstartwith'/path/数据库全备文件.bak';RMAN>run(allocatechannelcldevicetypedisk;allocatechannelc2devicetypedisk;allocatechannelc3devicetypedisk;setnewnamefordatafile1to'/path/oradb/system.dbf;setnewnamefordatafile2to'/path/oradb/sysaux.dbf;setnewnamefordatafile3to'/path/oradb/undotbsl.dbf;setnewnamefordatafile4to'/path/oradb/users.dbf;setnewnamefordatafile5to'/path/oradb/lzoa.dbf;setnewnamefordatafile6to'/path/oradb/testdb.dbf;setnewnamefordatafile7to'/path/oradb/lzccb01.dbf;setnewnamefordatafile8to'/path/oradb/teller_cl01.dbf;sql'alterdatabasedatafile6offline';sql'alterdatabasedatafile7offline';sql'alterdatabasedatafile8offline';restoretablespaceSYSTEM,SYSAUX,USERS,UNDOTBS1,LZOA;switchdatafile1;switchdatafile2;switchdatafile3;switchdatafile4;switchdatafile5;releasechannelc1;releasechannelc2;releasechannelc3;}(4)catalog归档备份集。先注册从源数据库拷贝过来的归档备份文件备份集到rman中,通过listbackup命令查看全备、归档日志文件时间状态。命令:RMAN>catalogstartwith'/path/归档备份文件.bak';RMAN>listbackup;(5)Recover数据库。根据业务要求,通过RECOVER命令将指定某个定表空间的数据恢复到故障点(某个时间点)之前的状态。命令:RMAN>run(allocatechannelc1devicetypedisk;allocatechannelc2devicetypedisk;

allocatechannelc3devicetypedisk;recoverdatabasetablespaceLZOAuntiltime'2015-02-0511:25:30';releasechannelc1;releasechannelc2;releasechannelc3;}(6)修改在线日志文件。由于在线重做文件源数据库路径是在ASM磁盘组,需要重命名或者重建在线重做日志。使用sqlplus登录修改。[oracle@lzoracle01t]$sqlplus/assysdbaSQL*Plus:Release11.1.0.6.0-ProductiononWedFeb411:44:062015Copyright(c)1982,2007,Oracle.Allrightsreserved.Connectedto:OracleDatabase11gEnterpriseEditionRelease11.1.0.6.0-64bitProductionWiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions-----查看在线重做日志原来的路径——SQL>selectGROUP#,STATUS,MEMBER,IS_RECOVERY_DEST_FILEfromv$logfile;GROUP#STATUSMEMBER IS_RECOVERY_DEST_FILEONLINE+DATADG/oradb/onlinelog/group_4.264.819738751NOONLINE+DATADG/oradb/onlinelog/group_3.263.819738729NOONLINE+DATADG/oradb/onlinelog/group_2.262.819738713NOONLINE+DATADG/oradb/onlinelog/group_1.261.819738703NOONLINE+DATADG/oradb/onlinelog/group_4.264.819738751NOONLINE+DATADG/oradb/onlinelog/group_3.263.819738729NOONLINE+DATADG/oradb/onlinelog/group_2.262.819738713NOONLINE+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#STATUSMEMBER IS_RECOVERY_DEST_FILETOC\o"1-5"\h\z4 ONLINE /app/oracle/oradata/oradb/redo01.log NO3 ONLINE /app/oracle/oradata/oradb/redo02.log NO2 ONLINE /app/oracle/oradata/oradb/redo03.log NO1 ONLINE /app/oracle/oradata/oradb/redo04.log NO(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.dbfsize1024m;----查看添加临时表空间数据文件----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.5RMAN本机恢复场景5.1数据完全恢复方式5.1.1所有数据文件被误删恢复场景场景描述:数据库业务系统由于操作不当,从物理磁盘上误删了所有数据文件,导致数据库宕机启动失败。故障分析:数据文件被删除,启动数据库显示错误信息,即介质失败。恢复数据库时,数据库必须处于MOUNT状态,才能进行restoredatabase、recoverdatabase。恢复方式:选择完全恢复方式。恢复步骤:(1) 检查备份集。登录RMAN管理中心,把数据库实例启动到mount状态下,检查数据库备份集文件(全备文件、归档日志文件)是否正常。命令:[oracle@stat~]$rmantarget/RMAN>startupnomount;RMAN>alterdatabasemount;RMAN>listbackup;(2) 恢复数据文件。先用listbackup命令检查确定是否需要注册备份集(数据库全备文件)到rman中,然后使用RESTORE命令转储数据文件备份。命令:RMAN>catalogstartwith'/path/数据库全备文件.bak';(备注:如果rman中找不到相应的全备备份集,就需要从新注册。)RMAN>run{

allocatechannelcldevicetypedisk;allocatechannelc2devicetypedisk;restoredatabase;switchdatafileall;releasechannelc1;releasechannelc2;}(3) Recover数据库。先用listbackup命令检查确定是否需要注册归档备份文件备份集到rman中,然后通过RECOVER命令将数据文件恢复到失败点状态。命令:RMAN>catalogstartwith'/path/归档备份文件.bak';(备注:如果rman中找不到相应的归档备份集,就需要从新注册。)RMAN>run(allocatechannelc1devicetypedisk;allocatechannelc2devicetypedisk;recoverdatabase;releasechannelc1;releasechannelc2;}(4) Open数据库命令:RMAN>alterdatabaseopen;databaseopened(5) 检查数据文件状态。检查所有数据文件是否已经恢复正常。SQL>selectFILE_NAME,TABLESPACE_NAME,STAUSfromdba_data_filesFILE_NAME TABLESPACE_NAMESTATUSAVAILABLE+DATADG/oradb/datafile/users.269.871296055USERSAVAILABLE+DATADG/oradb/datafile/undotbs1.256.871296483UNDOTBS1AVAILABLE+DATADG/oradb/datafile/undotbs1.256.871296483UNDOTBS1AVAILABLEAVAILABLEAVAILABLEAVAILABLEAVAILABLE+DATADG/oradb/datafile/sysaux.257.871296481SYSAUX+DATADG/oradb/datafile/system.258.871296481SYSTEM+DATADG/oradb/datafile/lzoa.270.871296055LZOAAVAILABLE+DATADG/oradb/datafile/testdb.271.871296483TESTDBAVAILABLE+DATADG/oradb/datafile/lzccb01.dbfLZCCBAVAILABLE+DATADG/oradb/datafile/teller_cl01.dbfTELLER_CLAVAILABLE8rowsselected.5.1.2单个数据文件被误删除恢复场景场景描述:数据库业务系统由于操作不当,从物理磁盘上误删了某一个数据文件,导致数据库实例启动失败。如下:[oracle@oradb/]$exportORACLE_SID=oradb[oracle@oradb/]$sqlplus/assysdbaSQL*Plus:Release11.1.0.6.0-ProductiononTueFeb1011:37:062015Copyright(c)1982,2007,Oracle.Allrightsreserved.Connectedtoanidleinstance.SQL>startupORACLEinstancestarted.TotalSystemGlobalArea1553379328bytesFixedSize2144664bytesVariableSize520095336bytesDatabaseBuffers1023410176bytesRedoBuffers7729152bytesDatabasemounted.ORA-01157:cannotidentify/lockdatafile6-seeDBWRtracefileORA-01110:datafile6:'+DATADG/oradb/datafile/testdb.271.871296483'故障分析:单个数据文件从物理磁盘上被删除,启动数据库显示错误信息,无法启动数据库。恢复数据库时,数据库必须处于MOUNT状态,才能进行restoredatafile、recoverdatafile。恢复方式:单个数据文件恢复方式。恢复步骤:(1)检查备俭集。登录RMAN管理中心,把数据库实例启动到mount状态下,检查数据库备份集文件(全备文件、归档日志文件)是否正常。命令:[oracle@stat~]$rmantarget/RMAN>startupnomount;RMAN>alterdatabasemount;RMAN>listbackup;(2) 恢复数据文件。先用listbackup命令检查确定是否需要注册备份集(数据库全备文件)到rman中,然后使用RESTOREDATAFILE恢复损坏的那个数据文件。命令:RMAN>catalogstartwith'/path/数据库全备文件.bak';(备注:如果rman中找不到相应的全备备份集,就需要从新注册。)RMAN>run{allocatechannelcldevicetypedisk;allocatechannelc2devicetypedisk;restoredatafile6;switchdatafile6;releasechannelcl;releasechannelc2;}(3) Recover数据库。先用listbackup命令检查确定是否需要注册归档备份文件备份集到rman中,然后通过RECOVERDATAFILE命令将数据文件恢复到失败点状态。命令:RMAN>catalogstartwith'/path/归档备份文件.bak';(备注:如果rman中找不到相应的归档备份集,就需要从新注册。)RMAN>run(allocatechannelcldevicetypedisk;allocatechannelc2devicetypedisk;recoverdatafile6;releasechannelcl;releasechannelc2;}Open数据库。命令:RMAN>alterdatabaseopen;databaseopened检查数据文件状态。检查数据文件是否已经恢复正常。SQL>selectFILE_NAME,TABLESPACE_NAME,ST;rUSfromdba_data_fileswhereFILE#=’6FILE_NAME TABLESPACE_NAMESTATUS+DATADG/oradb/datafile/testdb.271.871296483TESTDB AVAILABLE1rowsselected.5.1.3数据文件所在ASM磁盘组故障恢复场景场景描述:数据库业务系统,由于存储故障引起数据库ASM磁盘组损坏,导致在ASM磁盘组上所有数据文件全部丢失,数据库实例出现宕机,并启动失败。如下:+DATADG从磁盘损坏,数据文件丢失,启动数据库实例的结果显示。[oracle@oradb~]$exportORACLE_SID=oradb[oracle@oradb~]$sqlplus/assysdbaSQL*Plus:Release11.1.0.6.0-ProductiononTueFeb1016:59:222015Copyright(c)1982,2007,Oracle.Allrightsreserved.Connectedtoanidleinstance.SQL>startupORA-01078:failureinprocessingsystemparametersORA-01565:errorinidentifyingfile'+DATADG/oradb/spfileoradb.ora'ORA-17503:ksfdopn:2Failedtoopenfile+DATADG/oradb/spfileoradb.oraORA-15056:additionalerrormessageORA-17503:ksfdopn:DGOpenFile05Failedtoopenfile+DATADG/oradb/spfileoradb.oraORA-17503:ksfdopn:2Failedtoopenfile+DATADG/oradb/spfileoradb.oraORA-15173:entry'oradb'doesnotexistindirectory'/'ORA-06512:atline4故障分析:ASM磁盘组损坏,所有数据文件丢失,数据库实例无法启动。需要重新建新的ASM磁盘组(ASM磁盘组创建步骤忽略);把所有数据文件恢复到新的ASM磁盘组上;数据库必须处于MOUNT状态进行恢复。恢复方式:完全恢复方式。恢复步骤:(1) 恢复ASM磁盘组。从新划存储空间,建立新的ASM磁盘组“+DATATESF(步骤忽略)。(2) 修改参数文件。由于初始参数文件(init.ora)里保存原来ASM磁盘组名称,需要修改为新ASM磁盘组名称,否则在RESTORE控制文件时,会提示打不开ASM磁盘组的错误。如下:RMAN>startupnomountpfile='/app/oracle/admin/oradb/pfile/init.oraRMAN>restorecontrolfilefrom'/app/databackup/controlfile.bak';Startingrestoreat12-FEB-15allocatedchannel:ORA_DISK_1channelORA_DISK_1:SID=317devicetype=DISKchannelORA_DISK_1:restoringcontrolfileRMAN-00571:=================================RMAN-00569:==========ERRORMESSAGESTACKFOLLOWS===============RMAN-00571:===========================================================RMAN-03002:failureofrestorecommandat02/12/201515:30:33ORA-19870:errorwhilerestoringbackuppiece/app/databackup/controlfile_c-2573003471-20150212-02ORA-19504:failedtocreatefile"+DATADG"备注:+DATADG磁盘组已经损坏)ORA-17502:ksfdcre:4Failedtocreatefile+DATADGORA-15001:diskgroup"DATADG"doesnotexistorisnotmountedORA-15077:couldnotlocateASMinstanceservingarequireddiskgroup(3) 恢复控制文件。登录RMAN管理中心,先shutdownimmediate实例,使用初始参数文件或备份的pfile参数文件启动数据库实例到nomount状态下,然后使用备份的控制文件,进行restoerControl文件。命令:[oracle@stat~]$rmantarget/RMAN>startupnomountpfile='/app/oracle/admin/oradb/pfile/init.oraRMAN>restorecontrolfilefrom'/path/controlfile.bak';(4)恢复数据文件。把数据库实例启动到mount的状态下,用listbackup命令检查确定是否需要注册备份集(数据库全备文件)到rman中,然后使用RESTORE命令转储数据文件到新ASM磁盘组上(备注:由于旧ASM磁盘组已经损坏,而控制文件还记录原来的路径,因此需要将数据文件定义到新的ASM磁盘组上)。命令:RMAN>alterdatabasemount;RMAN>listbackup;(备注:如果rman中找不到相应的全备备份集,就需要从新注册。)RMAN>catalogstartwith'/path/数据库全备文件.bak';RMAN>run(allocatechannelcldevicetypedisk;allocatechannelc2devicetypedisk;setnewnamefordatafile1to'+DATATEST/oradb/datafile/system.dbf';setnewnamefordatafile2to'+DATATEST/oradb/datafile/sysaux.dbf;setnewnamefordatafile3to'+DATATEST/oradb/datafile/undotbs1.dbf';setnewnamefordatafile4to'+DATATEST/oradb/datafile/users.dbf';setnewnamefordatafile5to'+DATATEST/oradb/datafile/lzoa.dbf';setnewnamefordatafile6to'+DATATEST/oradb/datafile/testdb.dbf';setnewnamefordatafile7to'+DATATEST/oradb/datafile/lzccb01.dbf;setnewnamefordatafile8to'+DATATEST/oradb/datafile/teller_cl01.dbf;restoredatabase;switchdatafileall;releasechannelc1;releasechannelc2;}Recover数据库。先用listbackup命令检查确定是否需要注册归档备份文件备份集到rman中,然后通过RECOVER命令将数据恢复到故障点之前。命令:RMAN>listbackup;(备注:如果rman中找不到相应的归档备份集,就需要从新注册。)RMAN>catalogstartwith'/path/归档备份文件.bak';RMAN>run(allocatechannelc1devicetypedisk;allocatechannelc2devicetypedisk;recoverdatabase;releasechannelc1;releasechannelc2;}修改在线日志文件。由于在线重做文件路径还是原来旧ASM磁盘组,需要重命名或者重建在线重做日志到新的ASM磁盘组上。使用sqlplus登录修改。[oracle@lzoracle01t]$sqlplus/assysdbaSQL*Plus:Release11.1.0.6.0-ProductiononWedFeb411:44:062015Copyright(c)1982,2007,Oracle.Allrightsreserved.Connectedto:OracleDatabase11gEnterpriseEditionRelease11.1.0.6.0-64bitProductionWiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions-----查看在线重做日志原来的路径——SQL>selectGROUP#,STATUS,MEMBER,IS_RECOVERY_DEST_FILEfromv$logfile;GROUP#STATUSMEMBER IS_RECOVERY_DEST_FILE4ONLINE+DATADG/oradb/onlinelog/group_4.264.819738751NO3ONLINE+DATADG/oradb/onlinelog/group_3.263.819738729NO2ONLINE+DATADG/oradb/onlinelog/group_2.262.819738713NO1ONLINE+DATADG/oradb/onlinelog/group_1.261.819738703NO----修改在线重做日志的路劲----

SQL>alterdatabaserenamefile'+DATADG/group_1.261.819738703'to'/+DATATEST/path/redo01.log';alterdatabaserenamefile'+DATADG/group_2.262.819738713'to'+DATATEST/path/redo02.log';alterdatabaserenamefile'+DATADG/group_3.263.819738729'to'+DATATEST/path/redo03.log';alterdatabaserenamefile'+DATADG/group_4.264.819738751'to'+DATATEST/path/redo04.log';Databasealtered.-----查看修改后在线重做日志的路劲状态------SQL>selectGROUP#,STATUS,MEMBER,IS_RECOVERY_DEST_FILEfromv$logfile;GROUP#STATUSMEMBERIS_RECOVERY_DEST_FILE 4 ONLINE +DATATEST/oradb/onlinelog/redo01.log NO3ONLINE+DATATEST/oradb/onlinelog/redo02.logNO2O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论