Oracle数据库应用教程1第16章数据库备份与恢复Oracle数据库应用教程2本章内容16.1项目导入——规划人力资源管理系统数据库备份与恢复16.2备份与恢复概述16.3物理备份与恢复16.4逻辑备份与恢复Oracle数据库应用教程3本章要求了解备份与恢复的重要性和概念掌握数据库的冷备份方法掌握数据库的热备份方法掌握数据库完全恢复方法掌握数据不完全恢复方法掌握逻辑备份和恢复方法Oracle数据库应用教程416.1项目导入——规划人力资源管理系统数据库备份与恢复为了保证人力资源管理系统数据的可恢复性,需要完成下列工作:制定人力资源管理系统数据库备份策略与恢复策略。将人力资源管理系统数据库设置为归档模式。合理设置人力资源管理系统数据库归档路径。进行一次人力资源管理系统数据库的完整备份。对重要表中数据进行逻辑备份。Oracle数据库应用教程516.2备份与恢复概述备份与恢复的基本概念Oracle数据库故障类型及恢复措施备份的原则与策略恢复的原则与策略Oracle数据库应用教程616.2.1备份与恢复的概念备份与恢复的作用备份的概念与类型恢复的概念、类型与恢复机制Oracle数据库应用教程7(1)备份与恢复的作用数据库系统在运行中可能发生故障,轻则导致事务异常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中的数据部分或全部丢失。数据库备份与恢复的目的就是为了保证在各种故障发生后,数据库中的数据都能从错误状态恢复到某种逻辑一致的状态。Oracle数据库应用教程8(2)备份的概念与类型概念数据库备份就是对数据库中部分或全部数据进行复制,形成副本,存放到一个相对独立的设备上,如磁盘、磁带,以备将来数据库出现故障时使用。根据数据备份方式的不同,数据库备份分为:物理备份:将组成数据库的数据文件、重做日志文件、控制文件、初始化参数文件等操作系统文件进行复制,将形成的副本保存到与当前系统独立的磁盘或磁带上。逻辑备份是指利用Oracle提供的导出工具(如Expdp,Export)将数据库中的数据抽取出来存放到一个二进制文件中。Oracle数据库应用教程9根据数据库备份时是否关闭数据库服务器,物理备份分为:冷备份又称停机备份,是指在关闭数据库的情况下将所有的数据库文件复制到另一个磁盘或磁带上去。热备份又称联机备份,是指在数据库运行的情况下对数据库进行的备份。要进行热备份,数据库必须运行在归档日志模式下。Oracle数据库应用教程10根据数据库备份的规模不同,物理备份可分为:完全备份:指对整个数据库进行备份,包括所有的物理文件。部分备份:对部分数据文件、表空间、控制文件、归档重做日志文件等进行备份。根据数据库是否运行在归档模式,物理备份可分为:归档备份非归档备份Oracle数据库应用教程11(3)恢复的概念、类型与恢复机制概念数据库恢复是指在数据库发生故障时,使用数据库备份还原数据库,使数据库恢复到无故障状态。根据数据库恢复时使用的备份不同,恢复分为:所谓的物理恢复就是,利用物理备份来恢复数据库,即利用物理备份文件恢复损毁文件,是在操作系统级别上进行的。逻辑恢复是指利用逻辑备份的二进制文件,使用Oracle提供的导入工具(如Impdp,Import)将部分或全部信息重新导入数据库,恢复损毁或丢失的数据。根据数据库恢复程度的不同,恢复可分为:完全恢复:利用备份使数据库恢复到出现故障时的状态。不完全恢复:利用备份使数据库恢复到出现故障时刻之前的某个状态。Oracle数据库应用教程12数据库的恢复分3个步骤进行:首先使用一个完整备份将数据库恢复到备份时刻的状态;然后利用归档日志文件和联机重做日志文件中的日志信息,采用前滚技术(RollForward)重做备份以后已经完成并提交的事物;最后利用回滚技术(RollBack)取消发生故障时已写入日志文件但没有提交的事物,将数据库恢复到故障时刻的状态。Oracle数据库应用教程13在T1和T3时刻进行了两次数据库备份,在T5时刻数据库出现故障。如果使用T1时刻的备份1恢复数据库,则只能恢复到T1时刻的状态,即不完全恢复;如果使用T3时刻的备份2恢复数据库,则可以恢复到T3时刻到T5时刻的任意状态(归档日志与联机日志)。Oracle数据库应用教程1416.2.2Oracle数据库故障类型及恢复措施语句故障进程故障用户错误实例失败网络故障介质故障Oracle数据库应用教程15语句故障语句故障是指执行SQL语句时发生的故障。例如,对不存在的表执行SELECT操作、向已无空间可用的表中执行INSERT操作等都会发生语句故障,Oracle将返回给用户一个错误信息。语句故障通常不需要DBA干预,Oracle会自动回滚产生错误的SQL语句操作。进程故障进程故障是指用户进程、服务器进程或数据库后台进程由于某种原因而意外终止,此时该进程将无法使用,但不影响其他进程的运行。Oracle的后台进程PMON能够自动监测并恢复故障进程。如果该进程无法恢复,则需要DBA关闭并重新启动数据库实例。Oracle数据库应用教程16用户错误用户错误是指用户在使用数据库时产生的错误。例如,用户意外删除某个表或表中的数据。用户错误无法由Oracle自动进行恢复,管理员可以使用逻辑备份来恢复。实例失败实例失败是指由于某种原因导致数据库实例无法正常工作。例如,突然断电导致数据库服务器立即关闭、数据库服务器硬件故障导致操作系统无法运行等。实例失败时,需要进行实例重新启动,在实例重新启动的过程中,数据库后台进程SMON会自动对实例进行恢复。Oracle数据库应用教程17网络故障网络故障是指由于通信软件或硬件故障,导致应用程序或用户与数据库服务器之间的通信中断。数据库的后台进程PMON将自动监测并处理意外中断的用户进程和服务器进程。介质故障介质故障是指由于各种原因引起的数据库数据文件、控制文件或重做日志文件的损坏,导致系统无法正常运行。例如,磁盘损坏导致文件系统被破坏。介质故障是数据库备份与恢复中主要关心的故障类型,需要管理员提前做好数据库的备份,否则将导致数据库无法恢复。Oracle数据库应用教程1816.2.3备份原则与策略在刚建立数据库时,应该立即进行数据库的完全备份;将所有的数据库备份保存在一个独立磁盘上(必须是与当前数据库系统正在使用的文件不同的磁盘);应该保持控制文件的多路复用,且控制文件的副本应该存放在不同磁盘控制器下的不同磁盘设备上;应该保持多个联机日志文件组,每个组中至少应该保持两个日志成员,同一日志组的多个成员应该分散存放在不同磁盘上;至少保证两个归档重做日志文件的归档目标,不同归档目标应该分散于不同磁盘;如果条件允许,尽量保证数据库运行于归档模式;根据数据库数据变化的频率情况确定数据库备份规律;Oracle数据库应用教程19在归档模式下,当数据库结构发生变化时,如创建或删除表空间、添加数据文件、重做日志文件等,应该备份数据库的控制文件;在非归档模式下,当数据库结构发生变化时,应该进行数据库的完全备份;在归档模式下,对于经常使用的表空间,可以采用表空间备份方法提高备份效率;在归档模式下,通常不需要对联机重做日志文件进行备份;使用RESETLOGS方式打开数据库后,应该进行一个数据库的完全备份;对于重要的表中的数据,可以采用逻辑备份方式进行备份。Oracle数据库应用教程2016.2.4恢复原则与策略根据数据库介质故障原因,确定采用完全介质恢复还是不完全介质恢复;如果数据库运行在非归档模式,则当介质故障发生时,只能进行数据库的不完全恢复,将数据库恢复到最近的备份时刻的状态;如果数据库运行在归档模式,则当一个或多个数据文件损坏时,可以使用备份的数据文件进行完全或不完全恢复数据库;如果数据库运行在归档模式,则当数据库的控制文件损坏时,可以使用备份的控制文件实现数据库的不完全恢复;如果数据库运行在归档模式,则当数据库的联机日志文件损坏时,可以使用备份的数据文件和联机重做日志文件不完全恢复数据库;如果执行了不完全恢复,则当重新打开数据库时应该使用RESETLOGS选项。Oracle数据库应用教程2116.3物理备份与恢复冷备份热备份非归档模式下数据库的恢复归档模式下数据库的完全恢复归档模式下数据库的不完全恢复利用OEM进行物理备份与恢复Oracle数据库应用教程22Oracle数据库应用教程2316.3.1冷备份概述关闭数据库实例。用操作系统的实用工具备份所有的物理文件,包括数据文件、控制文件、联机重做日志文件等。Oracle数据库应用教程24关闭数据库,开始备份故障时刻备份恢复重装备份副本恢复丢失数据备份完成如果没有启用归档模式,数据库不能恢复到备份完成后的任意时刻。如果启用归档模式,从冷备份结束后到出现故障这段时间的数据库恢复,可以利用联机日志文件和归档日志文件实现。Oracle数据库应用教程25冷备份步骤确定数据库各种物理文件关闭数据库备份所有相关的数据库物理文件重新启动数据库Oracle数据库应用教程26启动SQL*Plus,以SYSDBA身份登录数据库查询当前数据库所有数据文件、控制文件、联机重做日志文件的位置。SELECTfile_nameFROMdba_data_files;SELECTmemberFROMv$logfile;SELECTvalueFROMv$parameterWHEREname='control_files';关闭数据库SHUTDOWNIMMEDIATE复制所有数据文件、联机重做日志文件以及控制文件到备份磁盘。重新启动数据库STARTUPOracle数据库应用教程2716.3.2热备份数据库完全热备份的步骤:启动SQL*Plus,以SYSDBA身份登录数据库将数据库设置为归档模式以表空间为单位,进行数据文件备份备份控制文件备份其他物理文件Oracle数据库应用教程28备份数据文件查看当前数据库有哪些表空间,以及每个表空间中有哪些数据文件。SELECTtablespace_name,file_nameFROMdba_data_filesORDERBYtablespace_name;分别对每个表空间中的数据文件进行备份,其方法为将需要备份的表空间(如USERS)设置为备份状态。ALTERTABLESPACEUSERSBEGINBACKUP;将表空间中所有的数据文件复制到备份磁盘。结束表空间的备份状态。ALTERTABLESPACEUSERSENDBACKUP;对数据库中所有表空间分别采用该步骤进行备份。Oracle数据库应用教程29备份控制文件当执行了下列操作时应该进行控制文件备份ALTERDATABASEADDLOGFILEALERTDATABASEADDLOGFILEMEMBERALTERDATABASERENAMEFILEALTERDATABASEDROPLOGFILEGROUPALTERDATABASEDROPLOGFILEMEMBERCREATETABLESPACEALTERTABLESPACEADDDATAFILEALTERTABLESPACERENAMEDATAFILEDROPTABLESPACEOracle数据库应用教程30控制文件备份方法将控制文件备份为二进制文件。ALTERDATABASEBACKUPCONTROLFILETO'D:\ORACLE\BACKUP\CONTROL.BKP';将控制文件备份为文本文件。ALTERDATABASEBACKUPCONTROLFILETOTRACE;Oracle数据库应用教程31其他文件的备份归档当前的联机重做日志文件。ALTERSYSTEMARCHIVELOGCURRENT;备份归档重做日志文件,将所有的归档重做日志文件复制到备份磁盘中。备