oracle服务器要求正常运行时必须至少有两个重做日志组。每个组中的成员至少有一个重做日志文件。但是在真正的商业系统中这是不能接受的。两个重做日志组时如果一个组崩溃就必须使用清除联机重做日志组的方式恢复而不能使用删除后再创建的方法维护,clear方式的弊端是数据库的不完全恢复,造成数据的丢失这对正常运行的商业系统来说是不能接受的。每个组中只有一个组成员的话,一旦文件损坏归档进程就无法完成归档操作,数据库挂起!。因此合理的设置组的个数和每个组中成员的个数以及大小是非常重要的。
准确的绝对实际的商业数据库系统中的联机重做日志组的个数及大小是非常困难的,一般这是一个逐步调整的过程。一般报警文件和LGWR进程追踪文件是dba获取这方面信息的主要来源。如果联机重做日志组的切换过于频繁可能应该增加每个联机重做日志成员文件的大小,如果因为检查点不能及时完成或某个联机重做日志组不能被及时的归档而使得LGWR频频的等待,此时应该增加联机重做日志组的个数。
联机重做日志组的配置步骤:(配置为5个重做日志文件组,每个组中设置3个联机重做日志文件)
一、查看重做日志组信息
select group#,sequence#,members,status,bytes,archived from v$log;
获得日志组个数,本机显示为4个日志组,所以添加重做日志组
二、添加重做日志组
alter database orclyg add logfile group 5
('D:orclyg edo1REDO05A.LOG',
'D:orclyg edo2REDO05B.LOG',
'D:orclyg edo3REDO05C.LOG'
) size 30M;
分别在不同的磁盘上保存重做日志组的组成员文件,确保在一个磁盘上保存了数据库系统的所有的日志组的组成员信息,这样任何一个磁盘上都保存了联机重做日志的全部信息。避免了一个磁盘损坏后无法完全恢复的问题。
三、查看v$log字典,获得日志组信息,为了便于维护每个日志组的大小应该设置为相同的,并且每个组中的成员个数应该相同。
当前日志组是第4组即current,故最后修改当前日志组,先从第一组开始修改现有的重做日志组配置情况。
1、删除日志组1
alter database orclyg drop logfile group 1;
2、添加重做日志组1
alter database orclyg add logfile group 1
('D:orclyg edo1REDO01A.LOG',
'D:orclyg edo2REDO01B.LOG',
'D:orclyg edo3REDO01C.LOG'
) size 30M;
3、重复执行步骤1、2分别修改重做日志组2、3组的配置。
四、第4组为当前日志组,不能删除。必须通过切换当前日志组来完成配置修改
切换当前日志组:alter system switch logfile;
如果多次切换后第四组从current状态变成active状态但是始终没有变成inactive状态,此时不能删除日志组4因为active是活动状态,需要被归档进程归档。此时处理方法如下:
1、切换当前日志组为非第4组例如第1组
2、shutdown
3、startup
重启后当前日志组为关闭前的当前日志组即1组
然后执行对第四组的删除、添加操作重复步骤三(1、2)
五、重启数据库系统,重新加载重做日志组和组成员文件,从操作系统上删除原来旧的重做日志文件。
六、查看v$log,v$logfile数据字典确认原来添加的第五组的sequence#是否是和以上四组的sequence#连续。如果不连续在脱机完全备份后再恢复数据库时是无法完成恢复操作的。
如果序列号不连续那么切换当前日志组到第五组上,然后再次查看v$log判断是否连续
alter system switch logfile;
7、以上所有过程操作完成以后应该对数据库系统做一个脱机的全备份。