Oracle9i数据库备份与恢复Oracle数据库归档模式数据库可运行在两种模式下:ARCHIVELOG和NOARCHIVELOG模式。归档模式指明何时RedoLog文件可以被重用。LGWRARCHARCHIVELOGLGWRNOARCHIVELOGRedoLogFilesRedoLogFiles3NOARCHIVELOG日志文件RedoLog被循环使用。日志信息直接被覆盖。当检验点发生后,RedoLog文件可以立即被重用。一旦RedoLog文件被覆盖,介质恢复只能恢复到上次完全备份状态。只有历史日志,没有归档日志。(v$log_history)没有实际数据。如果表空间因为某些失败导致无法使用,数据库则只有到删除该表空间或整个数据库恢复之后,才能使用。数据库关闭之后,只能进行操作系统备份。每次备份时,必须备份完整的数据文件、日志文件与控制文件。数据库恢复从一个早期的完整的数据库备份中恢复数据文件、日志文件、控制文件。已经用Export工具备份的数据,用Import工具恢复。4ARCHIVELOG日志文件直到检验点发生时,RedoLog文件才会被重用,且此RedoLog文件已被ARCH进程物理备份。对于介质失败,可以使用旧的RedoLog拷贝,最近数据库的改变任何时候对例程恢复都是有效的。数据库在例程、介质失败时被保护。数据库在联机时可以备份。发生日志切换时,目标组中的日志将被写入磁盘。日志连续保存。只有在归档方式下,才会产生归档日志。需要更多的RedoLog文件,以确保联机日志文件在重用前归档。(v$archived_log)将参数LOG_ARCHIVE_START设置为TRUE启动归档模式。5ARCHIVELOG数据库恢复恢复被破坏文件的备份,并且用归档的log文件在数据库联机或脱机时使数据最新。可以使数据库恢复到失败点。可以进行数据库的不完全恢复需要连续的日志记录。日志的工作原理通过v$log查看当前日志的使用信息SQLselectgroup#,statusfromv$log;GROUP#STATUS--------------------------1INACTIVE2CURRENT3INACTIVE通过v$logfile可以找到当前正在使用的组所对应的日志文件SQLselectgroup#,memberfromv$logfile;GROUP#MEMBER-----------------------------------------------------------------3D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAC10G\REDO03.LOG2D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAC10G\REDO02.LOG1D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAC10G\REDO01.LOG强制日志切换SQLaltersystemswitchlogfile;查询v$log确认SQLselectgroup#,statusfromv$log;GROUP#STATUS--------------------------1INACTIVE2ACTIVE3CURRENT7确定数据库归档模式SQLselectdbid,name,log_modefromv$database;DBIDNAMELOG_MODE-------------------------------2242116620ORA9INOARCHIVELOGSQLarchiveloglist数据库日志模式非存档模式自动存档禁用存档终点USE_DB_RECOVERY_FILE_DEST最早的联机日志序列5当前日志序列78日志的产生过程首先产生于日志缓冲区,然后由日志写入进程LGWR写入日志文件组。在日志切换时由归档进程ARCH写入磁盘,成为归档日志。检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。在通常的情况下,该任务由LGWR执行。然而,如果检查点明显地降低系统性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘,该工作是由DBWR完成的。init.ora文件中CHECKPOINT_PROCESS参数控制CKPT进程的使能或使不能。缺省时为FALSE,即为使不能。数据库恢复的时候,只需要提供自上一个检查点以来的修改。9修改数据库归档模式SQLshutdownimmediateSQLStartupmountSQLAlterdatabasearchivelogSQLAlterdatabaseopenSQLarchiveloglistSQLaltersystemswitchlogfile日志文件管理增加日志文件组SQLalterdatabaseaddlogfilegroup4('c:\arch\log4a.log','c:\arch\log4b.log')size100m删除日志文件组(需要使用os的方法物理删除)SQLalterdatabasedroplogfilegroup4;不能删除仅有的两个日志文件组合。Oracle规定一个数据库至少保留2个日志文件组。删除活动日志组之前,需要强行日志切换。11日志文件管理增加日志文件组成员SQLalterdatabaseaddlogfilemember'c:\arch\log4a.log’togroup3;日志切换后成为正常状态。删除日志文件组成员SQLalterdatabasedroplogfilemember‘filename1’,’filename2’移动日志文件A:物理移动B:alterdatabaserenamefile‘oldfile’to‘newfile’12归档日志的配置LOG_ARCHIVE_DEST_n(N=10)用于设置归档日志镜像目录。参数文件中增加:LOG_ARCHIVE_START=TRUE;LOG_ARCHIVE_DEST=文件目录LOG_ARCHIVE_FORMAT=%S.DATLOG_ARCHIVE_DEPLEX_DEST=文件目录LOG_ARCHIVE_DEPLEX_DEST设置归档日志文件的镜像存储目录。13备份方法为了最大限度地进行恢复,应选择最合理的备份方法来防止介质失败导致的数据丢失。非归档的操作系统备份归档的操作系统备份Export工具备份注释用归档的操作系统备份的方法来恢复到介质失败后的失败点。用其它的恢复方法恢复到介质失败后的最后一次备份点。用Export工具创建一个直接的数据库备份文件,它不能与归档log文件组合使用。完全数据库脱机备份DataFilesRedoLogFilesControlFilesParameterFileOfflineStorage完全数据库脱机备份是所有文件的操作系统备份,包括数据文件、日志文件、控制文件和参数文件。完全数据库脱机备份步骤编写一个要备份的最新的数据库文件列表用Shutdown命令关闭Oracle例程用操作系统的备份工具,备份所有的数据文件、日志文件、控制文件、文本参数文件pfile、服务器参数文件spfile重启Oracle例程联机部分数据库备份(表空间)altertablespace表空间的名称beginbackup;物理备份表空间的数据文件altertablespace表空间的名称endbackup;17联机部分数据库备份(控制文件)alterdatabasebackupcontrolfileto‘目标文件’自动产生一个控制文件的备份文件,可以在数据库控制文件破坏的情况下进行数据库恢复。18卸出(Export)/装入(Import)用操作系统文件及卸出与装入工具归档和恢复Oracle数据Export/Import的使用按时间保存表定义或数据保存表定义,以便可以重新装入Oracle数据库把某台机器的数据库移到另一台机器上两个版本的Oracle软件间传输数据防止应用失败。通过执行Export,在不用全部回退数据库的情况下,允许表或表的集合被恢复重新组织表减少链接和碎片19卸出模式:表(Table):卸出指定的表用户(User):卸出属于一个用户的所有实体(如表、权限索引)全部数据库(FullDatabase):卸出数据库的所有实体备注:只有拥有EXP_FULL_DATABASE权限的用户才能卸出全部的数据库所有用户都可以在表和用户模式下卸出数据卸出数据(Export)20表模式:表定义表数据表拥有者的授权表拥有者的索引表完整性约束表触发器卸出数据(Export)21用户模式:表定义表数据表拥有者的授权表拥有者的索引表完整性约束表触发器聚簇卸出数据(Export)数据库链路序列生成器快照快照logs存储过程私有同义词视图22全部数据库模式:表定义表数据表拥有者的授权表拥有者的索引表完整性约束表触发器聚簇Profiles角色回退段定义卸出数据(Export)数据库链路序列生成器快照快照logs存储过程私有同义词视图系统审计选项系统权限表空间定义表空间限额用户定义卸出数据(Export)24联机部分数据库备份(表空间传输)检查表空间的自包含性EXECDBMS_TTS.TRANSPORT_SET_CHECK(‘SALES’,TRUE);查询数据字典TRANSPORT_SET_VIOLATIONS;如果没有返回行,则说明该表空间是自包含的,可以传输,否则不得传输。将表空间设置为只读25数据库实例启动失败,数据库的恢复方法数据库启动的时候,首先启动实例,如果实例不能启动,则数据库不能正常启动。在启动数据库实例的时候,系统需要读取参数文件以决定SGA的大小。参数文件设置错误,数据库的启动26控制文件破坏,数据的恢复方法控制文件有镜像时,数据库的恢复在参数control_files设置的多个控制文件之间是镜像关系。这3个文件必须保持同步,否则,数据库在启动时会出现错误。alterdatabasebackupcontrolfileto'c:\col\a.ctl';控制文件的镜像,可以用来直接覆盖原来的控制文件。控制文件破坏时,数据库可以启动到第一步。(启动实例)控制文件没有镜像时,需要以startupnomount方式启动数据库,然后运行createcontrolfiledatabase来创建控制文件。在创建新的控制文件之前,可以把原来的控制文件全部删除,并修改参数CONTROL_FILES27控制文件破坏,数据的恢复方法StartupnomountCreatecontrolfiledatabaseoracle9ilogfilegroup1(‘filename1’,‘filename2’)sizeXXm,group2(‘filename1’,‘filename2’)sizeXXmnoresetlogsDatafile‘filename1’,‘filename2’Maxloghistory2000Maxdatafiles2000Maxlogmembers5CharactersetZHS16GBK上述命令结束之后,系统自动在参数CONTROL_FILES所制定的目录中创建3个控制文件,它们之间是镜像关系。创建后,重新启动数据库。28日志文件破坏,数据库的恢复方法日志文件破坏时,数据库可以安装,但是不能打开。如果该组的日志文件有镜像文件,