《第六章oracle数据库的备份与恢复第一部分数据库的备份备份的必要性.docx》由会员分享,可在线阅读,更多相关《第六章oracle数据库的备份与恢复第一部分数据库的备份备份的必要性.docx(10页珍藏版)》请在第壹文秘上搜索。
1、第六章OraCIe数据库的备份与恢复第一部分:数据库的备份备份的必要性因为各种人为或外界的因素可能会造成数据库中灾难性的数据丢失,为了保证数据库中数据的安全,必须采取备份措施保证RDBMS中包含的数据免遭破坏,而有效的备份是十分简单和普通的,是在数据库处于无法使用状态时用于重建数据库的重要信息拷贝。在重要的修改如删除段或者表空间以前或以后执行适当的备份是相当必要的。备份的种类:冷备份:一种最简单直接的备份方式,也称为脱机备份,但是必须关闭数据库,这对于当前7X24的有效性并不可取;联机热备:正如名称所示,是在数据库打开时执行的备份方式,进行联机备份比进行脱机备份的进程复杂;用导出exp应用程序
2、备份:是对于脱机备份和联机备份类型的补充,因为它无法回滚,所以不能替代数据库文件的备份。各种备份的原理和步骤:冷备份:关闭数据库,采取操作系统拷贝命令来完成对数据库的备份,然后启动数据库。例如:将名为Iyj的数据库作一个冷备份,备份的文件放置在/mnt/backup_wy/目录下。首先找出控制文件、数据文件和redo日志文件的存储位置SQLselectnamefromv$controlfile;NAMEu3oradatalyj/u3oradata1yj/u3oradata/lyj/SQLselectstatus,namefromv$datafile;STATUSNAMESYSTEMu3orad
3、atalyjONLINEu3oradatalyjONLINEu3oradatalyjONLINEu3oradatalyjONLINEu3oradatalyjONLINEu3oradatalyjSQLselect*fromv$logfile;GROUP#STATUSMEMBER1 u3oradatalyj2 u3oradatalyj3 u3oradatalyj关闭数据库:SQLshutdown数据库已经关闭。已经卸载数据库。ORACLE例程已经关闭。将数据文件、控制文件和redo日志文件从上面查找出来的位置拷贝到/mnt/backup_wy/目录下作为备份:oracle15:38:09|/u3/
4、oradata/lyj$cp*.ctlmntbackup-wyoracle|15:38:29|/u3/oradata/lyj$cp*.logmntbackup-wyoracle15:38:43u3oradatalyj$cp*.dbfmntbackup-wy重新开启数据库:StartUP热备份在联机状态下执行备份,这时数据库必须运行在ARCHIVELOG模式下,因为在日志书写器进程重新使用它之前,副本是由每一个redo日志文件组成的,日志书写器在循环方式中通过redo日志文件进行循环,只要数据库正在运行,它就写入一个,然后是另一个,依此类推。在ARCHlVELOG模式下运行时,直到redo日志文
5、件的永久拷贝被建立,OraCle才覆盖redo日志文件。在ARCHIVELoG模式中运行数据库时,可以选择当每个redo日志文件写满时手工地生成备份或者启动可选的归档进程进行自动备份。只有通过sys身份或internal登录数据库,就有权利通过Sqlplus或svrmgr查看数据库的归档状态;SVRMGRarchiveloglist数据库记录模式存档模式自动存档已启用存档路径u2oratestadminlyjarch最旧的联机日志顺序496要存档的下一个记录顺序498当前记录顺序498在这种模式下,数据库运行在ARCHIVELoG模式下,并且能够进行自动归档,此时,可以进行联机备份了。假设数据
6、库运行在非存档模式下,就应该在参数文件中修改log_archive_start=truelog_archive_dest=指定的保存归档日志文件的目录log_archive_format=制定的归档日志文件的存储格式备份控制文件;备份数据文件;归档当前的联机日志文件;备份归档日志文件。下面以Iyj为例说明如何热备一个数据库:备份控制文件:SVRMGRalterdatabasebackupcontrolfileto7mntbackup-wycontrolfile,;语句已处理。用完整的文件夹路径和文件的名称7mnt/backup_wy/controlfile,将备份控制文件存储在此。备份数据文件
7、:执行一个数据库的联机备份时,需要一次复制一个表空间的数据文件,在位一个表空间复制文件之前需要执行ALTERTABLESPACEtablespace_nameBEGINBACKUP;为表空间复制完文件时,需要执行下列命令:ALTERTABLESPACEtablespace_nameENDBACKUP;使用这些BEGIN和END命令而理由是当它们被复制时,OraCle需要将数据文件头保持连贯状态,发出BEGIN命令时,OraCIe停止更新受影响的数据文件的文件头上的检查点,在整个表空间备份模式中,OraCIe通过将全部的数据块写入redo日志文件的方式来记录这个表空间中的数据的变化。通过下面语句
8、找出所有表空间的名字:SVRMGRselect*fromv$tablespace;TS#NAME0SYSTEM1 TOOLS2 RBS3 TEMP4 USERS5 INDX然后对这些表空间进行备份,将数据文件备份到mntback叩_wy/目录下:SVRMGRaltertablespacesystembeginbackup;语句已处理。SVRMGRaltertablespacetoolsbeginbackup;语句已处理。SVRMGRaltertablespacerbsbeginbackup;语句已处理。SVRMGRaltertablespacetempbeginbackup;语句已处理。SVR
9、MGRaltertablespaceusersbeginbackup;语句已处理。SVRMGRaltertablespaceindxbeginbackup;语句已处理。oracle17:01:53|/u3/oradata/lyj$cp*.dbfmntbackup-wySVRMGRaltertablespacesystemendbackup;语句已处理。SVRMGRaltertablespacetoolsendbackup;语句已处理。SVRMGRaltertablespaceusersendbackup;语句已处理。SVRMGRaltertablespacetempendbackup;语句已处
10、理。SVRMGRaltertablespaceindxendbackup;语句已处理。SVRMGRaltertablespacerbsendbackup;语句已处理。归档当前的联机redo日志文件:备份完所有的数据文件后,需要归档当前的联机redo日志文件,因为恢复时需要它们。归档她们时允许和所有其他的归档日志文件一起进行备份。SVRMGRaltersystemarchivelogcurrent;语句已处理。这条命令导致OraCIe转换到一个新的日志文件。然后OraCIe归档所有未被归档的日志文件,还可以使用另外两条命令达到相同的效果:SVRMGRaltersystemswitchlogfil
11、e;语句强制转换日志。SVRMGRaltersystemarchivelogall;语句导致OraCIe所有已写满但仍未归档的redo日志文件归档。备份归档日志文件一旦已经归档了当前联机的日志文件,最后一步就是备份所有归档日志文件到/mnt/backup_wy/目录下,因为还原数据库时需要它们oracle17:42:46|/u2/oratest/admin/lyj/arch|$cparch_*.*mntbackup-wy导出数据库作备份数据库导出可以被看作备份的一种形式。Oracle实用工具Export利用SQL语句读出数据库数据,并在操作系统层将数据和定义存入二进制文件。导出对于还原一个意外
12、删除的对象或还原这个对象的定义来说是很好的,因为脱机备份不能只还原一个对象,而联机备份还原一个对象必须得还原该对象存在的数据文件,相对于导出这种备份形式来说要繁琐很多,但是从导出中还原时,仅能得到导出文件中的内容,不能从中向前回滚,所以导出数据库这种备份方式只能作为联机备份和脱机备份的一种补充。第二部分:数据库的恢复请求恢复数据库的恢复一般分为noarchivelog模式和archivelog模式,实际情况中很少会丢失整个一个OraCIe数据库,通常只是一个驱动器损坏,使得仅仅丢失该驱动器上的文件。如何从这样的损失中恢复很大程度上取决于数据库是否正运行在ARCHlVELOG模式下。如果没有运行
13、在ARCHlVELOG模式下而丢失了一个数据库文件,就只能从最近的一次备份中恢复整个数据库,备份之后的所有变化都丢失,而且在数据库被恢复时,必须关闭数据库。由于在一个产品中丢失数据或将数据库关闭一段时间是不可取的,所以大多数OraCIe产品数据库都运行在ARCHIVELOG模式下。在oracle中,恢复指的是从归档和联机redo日志文件中读取redo日志记录并将这些变化应用到数据文件中并将其更新到最近状态的过程。从备份中还原一个文件时,文件代表了数据库被备份时而不是丢失时的状态,通常情况下希望恢复过渡期即文件备份和文件丢失之间发生的所有变化,由于所有变化都被写入日志文件中,所以能够通过读取日志
14、文件并且再次将这些变化应用于所还原的文件中。还原NOARCHlVELoG模式下的数据库还原一个运行于noarchivelog模式下的数据库代表了最简单的情况,由于不存在归档日志文件,也就不可能有介质恢复,全部的操作仅仅是操作系统级的复制过程。还原一个NOARCHlVELoG模式下运行的数据库由下列几步组成: 如果实例正在运行,关闭数据库;ShUtdOWn 从最近备份中还原控制文件和数据文件; 指定是否移动任何一个文件在启动数据库时,oracle将根据参数文件指定的路径寻找这些文件。如果一个磁盘的丢失迫使将文件放回到与最初不同的位置,需要告诉Oraele,否则,就会出现出错信息。可以有两种方法告
15、诉oracle已移动了一个数据库文件:1、使用alterdatabaserenamefileioriginal-filename,tonew_filename命令,其中,originaLfilename,是当前使用的完整的路径和文件名,而,new_fiIename,是文件当前的路径和文件名。为了改变数据库文件的名字,数据库必须被安装但没有打开,因为变化要在控制文件中被记录。e.g:connectinternal;startupmount;alterdatabaserenamefile7u3oradatalyjZ,to7mntbackup-wyZ,;2、如果正在移动全部或大部分的数据文件,重建控制文件会相对简单一些。而如果在备份控制文件时使用了alterdatabasebackupcontrolfiletotrace这条语句,就会在admin/udump目录下找到重建控制文件的跟踪语句,该语句包