9.2 重做日志文件的管理
在创建数据库时,重做日志组与日志成员的数目已经确定。在数据库的运行过程中,可以根据需要增加重做日志组和日志成员的数目。重做日志组的最大允许数目由永久参数MAXLOGFILES限定,每个日志组最大允许的日志成员数目由永久参数MAXLOGMEMBERS限定。如果重做日志组或日志成员的数目已经达到规定的极限,就需要重新创建控制文件,增加永久参数的值。在Oracle 11g的数据库中,这两个永久性参数是可以突破的。重做日志组和日志成员的数目也可以根据需要适当地减少。如果日志成员的存储位置不合适,还可以改变它们的存储位置和名称。
9.2.1 增加重做日志组
在一个小型应用系统中,由于用户的事务较少,两个重做日志组就可能足够使用。对于大型的应用系统,用户的事务非常繁忙,需要更多的重做日志组来记录重做日志。如果日志组太少,可能会发生这样的情况:LGWR进程在向一个重做日志组中写入重做日志时,发现这个重做日志组尚未归档,或者归档尚未结束,于是LGWR进程不得不等待归档的结束,整个数据库服务器的运行也将暂时停止。
出现上述情况的原因是重做日志组太少,数据库管理员应该增加重做日志组的数目,以免因为重做日志组太少而影响数据库的性能。
增加重做日志组的命令是ALTER DATABASE,在这条命令中使用ADD LOGFILE子句指定重做日志组的组号以及该日志组中每个日志成员的名称及大小。例如:
SQL>ALTER DATABASE ADD LOGFILE GROUP 4
('/home/oracle/orcl/redo41.log',
'/home/oracle/orcl/redo42.log')SIZE 200M;
重做日志组的组号应该为现有的最大组号加1。当然,也可以不指定组号,这时数据库服务器将按照这个原则自动分配组号。例如:
SQL>ALTER DATABASE ADD LOGFILE
('/home/oracle/orcl/redo41.log',
'/home/oracle/orcl/redo42.log')SIZE 200M;