首页 > 代码库 > Oracle 维护 online redo log

Oracle 维护 online redo log

维护在线redo log 

Oracle Database - Enterprise Edition - Version 11.2.0.4 to 11.2.0.4  
 
 
1. 首先查看当前redo log的大小:             
[oracle@oracle ~]$ sqlplus / as sysdba
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

   SQL> select group#, bytes, status from v$log; 
   

    GROUP#      BYTES STATUS
---------- ---------- ----------------
         1   52428800 CURRENT
         2   52428800 INACTIVE
         3   52428800 INACTIVE                        

    当前redo log 是50M,现在扩展到100M                               
                                  

2. 查看所有的在线日子组成员                                         
                                                    
   SQL> select group#, member from v$logfile;                                    
                                                       
    GROUP# MEMBER
---------- --------------------------------------------------
         3 /oracle/oradata/orcl/redo03.log
         2 /oracle/oradata/orcl/redo02.log
         1 /oracle/oradata/orcl/redo01.log
                      
                                                                
3. 新增加group# 4/5/6大小为100M的redolog
                           
                            
   SQL> alter database add logfile group 4                              
           ‘/oracle/oradata/orcl/log4PROD.dbf‘ size 100M;                                 
                                 
   SQL> alter database add logfile group 5                                  
           ‘/oracle/oradata/orcl/log5PROD.dbf‘ size 100M;     
        
   SQL> alter database add logfile group 6          
           ‘/oracle/oradata/orcl/log6PROD.dbf‘ size 100M;   
        

4. 查询当前所有redo log的状态:                                   
                                                                         
   SQL> select group#, status from v$log;                                       

      GROUP# STATUS
---------- ----------------
         1 CURRENT
         2 INACTIVE
         3 INACTIVE
         4 UNUSED
         5 UNUSED
         6 UNUSED      
      
  
 当前redolog状态,group 1是当前的在线日志组,group2、3为inactive,我们要删除的是50M的group 1、2、3
   group 1 是当前在线日志组,不可以删除,目前可以删除inactive的group 2、3
   
   SQL> alter database drop logfile group 2;  
      Database altered.   
                            
   SQL> alter database drop logfile group 3;
      Database altered.
      
5. 多次switch log切换日志,直至group 1为inactive状态,:                                  

    SQL> alter system checkpoint; 

    System altered.

 
    SQL> alter system switch logfile;

    System altered.


   SQL> select group#, status from v$log;                                       

      GROUP# STATUS
---------- ----------------
         1 INACTIVE
         4 UNUSED
         5 UNUSED
         6 UNUSED 
         
  SQL> alter database drop logfile group 1;  
      Database altered.          

注:如果checkpoint,还是不能切换到inactive,那就做几次全局checkpoint

    SQL> alter system checkpoint global;

    System altered
                                                             


6.再次查看在线日志所有状态:   
                                                         
                                                                
SQL> select group#, bytes, status from v$log;

    GROUP#      BYTES STATUS
---------- ---------- ----------------
         4  104857600 INACTIVE
         5  104857600 CURRENT
         6  104857600 UNUSED
 
   
9.  操作系统层面删除旧的redolog
    
[oracle@oracle orcl]$rm /oracle/oradata/orcl/redo01.log
[oracle@oracle orcl]$rm /oracle/oradata/orcl/redo02.log  
[oracle@oracle orcl]$rm /oracle/oradata/orcl/redo03.log                                                
                                                  

10.删除redo log 最好做一次数据库的备份,维护reodlog的时候最好在业务低峰的时候操作


本文出自 “O Record” 博客,请务必保留此出处http://evils798.blog.51cto.com/8983296/1420916