由于oracle没用提供修改log file大小的命令,所以只能以删除后再重新创建的方法达到修改大小的目的。又由于oracle要求最少有两组日志文件在使用,所以不能直接删除原日志组,必须要创建中间过度的redo log日志组。
以下是修改日志组的步骤:
- 创建新的日志组4,5
alter database add logfile group 4 (‘/U01/app/oracle/oradata/test/redo04.log’) size 200M;
alter database add logfile group 5 (‘/U01/app/oracle/oradata/test/redo05.log’) size 200M; - 切换当前日志到新的日志组4,5(使日志组1,2的状态非current或active)
alter system switch logfile; --切换日志组
alter system checkpoint; -- - 删除日志组1,2,3
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3; - 操作系统下删除日志组1,2,3文件
- 重建日志组1,2,3
alter database add logfile group 1 (‘/U01/app/oracle/oradata/test/redo01.log’) size 200M;
alter database add logfile group 2 (‘/U01/app/oracle/oradata/test/redo02.log’) size 200M;
alter database add logfile group 3 (‘/U01/app/oracle/oradata/test/redo03.log’) size 200M; - 切换当前日志到新的日志组1,2,3(使日志组4,5的状态非current或active)
alter system switch logfile;
alter system checkpoint; - 删除过渡的日志组4,5
alter database drop logfile group 4;
alter database drop logfile group 5; - 操作系统下删除日志组4,5文件
- 备份当前的最新的控制文件
alter database backup controlfile to trace resetlogs; - 查看当前日志组
select group#, members, bytes/1024/1024 mb,status, archived from v$log;
注意:
删除前必须遵守如下原则,每个实例必须至少有两个日志组;当一个组处于ACTIVE或者CURRENT的状态时不可删除(ORA-01624: log 1 needed for crash recovery of instance test (thread 1)
ORA-00312: online log 1 thread 1: '/U01/app/oracle/oradata/test/redo01.log');删除日志组的操作只对数据库进行更改,操作系统的文件尚未删除;当删除时适用DROP LOGFILE GROUP N语句时,此时GROUP N内的所有成员都将被删除。
alter database drop logfile group n;
alter database drop logfile member '/location_dust/redo0n_n.log';
删除日志成员的原则:当你删除一个是该组中最后一个成员的时候,你不能删除此成员(ORA-00361: cannot remove last log member /U01/app/oracle/oradata/test/redo03.log for group 3);当组的状态处于current或active状态时,不能删除组成员;在归档模式下,必须得归档之后才能删除;删除日志组成员的操作只对数据库进行更改,操作系统的文件尚未删除。