第8章数据库备份和恢复备份就是数据库信息的一个拷贝。对于Oracle而言,这些信息包括控制文件、数据文件以及重做日志文件等。数据库备份的目的是为了防止意外事件发生而造成数据库的破坏后恢复数据库中的数据信息。8.1概述备份和恢复是两个互相联系的概念,备份就是将数据信息保存起来;而恢复则是当意外事件发生或者某种需要时,将已备份的数据信息还原到数据库系统中去。1.备份原则(1)日志文件归档到磁盘,以后再拷贝到磁带上。归档日志文件目的地最好不要与数据库文件或联机重做日志文件存储在同一个物理磁盘设备上。如果数据库文件和当前激活重做日志文件丢失,可使用联机备份或脱机备份,然后可以继续安全操作。当使用CREATEDATABASE命令创建数据库时,MAXLOGFILES参数值大于2,将简化丢失未激活但联机的重做日志文件的恢复操作。(2)如果数据库文件备份到磁盘上,应使用单独磁盘或磁盘组保存数据文件的备份拷贝。备份到磁盘上通常可以在较短时间内恢复。(3)应保持控制文件的多个拷贝,控制文件的拷贝应置于不同磁盘控制器下的不同磁盘设备上。增加控制文件可以先关闭数据库,拷贝控制文件,改变服务器参数文件的参数CONTROL_FILES,再重新启动数据库即可。8.1概述1.备份原则(4)联机日志文件应为多个,每个组至少应保持两个成员。日志组的两个成员不应保存在同一个物理设备上,因为这将削弱多重日志文件的作用。(5)保持归档重做日志文件的多个拷贝,在磁盘和磁带上都保留备份拷贝。使用服务器参数文件中的LOG_ARCHIVE_DUPLEX_DEST和LOG_ARCHIVE_MIN_SUCCEED_DEST参数,Oracle会自动双向归档日志文件。(6)通过在磁盘上保存最小备份和数据库文件向前回滚所需的所有归档重做日志文件,在许多情况下可以使得从备份中向前回滚数据库或数据库文件的过程简化和加速。(7)增加、重命名、删除日志文件和数据文件改变数据库结构,控制文件都应备份,因为控制文件存放数据库的模式结构。此外,增加数据文件后也要备份。(8)若企业有多个Oracle数据库,则应使用具有恢复目录的Oracle恢复管理器。这将使用户备份和恢复过程中的错误引起的风险达到最小。8.1概述2.数据库备份应用下面讨论如何将集成的数据库备份用于实例失败和磁盘失败。(1)实例失败从实例失败中恢复应自动进行。数据库需要访问位于正确位置的所有控制文件、联机重做日志文件和数据文件。数据库中任何未提交的事务都要回滚。一个实例失败(例如由服务器失败引起的)之后,当数据库要重启动时,必须检查数据库报警日志中的错误信息。(2)磁盘失败磁盘失败也叫介质失败(mediafailure),通常由磁盘损坏或磁盘上读错误引起,这样一个磁盘上驻留的当前数据库文件变得无法被数据库读出。驻留联机重做日志文件的磁盘应被镜像,失败时它们不会丢失。镜像可通过使用重做日志文件或在操作系统级镜像文件。如果丢失的是数据文件,可从前一天晚上的热备份中恢复,步骤如下:(1)从备份中把丢失的文件恢复到其原来位置cp/db10/oracle/CC1/data01.dbf/db03/oracle/CC1/data01.dbf(2)安装数据库ORACLE_SID=CC1;exportORACLE_SIDORAENV_ASK=NO;exportORAENV_ASconnectsystem/managerassysdbastartupmountcc1;(3)恢复数据库要求给出恢复所需的各归档日志文件名。recoverdatabase;(4)打开数据库alterdatabaseopen;8.1概述3.数据库备份类型备份一个Oracle数据库有三种标准方式:导出(Export)、脱机备份(offlinebackup)和联机(ARCHIVELOG)备份(onlinebackup)。导出方式是数据库的逻辑备份。脱机备份和联机备份都是物理备份(也称低级备份)。(1)逻辑备份导出是将数据库中数据备份到一个称为“导出转储文件”的二进制系统文件中。导出有3种模式:①用户(User)模式:导出用户所有对象以及对象中的数据。②表(Table)模式:导出用户的所有表或者用户指定的表。③全局(Full)模式(也称为数据库模式):导出数据库中所有对象,包括所有数据、数据定义和用来重建数据库的存储对象。导出备份可以导出整个数据库、指定用户或指定表。在导出期间,可以选择是否导出与表相关的数据字典的信息,如权限、索引和与其相关的约束条件。导出备份有3种类型:①完全型(CompleteExport):对所有表执行全数据库导出或仅对上次导出后修改过的表执行全数据库导出。②积累型(Cumulative):备份上一次积累型备份所改变的数据。③增量型(Incremental):备份上一次备份后改变的数据。8.1概述3.数据库备份类型(2)物理备份物理备份是拷贝数据库文件而不是其逻辑内容。Oracle支持两种不同类型的物理备份:脱机备份(也称冷备份)和联机备份(也称热备份)。①脱机备份脱机备份在数据库已经正常关闭的情况进行。②联机备份数据库可能要求24小时运行,而且随时会对数据进行操作。联机备份过程具备强有力功能的原因有两个。第一,提供了完全的时间点(point-in-time)恢复。第二,在文件系统备份时允许数据库保持打开状态。8.3导入/导出导出是数据库的逻辑备份,导入是数据库的逻辑恢复。8.3.1导出数据库的逻辑备份包括读一个数据库记录集和将记录集写入一个文件中。这些记录的读取与其物理位置无关。在Oracle中,Export实用程序就是用来完成这样的数据库备份的。若要恢复使用由一个导出生成的文件,可使用Import实用程序。表8.1列出了Export指定的运行期选项。可以在命令提示符窗口输入EXPHELP=Y调用EXP命令的帮助信息。导出有三种模式:(1)交互模式。在输入Exp命令后,根据系统的提示输入导出参数,如:用户名、口令和导出类型等参数。(2)命令行模式。命令行模式和交互模式类似,不同的是使用命令模式时,只能在模式被激活后,才能把参数和参数值传递给导出程序。(3)参数文件模式。参数文件模式的关键参数是Parfile。Parfile的对象是一个包含激活控制导出对话的参数和参数值的文件名。表8.1Export选项表8.1Export选项8.3.1导出【例8.1】以交互模式进行数据库XSCJ的表XS的导出。C:\exp/*在命令提示符下输入EXP,然后回车*/Export:Release10.2.0.1.0–Productionon星期四6月815:18:182006CopyrightC1982,2005,Oracle.Allrightsreserved.用户名:admin/*输入用户名和口令*/口令:连接到:OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0–ProductionWiththePartitioning,OLAPandDataMiningoptions输入数组提取缓冲区大小:4096/*这里使用默认值,直接回车即可*/导出文件:EXPDAT.DMPXS.DMP/*输入导出文件名称*/(1)E(完整的数据库),(2)U(用户)或(3)T(表):(2)UT/*在这里选择要导出的类型,我们选择表*/导出表数据(yes/no):yes/*使用默认设置,导出表数据*/压缩区(yes/no):yes/*使用默认设置,压缩区*/已导出ZHS16GBK字符集和AL16UTF16NCHAR字符集即将导出指定的表通过常规路径…要导出的表(T)或分区(T:P):(RETURN退出)XS/*在此输入要导出的表名称*/…正在导出表XS22行被导出要导出的表(T)或分区(T:P):(RETURN以退出)/*导出表XS完毕,直接回车即可完成导出工作。若要导出其他表,在此输入表名即可*/在没有警告的情况下成功终止导出。8.3.2导入导出数据可以通过Oracle的Import实用程序导入。可以导入全部或部分数据。如果导入一个全导出的导出转储文件,则包括表空间、数据文件和用户在内的所有数据库对象都会在导入时创建。不过,为了在数据库中指定对象的物理分配,通常需要预先创建表空间和用户。如果只从导出转储文件中导入部分数据,那么表空间、数据文件和用户必须在导入前设置好。当数据库出现错误的修改或删除操作时,利用导入操作通过导出文件恢复重要的数据。在使用应用程序前对其操作的表导出到一个概要中,这样,如果由于应用程序中的错误而删除或修改了表中数据时,可以从已经导出到概要的备份表中恢复误操作的数据。导入操作可把一个操作系统中的Oracle9数据库导出后再导入到另一个操作系统中。导入操作可以交互进行也可通过命令进行。导入操作选项同导出的基本一样,表8.2给出导入操作的参数,其他参数请参照导出参数。表8.2Import关键字表8.2Import关键字8.3.2导入【例8.2】以交互模式进行XSCJ数据库中XS表的导入。D:\imp/*在命令提示符下输入IMP,然后回车*/Import:Release10.2.0.1.0–Productionon星期四6月815:38:182006CopyrightC1982,2005Oracle.Allrightsreserved.用户名:admin/*输入用户名和口令*/口令:连接到:OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0–ProductionWiththePartitioning,OLAPandDataMiningoptions导入文件:EXPDAT.DMPXS.DMP/*输入要导入的导出转储文件名*/输入插入缓冲区大小(最小为8192)30720/*使用默认设置,然后回车*/经由常规路径导出由EXPORT:V10.02.00创建的文件已经完成ZHS16GBK字符集和AL16UTF16NCHAR字符集中的导入只列出导入文件的内容(yes/no):no8.3.2导入【例8.2】以交互模式进行XSCJ数据库中XS表的导入。由于对象已存在,忽略创建错误(yes/no):no导入权限(yes/no):yes导入表数据(yes/no):yes导入整个导出文件(yes/no):no用户名:admin/*输入用户名,导入的数据将会在此用户模式下创建*/输入表(T)或分区(T:P)名称。空列表表示用户的所有表输入表(T)或分区(T:P)名称或。如果完成:XS/*输入要创建的表的名称*/输入表(T)或分区(T:P)名称或。如果完成:正在将ADMIN的对象导入到ADMIN…正在导入表“XS”22行被导入准备启用约束条件…成功终止导入,但出现警告。8.3.2导入(2)参数模式参数模式其实就是将命令行中命令后面所带的参数写在一个参数文件中,然后再使用命令,使后面带一个调用该文件的参数。可以通过普通的文本文件编辑器来创建这个文件。为了便于标识,将该参数文件命名为.parfile的后缀。以下是一个参数文件的内容:USERID=ADMIN/MANAGERFULL=NBUFFER=10000FILE=XS.DMPTABLES=XS使用参数模式执行过程如下:D:\EXPPARFILE=XS.PARFILE8.4脱机备份脱机备份又称冷备份。冷备份是数据库文件的物理备份,需要在数据库关闭状态下进行。通常在数据库通过一个shutdownnormal或shutdownimmediate命令正常关闭后进行。当数据库关闭时,其使用的各个文件都可以进行备份。这些文件构成一个数据库关闭时的一个完整映像。冷备份要备份文件包括所有数据文件、所有控制文件、所有联机重做日志、init.ora文件和SPFILE文件(可选)。在磁盘空间容许的情况下,首先将这些文件复制到磁盘上,然后在空闲时候将其备份到磁带上。冷备份一般在SQL*Plus中进行。8.4脱机备份【例8.3