Chinaunix首页 | 论坛 | 博客
  • 博客访问: 245329
  • 博文数量: 50
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 533
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-28 21:56
个人简介

活着,寻找生存。

文章分类

全部博文(50)

文章存档

2017年(1)

2016年(20)

2015年(29)

我的朋友

分类: Oracle

2015-11-21 15:26:42

   Oracle 在线修改Redo Log 大小

  在新部署修部署一套单实例DB中,Redo Log 默认Size为50m.这对于即将投入到生产使用的DB来说显然小了些,所以我们需要对其进行Online Redo Log Resize。

查看当前DB Redo log Size:
 

SQL> col status for a15                                                                                                                                                  
SQL> select * from v$log;                                                                                                                                                
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARCHIV STATUS          FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- ------ --------------- ------------- ------------------- ------------ -------------------
         1          1         48  524288000        512          1 NO     CURRENT               5922462 2015-11-19 11:00:49   2.8147E+14
         2          1         47  524288000        512          1 YES    INACTIVE              5586193 2015-11-16 22:55:17      5922462 2015-11-19 11:00:49
         3          1         46  524288000        512          1 YES    INACTIVE              5239552 2015-11-14 07:58:39      5586193 2015-11-16 22:55:17

---这里因为之前调整了,所以你看到是500m。

SQL> col member for a50                                                                                                                                                  
SQL> select * from v$logfile;                                                                                                                                            
    GROUP# STATUS          TYPE           MEMBER                                   IS_REC
---------- --------------- -------------- ---------------------------------------- ------
         3                 ONLINE         /opt/oracle/oradata/ora/redo03.log  NO
         2                 ONLINE         /opt/oracle/oradata/ora/redo02.log  NO
         1                 ONLINE         /opt/oracle/oradata/ora/redo01.log  NO

在进行redo log size 调整之前我们先了解下v$log视图中的status 字段的几种状态:
STATUS VARCHAR2(16) Log status:
  • UNUSED - Online redo log has never been written to. This is the state of a redo log that was just added, or just after a RESETLOGS, when it is not the current redo log.

  • CURRENT - Current redo log. This implies that the redo log is active. The redo log could be open or closed.

  • ACTIVE - Log is active but is not the current log. It is needed for crash recovery. It may be in use for block recovery. It may or may not be archived.

  • CLEARING - Log is being re-created as an empty log after an ALTER DATABASE CLEAR LOGFILEstatement. After the log is cleared, the status changes to UNUSED.

  • CLEARING_CURRENT - Current log is being cleared of a closed thread. The log can stay in this status if there is some failure in the switch such as an I/O error writing the new log header.

  • INACTIVE - Log is no longer needed for instance recovery. It may be in use for media recovery. It might or might not be archived.


由于数据库的限制,一个数据库redo log必须要有两组(group),这里我们只有三组redo log。

group 2和group 3的状态为INACTIVE,所以我们先对这两组进行调整。
 
删除group 2
 

SQL> alter database drop logfile group 2;                                                                                                                                                                                                                                                                                    
Database altered.

在操作系统层面通过rm -rf 删除redo02.log文件

SQL> alter database add logfile group 2 '/opt/oracle/oradata/ora/redo02.log' size 512m;                                                                                                                                                                                                                                 
Database altered.


删除 group 3:
 

SQL> alter database drop logfile group 3;                                                                                                                                                                                                                                                                                    
Database altered.

在操作系统层面通过rm -rf 删除redo03.log文件

SQL> alter database add logfile group 3 '/opt/oracle/oradata/ora/redo03.log' size 512m;                                                                                                                                                                                                                                 
Database altered.


查看group2,group3 redo log组是否修改生效:
 

SQL> select * from v$log;                                                                                                                                                
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARCHIV STATUS          FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- ------ --------------- ------------- ------------------- ------------ -------------------
         1          1         48  524288000        512          1 NO     CURRENT               5922462 2015-11-19 11:00:49   2.8147E+14
         2          1          0  536870912        512          1 YES    UNUSED                      0                                0
         3          1          0  536870912        512          1 YES    UNUSED                      0                                0


我们可以看到 group 2和group 3已经从500m修改为了512m。接着我们调整group 1的大小,我们可以group 1的状态为CURRENT,那么我们可以通过切换日志使其状态切换到INACTIVE,使用“alter system switch logfile”命令进行切换,可能需要多次切换才能切换到INACTIVE:
 

SQL> alter system switch logfile;                                                                                                                                                                                                                                                                                                              
System altered.

SQL> alter system switch logfile;                                                                                                                                        
                                                                                                                                                                         
System altered.

SQL> alter system switch logfile;                                                                                                                                        
                                                                                                                                                                         
System altered.

SQL> alter system switch logfile;                                                                                                                                        
                                                                                                                                                                         
System altered.

SQL> select * from v$log;                                                                                                                                                
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARCHIV STATUS          FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- ------ --------------- ------------- ------------------- ------------ -------------------
         1          1         51  524288000        512          1 YES    INACTIVE              6215824 2015-11-21 15:18:14      6215827 2015-11-21 15:18:15
         2          1         52  536870912        512          1 NO     CURRENT               6215827 2015-11-21 15:18:15   2.8147E+14
         3          1         50  536870912        512          1 YES    INACTIVE              6215821 2015-11-21 15:18:12      6215824 2015-11-21 15:18:14


进行了四次切换后group 1的状态变成了INACTIVE。

删除group 1:

SQL> alter database drop logfile group 1;                                                                                                                                                                                                                                                                                                    
Database altered.

在操作系统层面通过rm -rf 删除redo01.log文件

SQL> alter database add logfile group 1 '/opt/oracle/oradata/ora/redo01.log' size 512m;                                                                                                                                                                                                                                             
Database altered.

查看调整后redo log 大小:
 

SQL> select * from v$log;                                                                                                                                                

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARCHIV STATUS          FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- ------ --------------- ------------- ------------------- ------------ -------------------
         1          1          0  536870912        512          1 YES    UNUSED                      0                                0
         2          1         52  536870912        512          1 NO     CURRENT               6215827 2015-11-21 15:18:15   2.8147E+14
         3          1         50  536870912        512          1 YES    INACTIVE              6215821 2015-11-21 15:18:12      6215824 2015-11-21 15:18:14


OK,已经将redo log size 从500m调整到512m。


阅读(1607) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~