《oracle数据库的备份与恢复6665.docx》由会员分享,可在线阅读,更多相关《oracle数据库的备份与恢复6665.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ORACLE培训教讲义第六章 oracle数据库的备份与恢复第一部分:数据库的备份备份的必要性因为各种人为或或外界的因素素可能会造成成数据库中灾灾难性的数据据丢失,为了了保证数据库库中数据的安安全,必须采采取备份措施施保证RDBBMS中包含含的数据免遭遭破坏,而有有效的备份是是十分简单和和普通的,是是在数据库处处于无法使用用状态时用于于重建数据库库的重要信息息拷贝 。在在重要的修改改如删除段或或者表空间以以前或以后执执行适当的备备份是相当必必要的。备份的种类:冷备份:一种最简单直接接的备份方式式,也称为脱脱机备份,但但是必须关闭闭数据库,这这对于当前7724的有效效性并不可取取;联机热备:正如
2、名称所示,是是在数据库打打开时执行的的备份方式,进进行联机备份份比进行脱机机备份的进程程复杂;用导出exp应应用程序备份份:是对于脱机备份份和联机备份份类型的补充充,因为它无无法回滚,所所以不能替代代数据库文件件的备份。各种备份的原理理和步骤:冷备份:关闭数据库,采采取操作系统统拷贝命令来来完成对数据据库的备份,然然后启动数据据库。例如:将名为llyj的数据据库作一个冷冷备份,备份份的文件放置置在/mntt/backkup_wyy/目录下。l 首先找出控制文文件、数据文文件和reddo日志文件件的存储位置置SQL seelect name from v$conntrolffile ;NAME-
3、/u3/oraadata/lyj/ccontrool01.cctl/u3/oraadata/lyj/ccontrool02.cctl/u3/oraadata/lyj/ccontrool03.cctlSQL seelect statuus,namme froom v$ddatafiile ;STATUS NNAME- -SYSTEM /u3/orradataa/lyj/systeem01.ddbfONLINE /u3/orradataa/lyj/toolss01.dbbfONLINE /u3/orradataa/lyj/rbs011.dbfONLINE /u3/orradataa/lyj/tem
4、p001.dbffONLINE /u3/orradataa/lyj/userss01.dbbfONLINE /u3/orradataa/lyj/indx001.dbffSQL seelect * froom v$llogfille ;GROUP# STATTUS MEMBBER-1 /u3/oraadata/lyj/rredo011.log2 /u33/oraddata/llyj/reedo02.log3 /u33/oraddata/llyj/reedo03.logl 关闭数据库:SQL shhutdowwn数据库已经关闭闭。已经卸载数据库库。ORACLE 例程已经关关闭。l 将数据文件、控控
5、制文件和rredo日志志文件从上面面查找出来的的位置拷贝到到/mnt/backuup_wy/目录下作为为备份:oraclee|15:338:09|/u3/ooradatta/lyjj$ ccp *.cctl /mmnt/baackup_wy/oraclee|15:338:29|/u3/ooradatta/lyjj$ cpp *.loog /mnnt/bacckup_wwy/oraclee|15:338:43|/u3/ooradatta/lyjj$ cpp *.dbbf /mnnt/bacckup_wwy/l 重新开启数据库库:starrtup 热备份 在联机机状态下执行行备份,这时时数据库必须
6、须运行在ARRCHIVEELOG模式式下,因为在在日志书写器器进程重新使使用它之前,副副本是由每一一个redoo日志文件组组成的,日志志书写器在循循环方式中通通过redoo日志文件进进行循环,只只要数据库正正在运行,它它就写入一个个,然后是另另一个,依此此类推。在AARCHIVVELOG模模式下运行时时,直到reedo日志文文件的永久拷拷贝被建立,OOraclee才覆盖reedo日志文文件。在ARRCHIVEELOG模式式中运行数据据库时,可以以选择当每个个redo日日志文件写满满时手工地生生成备份或者者启动可选的的归档进程进进行自动备份份。只有通过过sys身份份或inteernal登登录数据
7、库,就就有权利通过过sqlpllus或svvrmgr查查看数据库的的归档状态;SVRMGR archhive llog liist数据库记录模式式 存档模式式自动存档 已启用存档路径 /u2/orateest/addmin/llyj/arrch最旧的联机日志志顺序 496要存档的下一个个记录顺序 498当前记录顺序 4498 在这种种模式下,数数据库运行在在ARCHIIVELOGG模式下,并并且能够进行行自动归档,此此时,可以进进行联机备份份了。假设数据库运行行在非存档模模式下,就应应该在参数文文件中修改llog_arrchivee_starrt = ttrue log_arcchive_de
8、st = 指定的的保存归档日日志文件的目目录log_arcchive_formaat = “制定的归档档日志文件的的存储格式备份控制文件;备份数据文件;归档当前的联机机日志文件;备份归档日志文文件。下面以lyj为为例说明如何何热备一个数数据库:l 备份控制文件:SVRMGR alteer dattabasee backkup coontrollfile to /mnt/bbackupp_wy/ccontroolfilee ;语句已处理。用完整的文件夹夹路径和文件件的名称/mnt/bbackupp_wy/ccontroolfilee将备份控控制文件存储储在此。l 备份数据文件: 执行一一个数据库
9、的的联机备份时时,需要一次次复制一个表表空间的数据据文件,在位位一个表空间间复制文件之之前需要执行行ALTERR TABLLESPACCE tabblespaace_naame BEEGIN BBACKUPP; 为表空空间复制完文文件时,需要要执行下列命命令:ALTER TTABLESSPACE tableespacee_namee END BACKUUP; 使用这这些BEGIIN和ENDD命令的理由由是当它们被被复制时,OOraclee需要将数据据文件头保持持连贯状态,发发出BEGIIN命令时,OOraclee停止更新受受影响的数据据文件的文件件头上的检查查点,在整个个表空间备份份模式中,O
10、Oraclee通过将全部部的数据块写写入redoo日志文件的的方式来记录录这个表空间间中的数据的的变化。通过下面语句找找出所有表空空间的名字:SVRMGR seleect * from v$tabblespaace;TS# NNAME- - 0 SSYSTEMM 1 TTOOLS 2 RRBS 3 TTEMP 4 UUSERS 5 IINDX 然后对对这些表空间间进行备份,将将数据文件备备份到/mnnt/bacckup_wwy/目录下:SVRMGR alteer tabblespaace syystem beginn backkup ;语句已处理。SVRMGR alteer tabblespa
11、ace toools bbegin backuup ;语句已处理。SVRMGR alteer tabblespaace rbbs beggin baackup;语句已处理。SVRMGR alteer tabblespaace teemp beegin bbackupp ;语句已处理。SVRMGR alteer tabblespaace ussers bbegin backuup ;语句已处理。SVRMGR alteer tabblespaace inndx beegin bbackupp ;语句已处理。oraclee|17:001:53|/u3/ooradatta/lyjj$ cpp *.db
12、bf /mnt/backuup_wy/SVRMGR alteer tabblespaace syystem end bbackupp ;语句已处理。SVRMGR alteer tabblespaace toools eend baackup ;语句已处理。SVRMGR alteer tabblespaace ussers eend baackup ;语句已处理。SVRMGR alteer tabblespaace teemp ennd bacckup ;语句已处理。SVRMGR alteer tabblespaace inndx ennd bacckup ;语句已处理。SVRMGR altee
13、r tabblespaace rbbs endd backkup ;语句已处理。l 归档当前的联机机redo日日志文件:备份完所有的数数据文件后,需需要归档当前前的联机reedo日志文文件,因为恢恢复时需要它它们。归档她她们时允许和和所有其他的的归档日志文文件一起进行行备份。SVRMGR alteer sysstem aarchivve logg currrent;语句已处理。这条命令导致OOraclee转换到一个个新的日志文文件。然后OOraclee归档所有未未被归档的日日志文件,还还可以使用另另外两条命令令达到相同的的效果:SVRMGR alteer sysstem sswitchh lo
14、gffile ;语句强制转换日日志。SVRMGR alteer sysstem aarchivve logg all ;语句导致Oraacle所有有已写满但仍仍未归档的rredo日志志文件归档。l 备份归档日志文文件一旦已经归档了了当前联机的的日志文件,最最后一步就是是备份所有归归档日志文件件到/mntt/backkup_wyy/目录下,因因为还原数据据库时需要它它们oraclee|17:442:46|/u2/ooratesst/admmin/lyyj/arcch$ ccp arcch_*.* /mntt/backkup_wyy/导出数据库作备备份数据库导出可以以被看作备份份的一种形式式。Or
15、accle实用工工具Expoort利用SSQL语句读读出数据库数数据,并在操操作系统层将将数据和定义义存入二进制制文件。导出出对于还原一一个意外删除除的对象或还还原这个对象象的定义来说说是很好的,因因为脱机备份份不能只还原原一个对象,而而联机备份还还原一个对象象必须得还原原该对象存在在的数据文件件,相对于导导出这种备份份形式来说要要繁琐很多,但但是从导出中中还原时,仅仅能得到导出出文件中的内内容,不能从从中向前回滚滚,所以导出出数据库这种种备份方式只只能作为联机机备份和脱机机备份的一种种补充。第二部分:数据据库的恢复请求恢复数据库的恢复一一般分为NOOARCHIIVELOGG模式和ARRCHI
16、VEELOG模式式,实际情况况中很少会丢丢失整个一个个oraclle数据库,通通常只是一个个驱动器损坏坏,使得仅仅仅丢失该驱动动器上的文件件。如何从这这样的损失中中恢复很大程程度上取决于于数据库是否否正运行在AARCHIVVELOG模模式下。如果果没有运行在在ARCHIIVELOGG模式下而丢丢失了一个数数据库文件,就就只能从最近近的一次备份份中恢复整个个数据库,备备份之后的所所有变化都丢丢失,而且在在数据库被恢恢复时,必须须关闭数据库库。由于在一一个产品中丢丢失数据或将将数据库关闭闭一段时间是是不可取的,所所以大多数ooraclee产品数据库库都运行在AARCHIVVELOG模模式下。在or
17、aclee中,恢复指指的是从归档档和联机reedo日志文文件中读取rredo日志志记录并将这这些变化应用用到数据文件件中并将其更更新到最近状状态的过程。从备份中还原一一个文件时,文文件代表了数数据库被备份份时而不是丢丢失时的状态态,通常情况况下希望恢复复过渡期即文文件备份和文文件丢失之间间发生的所有有变化,由于于所有变化都都被写入日志志文件中,所所以能够通过过读取日志文文件并且再次次将这些变化化应用于所还还原的文件中中。还原NOARCCHIVELLOG模式下下的数据库还原一个运行于于NOARCCHIVELLOG模式下下的数据库代代表了最简单单的情况,由由于不存在归归档日志文件件,也就不可可能有
18、介质恢恢复,全部的的操作仅仅是是操作系统级级的复制过程程。还原一个个NOARCCHIVELLOG模式下下运行的数据据库由下列几几步组成:l 如果实例正在运运行,关闭数数据库;shhutdowwnl 从最近备份中还还原控制文件件和数据文件件;l 指定是否移动任任何一个文件件在启动数据库时时,oraccle将根据据参数文件指指定的路径寻寻找这些文件件。如果一个个磁盘的丢失失迫使将文件件放回到与最最初不同的位位置,需要告告诉oraccle,否则则,就会出现现出错信息。可以有两种方法法告诉oraacle已移移动了一个数数据库文件:1、 使用alterr dataabase renamme filleo
19、rigiinal_ffilenaame to new_ffilenaame命令,其中中,origiinal_ffilenaame是当前使用用的完整的路路径和文件名名,而new_ffilenaame是文件当前前的路径和文文件名。为了改变数据库库文件的名字字,数据库必必须被安装但但没有打开,因因为变化要在在控制文件中中被记录。e.g: coonnectt inteernal;startupp mounnt;alter ddatabaase reename file /u3/ooradatta/lyjj/systtem01.dbf to /mnt/backuup_wy/systeem01.ddbf
20、;2、 如果正在移动全全部或大部分分的数据文件件,重建控制制文件会相对对简单一些。而而如果在备份份控制文件时时使用了allter ddatabaase baackup contrrolfille to tracee这条语句,就就会在admmin/uddump目录录下找到重建建控制文件的的跟踪语句,该该语句包括必必须的creeate ccontroolfilee等命令,将将该文件中的的改变了的文文件名代替原原有的文件名名和位置。l 重新打开数据库库应该使用ressetloggs选项打开开数据库,这这样复位日志志文件是为了了保证在新的的记录和那些些从先前的数数据库中留下下的记录之间间不会产生任任何
21、冲突。e.g:用备份份的控制文件件替换控制文文件:SVRMGRconneect innternaalSVRMGR alteer dattabasee backkup coontrollfile to /mnt/bbackupp_wy/ccontrool.ctll ;Statemeent prrocesssed.SVRMGR alteer dattabasee backkup coontrollfile to trrace ;SVRMGRexitoraclee|15:441:32|/u3/ooradatta/lyjj$cp /mntt/backkup_wyy/conttrol.cctl coon
22、troll01.cttloraclee|15:441:32|/u3/ooradatta/lyjj$cp /mntt/backkup_wyy/conttrol.cctl coontroll02.cttloraclee|15:441:32|/u3/ooradatta/lyjj$cp /mntt/backkup_wyy/conttrol.cctl coontroll03.cttlSVRMGRconneect innternaalSVRMGRstarttup moountSVRMGRalterr dataabase open resettlogs;请求介质恢复介质恢复是指这这样一种过程程:从reddo
23、日志文件件中读取变化化并把这些变变化应用于从从备份中还原原的一个或多多个数据库文文件中,最终终结果是数据据库文件被更更新到当前日日期并且它们们反应了备份份后所做的所所有变化,因因此进行介质质恢复必须把把redo日日志放在第一一位。在ARCHIVVELOG模模式下运行数数据库时,ooraclee在每个reedo日志文文件写满后都都进行一次拷拷贝,这些拷拷贝同没有被被复制的任何何联机reddo日志文件件一起被称为为是归档日志志文件,形成成对数据库所所进行的变化化的一条连续续记录。如果果丢失了一个个数据文件并并被迫从备份份中还原它,那那么归档日志志文件中的信信息将被用来来将所有变化化重新应用给给备份
24、发生后后被建立的文文件,最后的的效果是没有有遭受数据损损失。恢复控制文件在进行介质恢复复时,如果存存在当前控制制文件,就使使用当前控制制文件,如果果当前控制文文件在出现介介质故障时丢丢失,那么可可以用控制文文件的备份拷拷贝,或者创创建一个新的的控制文件,创创建控制文件件的语法如下下:STARTUPP NOMMOUNT;CREATE CONTRROLFILLE REUUSE DAATABASSE LYYJ NOORESETTLOGS ARCHIIVELOGG MAXXLOGFIILES 332 MAXXLOGMEEMBERSS 2 MAXXDATAFFILES 254 MAXXINSTAANCE
25、S 8 MAXXLOGHIISTORYY 907LOGFILEE GROUPP 1 /u3/orradataa/lyj/redo001.logg SIIZE 5000K, GROUPP 2 /u3/orradataa/lyj/redo002.logg SIIZE 5000K, GROUPP 3 /u3/orradataa/lyj/redo003.logg SIIZE 5000KDATAFILLE /u3/oradaata/lyyj/sysstem011.dbf, /u3/oradaata/lyyj/toools01.dbf, /u3/oradaata/lyyj/rbss01.dbbf, /u3
26、/oradaata/lyyj/temmp01.ddbf, /u3/oradaata/lyyj/useers01.dbf, /u3/oradaata/lyyj/inddx01.ddbfCHARACTTER SEET US77ASCIII;RECOVERR DATAABASEALTER SSYSTEMM ARCHHIVE LLOG ALLL;ALTER DDATABAASE OPPEN;Create contrrolfille命令只能能在nomoount选项项启动数据库库后发出,执执行该命令之之前,创建一一个新的控制制文件并自动动安装数据库库,然后新的的控制文件在在需要时可以以用于恢复。从丢失的数
27、据文文件中恢复通常由磁盘错误误引起的数据据文件的丢失失,是用户经经常遇到的情情况。如果正正在ARCHHIVELOOG模式下运运行,那么可可只还原丢失失的文件,把把它们还原到到出错的那一一刻,而进行行这些操作时时除非sysstem表出出错,其它的的文件正在运运行。使丢失的数据文文件脱机如果驱动器错误误导致丢失了了一个数据文文件,那么ooraclee已经将这个个文件脱机,可可以用下列查查询检查数据据库中文件的的状态:SQL seelect statuus,namme froom v$ddatafiile ;STATUS NNAME- -SYSTEM /u3/orradataa/lyj/systee
28、m01.ddbfONLINE /u3/orradataa/lyj/toolss01.dbbfONLINE /u3/orradataa/lyj/rbs011.dbfONLINE /u3/orradataa/lyj/temp001.dbffONLINE /u3/orradataa/lyj/userss01.dbbfOFFLINEE /u3/orradataa/lyj/indx001.dbff在这种情况下,iindx011.dbf文文件是脱机的的,如果已丢丢失的文件还还没有脱机,可可以通过下列列命令使其脱脱机:alter ddatabaase daatafille/u3/ooradatta/lyjj
29、/indxx01.dbbfoffliine;只有文件安全脱脱机后,才能能继续还原并并恢复它。其其它未脱机的的数据文件可可以照常工作作。还原丢失的数据据文件在恢复文件前,使使用操作系统统级的复制命命令还原数据据文件,否则则执行一条aalter databbase rrenamee filee命令在数据据库文件中记记录新的位置置。1恢复丢失的数数据文件(22种方法)l 以sysdbaa或systtem或innternaal身份登录录后,执行rrecoveer dattabasee命令使得ooraclee检查所有文文件并对任何何需要恢复的的文件进行恢恢复。l recoverr dataafile /
30、u3/ooradatta/lyjj/indxx01.dbbf如果归档日志文文件仍然联机机,它们需要要在archhive_llog_deest指向的的文件夹中。2将已恢复的文文件重新重新新联机恢复完文件后是是将文件重新新联机,可以以通过altter daatabasse命令实现现。E.g:SQLaltter daatabasse dattafilee/u3/ooradatta/lyjj/indxx01.dbbfonlinne ;OK!文件已被被恢复,已被被重新联机,可可以正常使用用了。执行一个不完全全恢复在介质故障恢复复中,不丢失失数据的数据据库恢复称为为完全恢复。如如果在数据库库恢复之后丢丢失
31、某些数据据,则称为不不完全恢复。一一般情况下,当当所有需要的的重作日志文文件和备份数数据文件以及及当前有效的的控制文件都都可以使用时时,应该采用用完全恢复。只只有当丢失了了一个归档或或联机重作日日志文件和控控制文件时采采用不完全恢恢复。不完全全恢复还可以以恢复到过去去的某个时间间点。不完全恢复并不不总是代表一一个从进程错错误中恢复的的理想办法,因因为如果联机机事务正在发发生而同时一一个批处理进进程正在运行行,如果用户户运行一个不不完全恢复来来重新运行批批处理进程,那那些数据就将将丢失。在不不完全恢复前前,需要将某某一次文件的的全备份进行行还原,然后后就可以进行行不完全恢复复了。不完全恢复有几几
32、个选项可供供选择:l until ccancell指定一个基基于取消的恢恢复;l until cchangee指定恢复到到一个指定的的SCN;l until ttime指定定恢复到某一一时间;l datetimme指定用户户希望恢复数数据库的日期期和时间。SVRMGRconneect innternaal;SVRMGRstarttup moountSVRMGRrecovver daatabasse unttil tiime 200102211:10:30:000;SVRMGRalterr dataabase open resettlogs;因为在打开数据据库时始用了了resettlogs选选项
33、, orracle抛抛弃恢复中没没有运用的重重作纪录,并并且确保永远远不再运用,同同时重新初始始化控制文件件中有关联机机日志文件和和重作线程的的信息,可以以有效地预防防使用一个已已存在的归档档和redoo日志来再次次恢复,所以以最好在运行行完不完全恢恢复后立即执执行数据库的的另一个脱机机或联机的全全备份。从导出文件中还还原数据库可以使用impp应用程序从从导出文件来来还原一个数数据库。从导出文件中还还原数据库比比从一个文件件系统的备份份中还原数据据库要容易,但但是它具有以以下一些不利利因素:l 还原进程时间长长;l 不能还原个别文文件;l 不能执行介质恢恢复,故不能能恢复导出后后所做的变化化例
34、子:数据文件恢复的的一般过程是是:=做任何恢复之前前,先备份目目前的系统,以以防恢复过程程中,系统遭遭到更大的损损坏首先取得最后一一次备份(脱脱机冷备份),并并确保没有损损坏,然后判断系统是是否运行在归归档模式,如果是非归档模模式,则只能能用最后一次次全备份来恢恢复,删除所有的数据据文件、控制制文件、联机机日志文件,将备份的数据文文件、控制文文件、联机日日志文件全部部拷回原目录录。重新启动数据库库=如果是归档模式式,再判断是是否可以shhutdowwn如果当前系统不不可shuttdown,则则进行tabblespaace、daatafille恢复(前提是sysstem表空空间和包含活活动回滚段
35、的的表空间不可可损坏)如果当前系统可可以shuttdown,则则进行reccover databbase恢复复=如果所有文件均均有效、无损损坏,则可进进行全数据库库恢复,过程程如下:connectt inteernalshutdowwn将数据文件、已已备份的归档档日志拷贝回回原目录(不不可拷贝控制制文件)startupp mounntset auttorecoovery onrecoverr dataabase;alter ddatabaase oppen;=如果某个归档日日志文件损坏坏,则只能恢恢复到那个损损坏的日志文文件之前,即不完全恢复connectt inteernalshutdoww
36、n将数据文件、已已备份的归档档日志拷贝回回原目录startupp mounntset auttorecoovery offrecoverr dataabase untill canccel;alter ddatabaase oppen reesetloogs;-将控制文件件与数据文件件同步,并将将数据库启动动至Openn模式在以resettlogs选选项启动数据据库后必须进进行数据库全全备份=用exp工具导导出的数据库库则用impp工具导入来来恢复=如果只有归档日日志,而没有有数据文件的的备份,只要归档日志保保存完整,则则可通过重建建数据文件来来恢复alter ddatabaase crreate dataffile 文件名;recoverr dataafile 文件名;