首页 > 技术文章 > oracle增加logfile大小(转)

freemanabc 原文

有时候由于logfile太小,导致日志切换频繁,引起log file switch ...之类的等待事件,这个时候需要增加 logfile的大小。

增加logfile 大小的步骤:

一:查看初始化参数

SQL> show parameter db_create_

NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ db_create_file_dest                  string      C:/oracle/product/10.2.0/oradata db_create_online_log_dest_1          string db_create_online_log_dest_2          string db_create_online_log_dest_3          string db_create_online_log_dest_4          string db_create_online_log_dest_5          string

为什么要这么做呢?因为设置了OMF的这些参数,就可以在创建logfile 的时候让ORACLE去命名logfile。

我启用了db_create_file_dest这个参数,那么oracle就会默认的在这个路径下创建logfile 以及在 db_recory_file_dest中创建一个logfile.

二:查看当前日志的情况

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------          4          1         60  104857600          2 YES      INACTIVE               1746560 12/21/2009          5          1         61  104857600          2 NO       CURRENT                1746623 12/21/2009

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                                                           IS_RECOVERY_DEST_FILE ---------- ------- ------- -------------------------------------------------------------------------------- ---------------------          4         ONLINE  C:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROBINSON/ONLINELOG/LOG1A.LOG        NO          4         ONLINE  C:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROBINSON/ONLINELOG/LOG1B.LOG        NO          5         ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/ONLINELOG/LOG2A.LOG                    NO          5         ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/ONLINELOG/LOG2B.LOG                    NO

三:创建新的日志文件组

SQL> alter database add logfile group 6 size 150m;

Database altered

SQL> alter database add logfile group 7 size 150m;

Database altered

四:切换日志文件到新创建的日志文件组

SQL> alter system switch logfile ;

System altered

SQL> alter system switch logfile ;

System altered

五:查看当前日志文件信息,如果status为inactive,ARCHIVED为YES,那么drop 老的日志文件组

QL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------          4          1         60  104857600          2 YES      INACTIVE               1746560 12/21/2009          5          1         61  104857600          2 YES      ACTIVE                 1746623 12/21/2009          6          1         62  157286400          2 YES      ACTIVE                 1748762 12/21/2009          7          1         63  157286400          2 NO       CURRENT                1748764 12/21/2009 SQL> alter database drop logfile group 4;

Database altered

SQL> alter database drop logfile group 5;

Database altered

六:重新创建日志文件组

SQL> alter database add logfile group 1 size 150m;

Database altered

SQL> alter database add logfile group 2 size 150m;

Database altered 七:再次切换日志文件 SQL> alter system switch logfile;

System altered

SQL> alter system switch logfile;

System altered

八:查看日志文件信息,如果status为inactive,archived 为yes,那么drop 老的日志文件组

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------          1          1         64  157286400          2 YES      ACTIVE                 1749065 12/21/2009          2          1         65  157286400          2 NO       CURRENT                1749067 12/21/2009          6          1         62  157286400          2 YES      INACTIVE               1748762 12/21/2009          7          1         63  157286400          2 YES      ACTIVE                 1748764 12/21/2009

SQL> alter system flush buffer_cache;  ---此处是为了尽快让status变成inactive.

System altered

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------          1          1         64  157286400          2 YES      INACTIVE               1749065 12/21/2009          2          1         65  157286400          2 NO       CURRENT                1749067 12/21/2009          6          1         62  157286400          2 YES      INACTIVE               1748762 12/21/2009          7          1         63  157286400          2 YES      INACTIVE               1748764 12/21/2009

八:删除中间日志文件组

SQL> alter database drop logfile  group 6;

Database altered

SQL> alter database drop logfile  group 7;

Database altered

推荐阅读