oracle重做日志(redolog)文件大小的更改

假设现有三个日志组,每个组内有一个成员,每个成员的大小为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中的文件

注意:每一步删除drop操作,都需要手工删除os中的实体文件。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值