3、调整联机日志大小

sys@CNBO1> alter system archive log all;   -->归档所有日志文件
alter system archive log all
*
ERROR at line 1:
ORA-00271: there are no logs that need archiving   -->提示没有日志需要进行归档     

sys@CNBO1> alter database drop logfile group 1;    -->由于group1 处于active状态,不可删除
alter database drop logfile group 1
*
ERROR at line 1:                                   -->下面提示crash recovery会用到
ORA-01624: log 1 needed for crash recovery of instance CNBO1 (thread 1)
ORA-00312: online log 1 thread 1: '/u02/database/CNBO1/redolog/log1aCNBO1.log'
ORA-00312: online log 1 thread 1: '/u02/database/CNBO1/redolog/log1bCNBO1.log'

sys@CNBO1> alter system switch logfile;            -->切换日志

System altered.

sys@CNBO1> select group#,archived,status from v$log; -->此时状态已发生变化

    GROUP# ARC STATUS
---------- --- ----------------
         1 NO  CURRENT
         2 YES INACTIVE
         3 YES INACTIVE
         4 YES ACTIVE

sys@CNBO1> alter database drop logfile group 2;     -->删除第2个日志组

Database altered.

sys@CNBO1> ho ls /u02/database/CNBO1/redolog/log2*  -->可以看到,物理文件并没有被删除
/u02/database/CNBO1/redolog/log2aCNBO1.log  /u02/database/CNBO1/redolog/log2bCNBO1.log            

sys@CNBO1> alter database add logfile group 2 ('/u02/database/CNBO1/redolog/log2aCNBO1.log',
  2  '/u02/database/CNBO1/redolog/log2bCNBO1.log') size 100m reuse;   -->添加日志组,并使用新的size

Database altered.

sys@CNBO1> alter database drop logfile group 3;

Database altered.

sys@CNBO1> alter database add logfile group 3 ('/u02/database/CNBO1/redolog/log3aCNBO1.log',
  2  '/u02/database/CNBO1/redolog/log3bCNBO1.log') size 100m reuse;

Database altered.

sys@CNBO1> select group#,archived,status from v$log;   -->新增的日志组为unused状态,
                                                       -->不考虑组号顺序,切换日志时会优先切换到unused日志组
    GROUP# ARC STATUS
---------- --- ----------------
         1 NO  CURRENT
         2 YES UNUSED
         3 YES UNUSED
         4 YES ACTIVE

sys@CNBO1> alter system switch logfile;

System altered.

-->切换日志的时候需要将被删除的日志切换为INACTIVE,再实施删除添加动作。
-->按照上面的方法逐个删除并添加日志文件,后面的演示省略。
-->下面是所有日志修改大小完毕之后的结果
--> Author : Robinson
--> Blog   : http://blog.csdn.net/robinson_0612

sys@CNBO1> @log_stat

    GROUP# MEMBER                                         SEQUENCE#    SIZE_MB STATUS
---------- --------------------------------------------- ---------- ---------- -------
         1 /u02/database/CNBO1/redolog/log1aCNBO1.log          4893        100 CURRENT
         1 /u02/database/CNBO1/redolog/log1bCNBO1.log          4893        100 CURRENT
         2 /u02/database/CNBO1/redolog/log2aCNBO1.log          4890        100 INACTIVE
         2 /u02/database/CNBO1/redolog/log2bCNBO1.log          4890        100 INACTIVE
         3 /u02/database/CNBO1/redolog/log3aCNBO1.log          4891        100 INACTIVE
         3 /u02/database/CNBO1/redolog/log3bCNBO1.log          4891        100 INACTIVE
         4 /u02/database/CNBO1/redolog/log4aCNBO1.log             0        100 UNUSED
         4 /u02/database/CNBO1/redolog/log4bCNBO1.log             0        100 UNUSED

8 rows selected.

  4、小结

  a、本文演示了基于归档模式下如何调整日志文件的大小,同样适用于非归档模式

  b、归档模式下确保所有日志已经归档(规模模式下通常都已被归档),再进行日志文件大小的调整

  c、注意日志文件的几种状态的变化,active与current状态时是不能够被删除的

  d、active与current状态时,日志中存在着大量的活动事务,在crash recovery时会根据当时状态前滚或回滚

  e、切换日志(alter system switch logfile)是的日志文件状态发生变化,其原因是触发了checkpoint进程