分类: Oracle
2008-05-21 13:22:19
来源: |
|
二、重做日志文件 重做日志文件记录对数据库的所有修改信息。它是三类文件中最复杂的一类文件,也是保证数据库安全与数据库备份与恢复有直接关系的文件。 1.日志文件组与日志成员 在每一个oracle数据库中,至少有两个重做日志文件组。每组有一个个或多个重做日志文件,即日志成员。同一组中的成员是镜像关系,它们存储的内容是一模一样的。Oracle在写日志时,以一个日志组为逻辑单位写入,只在将日志都写入日志组中的每个成员文件中后,写日志才完成。 2.日志工作原理 Oracle有多个日志文件组,当一个日志文件组中所有的成员所有的成员同时被写满数据时,系统自动转换到下一个日志文件组,这个转换过程称为日志切换。 当日志切换后,会给前一个日志组编一个号,用于归档日志的编号,这个编号称为日志序列号。此编号由1开始,每切换一次,序列号自动加1,最大值受参数MAXLOGHISTORY限制,该参数的最大值为65534。 当oracle把最后一个日志组写满了以后,自动转向第一个日志组,这时,再向第一个日志组写日志的时候,如果数据库运行在非归档模式下,这个日志组中的原有日志信息就会被覆盖。 使用以下语句查询日志文件信息: sql>select * from v $log 相关字段说明如下: GROUP#:日志文件组号 THREAD#:日志文件线程号,一般为1,双机容时为2 SEQUENCE#:日志序列号 BYTES:日志文件大小 MEMBERS:该组的日志成员个数 ARC:该组日志信息是否已经完成归档 STATUS:该组状态(CURRENT:表示当前正在使用的组;NACTIVE:表示非活动组;ACTIVE:表示归档未完成) FIRST_CHANGE#:系统改变号SCN,也叫检查点号 FIRST_TIME:系统改变时间 DBA可以使用下列命令进行强制日志切换 sql>alter system switch logfile 3.NOARCHIVELOG/ARCHIVELOG NOARCHIVELOG是非归档模式,如果数据库运行在这种模式下,当日志切换时,新切换到的日志组中的日志信息会被覆盖。ARCHIVELOG:归档模式,如果数据库运行在这种模式下,日志会被归档存储,产生归档日志,且在未归档之前,日志不允许被覆盖写入。 要确认数据库的归档方式,可以查询数据字典v $database: sql>select log_mode from v $database 要了解归档日志的信息,可以查询数据字典v $archived_log。 要将数据库改为归档模式: a.alter database archivelog b.设置初始化参数LOG_ARCHIVE_START=TRUE c.设置归档文件目标存储路径 LOG_ARCHIVE_DEST=C:ORAARCHIVE d.设置归档文件命名格式参数 LOG_ARCHIVE_FORMAT="ORCK%T%S.ARC"。这个格式中的%S表示日志序列号,自动左边补零;%s表示日志序列号,自动左边不补零;%T表示日志线程号,左边补零;%t表示日志线程号不补零。 e.重新启动数据库 |