oracle修改日志文件,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值