《管理信息化数据库的备份与恢复..》由会员分享,可在线阅读,更多相关《管理信息化数据库的备份与恢复..(10页珍藏版)》请在金锄头文库上搜索。
1、ORACLE培训教讲义第六章 oracle数据库的备份与恢复第一部分:数据库的备份备份的必要性因为各种人为或外界的因素可能会造成数据库中灾难性的数据丢失,为了保证数据库中数据的安全,必须采取备份措施保证RDBMS中包含的数据免遭破坏,而有效的备份是十分简单和普通的,是在数据库处于无法使用状态时用于重建数据库的重要信息拷贝 。在重要的修改如删除段或者表空间以前或以后执行适当的备份是相当必要的。备份的种类:冷备份:一种最简单直接的备份方式,也称为脱机备份,但是必须关闭数据库,这对于当前724的有效性并不可取;联机热备:正如名称所示,是在数据库打开时执行的备份方式,进行联机备份比进行脱机备份的进程复
2、杂;用导出exp应用程序备份:是对于脱机备份和联机备份类型的补充,因为它无法回滚,所以不能替代数据库文件的备份。各种备份的原理和步骤:冷备份:关闭数据库,采取操作系统拷贝命令来完成对数据库的备份,然后启动数据库。例如:将名为lyj的数据库作一个冷备份,备份的文件放置在/mnt/backup_wy/目录下。l 首先找出控制文件、数据文件和redo日志文件的存储位置SQL select name from v$controlfile ;NAME-/u3/oradata/lyj/control01.ctl/u3/oradata/lyj/control02.ctl/u3/oradata/lyj/con
3、trol03.ctlSQL select status,name from v$datafile ;STATUS NAME- -SYSTEM /u3/oradata/lyj/system01.dbfONLINE /u3/oradata/lyj/tools01.dbfONLINE /u3/oradata/lyj/rbs01.dbfONLINE /u3/oradata/lyj/temp01.dbfONLINE /u3/oradata/lyj/users01.dbfONLINE /u3/oradata/lyj/indx01.dbfSQL select * from v$logfile ;GROUP#
4、 STATUS MEMBER-1 /u3/oradata/lyj/redo01.log2 /u3/oradata/lyj/redo02.log3 /u3/oradata/lyj/redo03.logl 关闭数据库:SQL shutdown数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。l 将数据文件、控制文件和redo日志文件从上面查找出来的位置拷贝到/mnt/backup_wy/目录下作为备份:oracle|15:38:09|/u3/oradata/lyj$ cp *.ctl /mnt/backup_wy/oracle|15:38:29|/u3/oradata/lyj$ cp *
5、.log /mnt/backup_wy/oracle|15:38:43|/u3/oradata/lyj$ cp *.dbf /mnt/backup_wy/l 重新开启数据库:startup 热备份 在联机状态下执行备份,这时数据库必须运行在ARCHIVELOG模式下,因为在日志书写器进程重新使用它之前,副本是由每一个redo日志文件组成的,日志书写器在循环方式中通过redo日志文件进行循环,只要数据库正在运行,它就写入一个,然后是另一个,依此类推。在ARCHIVELOG模式下运行时,直到redo日志文件的永久拷贝被建立,Oracle才覆盖redo日志文件。在ARCHIVELOG模式中运行数据库
6、时,可以选择当每个redo日志文件写满时手工地生成备份或者启动可选的归档进程进行自动备份。只有通过sys身份或internal登录数据库,就有权利通过sqlplus或svrmgr查看数据库的归档状态;SVRMGR archive log list数据库记录模式 存档模式自动存档 已启用存档路径 /u2/oratest/admin/lyj/arch最旧的联机日志顺序 496要存档的下一个记录顺序 498当前记录顺序 498 在这种模式下,数据库运行在ARCHIVELOG模式下,并且能够进行自动归档,此时,可以进行联机备份了。假设数据库运行在非存档模式下,就应该在参数文件中修改log_archiv
7、e_start = true log_archive_dest = 指定的保存归档日志文件的目录log_archive_format = “制定的归档日志文件的存储格式备份控制文件;备份数据文件;归档当前的联机日志文件;备份归档日志文件。下面以lyj为例说明如何热备一个数据库:l 备份控制文件:SVRMGR alter database backup controlfile to /mnt/backup_wy/controlfile ;语句已处理。用完整的文件夹路径和文件的名称/mnt/backup_wy/controlfile将备份控制文件存储在此。l 备份数据文件: 执行一个数据库的联机备
8、份时,需要一次复制一个表空间的数据文件,在位一个表空间复制文件之前需要执行ALTER TABLESPACE tablespace_name BEGIN BACKUP; 为表空间复制完文件时,需要执行下列命令:ALTER TABLESPACE tablespace_name END BACKUP; 使用这些BEGIN和END命令的理由是当它们被复制时,Oracle需要将数据文件头保持连贯状态,发出BEGIN命令时,Oracle停止更新受影响的数据文件的文件头上的检查点,在整个表空间备份模式中,Oracle通过将全部的数据块写入redo日志文件的方式来记录这个表空间中的数据的变化。通过下面语句找出
9、所有表空间的名字:SVRMGR select * from v$tablespace;TS# NAME- - 0 SYSTEM 1 TOOLS 2 RBS 3 TEMP 4 USERS 5 INDX 然后对这些表空间进行备份,将数据文件备份到/mnt/backup_wy/目录下:SVRMGR alter tablespace system begin backup ;语句已处理。SVRMGR alter tablespace tools begin backup ;语句已处理。SVRMGR alter tablespace rbs begin backup;语句已处理。SVRMGR alter
10、 tablespace temp begin backup ;语句已处理。SVRMGR alter tablespace users begin backup ;语句已处理。SVRMGR alter tablespace indx begin backup ;语句已处理。oracle|17:01:53|/u3/oradata/lyj$ cp *.dbf /mnt/backup_wy/SVRMGR alter tablespace system end backup ;语句已处理。SVRMGR alter tablespace tools end backup ;语句已处理。SVRMGR alt
11、er tablespace users end backup ;语句已处理。SVRMGR alter tablespace temp end backup ;语句已处理。SVRMGR alter tablespace indx end backup ;语句已处理。SVRMGR alter tablespace rbs end backup ;语句已处理。l 归档当前的联机redo日志文件:备份完所有的数据文件后,需要归档当前的联机redo日志文件,因为恢复时需要它们。归档她们时允许和所有其他的归档日志文件一起进行备份。SVRMGR alter system archive log curren
12、t;语句已处理。这条命令导致Oracle转换到一个新的日志文件。然后Oracle归档所有未被归档的日志文件,还可以使用另外两条命令达到相同的效果:SVRMGR alter system switch logfile ;语句强制转换日志。SVRMGR alter system archive log all ;语句导致Oracle所有已写满但仍未归档的redo日志文件归档。l 备份归档日志文件一旦已经归档了当前联机的日志文件,最后一步就是备份所有归档日志文件到/mnt/backup_wy/目录下,因为还原数据库时需要它们oracle|17:42:46|/u2/oratest/admin/lyj/
13、arch$ cp arch_*.* /mnt/backup_wy/导出数据库作备份数据库导出可以被看作备份的一种形式。Oracle实用工具Export利用SQL语句读出数据库数据,并在操作系统层将数据和定义存入二进制文件。导出对于还原一个意外删除的对象或还原这个对象的定义来说是很好的,因为脱机备份不能只还原一个对象,而联机备份还原一个对象必须得还原该对象存在的数据文件,相对于导出这种备份形式来说要繁琐很多,但是从导出中还原时,仅能得到导出文件中的内容,不能从中向前回滚,所以导出数据库这种备份方式只能作为联机备份和脱机备份的一种补充。第二部分:数据库的恢复请求恢复数据库的恢复一般分为NOARCH
14、IVELOG模式和ARCHIVELOG模式,实际情况中很少会丢失整个一个oracle数据库,通常只是一个驱动器损坏,使得仅仅丢失该驱动器上的文件。如何从这样的损失中恢复很大程度上取决于数据库是否正运行在ARCHIVELOG模式下。如果没有运行在ARCHIVELOG模式下而丢失了一个数据库文件,就只能从最近的一次备份中恢复整个数据库,备份之后的所有变化都丢失,而且在数据库被恢复时,必须关闭数据库。由于在一个产品中丢失数据或将数据库关闭一段时间是不可取的,所以大多数oracle产品数据库都运行在ARCHIVELOG模式下。在oracle中,恢复指的是从归档和联机redo日志文件中读取redo日志记录并将这些变化应用到数据文件中并将其更新到最近状态的过程。从备份中还原一个文件时,文件代表了数据库被备份时而不是丢失时的状态,通常情况下希望恢复过渡期即文件备份和文件丢失之间发生的所有变化,由于所有变化都被写入日志文件中,所以能够通过读取日志文件并且再次将这些变化应用于所还原的文