数据库中的原有配置3个redolog文件,由于切换频繁,想扩大大小,操作简介

来源:互联网 发布:nginx asp.net mvc 编辑:程序博客网 时间:2024/06/07 15:01

假设现有三个日志组,每个组内有一个成员,每个成员的大小为1MB,现在想把此三个日志组的成员大小都改为10MB 

1、创建2个新的日志组
alter database add logfile group 4 ('D:/ORACLE/ORADATA/ORADB/REDO04_1.LOG') size 1024k;
alter database add logfile group 5 ('D:/ORACLE/ORADATA/ORADB/REDO05_1.LOG') size 1024k;

2、切换当前日志到新的日志组
alter system switch logfile;
alter system switch logfile;

3、删除旧的日志组
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;

4、操作系统下删除原日志组1、2、3中的文件

5、重建日志组1、2、3
alter database add logfile group 1 ('D:/ORACLE/ORADATA/ORADB/REDO01_1.LOG') size 10M;
alter database add logfile group 2 ('D:/ORACLE/ORADATA/ORADB/REDO02_1.LOG') size 10M;
alter database add logfile group 3 ('D:/ORACLE/ORADATA/ORADB/REDO03_1.LOG') size 10M;

6、切换日志组
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;

7、删除中间过渡用的日志组4、5
alter database drop logfile group 4;
alter database drop logfile group 5;

8、到操作系统下删除原日志组4、5中的文件

9、备份当前的最新的控制文件
SQL>; connect internal
SQL>; alter database backup controlfile to trace resetlogs

(注意:如果为安全考虑每个group可以多加几个文件)

 

引用:跟redo logfile有关的其它数据库参数    
    
    1、log_buffer
    
       log_buffer是ORACLE SGA的一部分, 所有DML命令修改的数据块先放在log_buffer里, 如果满了或者
       到       了check_point时候通过lgwr后台进程写到redo logfile里去。它不能设得太大,这样在意
       外发生时会丢失很多改变过的数据。它最好不要大于512K或者128K*CPU个数。
       
       我们可以用下面的SQL语句检测log_buffer使用情况:
       
SVRMGRL>; select rbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value||'%' "radio"
 from v$sysstat rbar,v$sysstat re
 where rbar.name='redo buffer allocation retries'
 and re.name='redo entries';

       这个比率小于1%才好,否则增加log_buffer的大小
       
    2、log_checkpoint_interval
 
       Oracle8.1 版本后log_checkpoint_interval指的是两次checkpoint之间操作系统数据块的个数。
       
       checkpoint时Oracle把内存里修改过的数据块用DBWR写到物理文件,用LGWR写到日志和控制文件。
              
       一般UNIX操作系统的数据块为 512 bytes。
       
       从性能优化来说 log_checkpoint_interval = redo logfile size bytes / 512 bytes
        
       
    3、log_checkpoint_timeout
    
     Oracle8.1 版本后log_checkpoint_timeout指的是两次checkpoint之间时间秒数。
     Oracle建议不用这个参数来控制,因为事务(transaction)大小不是按时间等量分布的。
log_checkpoint_timeout = 0 
log_checkpoint_timeout = 900 


 

原创粉丝点击