|
请教各位:如何扩大重做日志(redolog)文件的大小
数据库中的原有配置3个redolog文件,大小1M,由于切换频繁,想扩大大小,如何操作?
txfy 回复于:2003-11-11 12:10:13
假设现有三个日志组,每个组内有一个成员,每个成员的大小为1MB,现在想把此三个日志组的成员大小都改为10MB
1、创建2个新的日志组
alterdatabaseaddlogfilegroup4('D:\ORACLE\ORADATA\ORADB\REDO04_1.LOG')size1024k;
alterdatabaseaddlogfilegroup5('D:\ORACLE\ORADATA\ORADB\REDO05_1.LOG')size1024k;
2、切换当前日志到新的日志组
altersystemswitchlogfile;
altersystemswitchlogfile;
3、删除旧的日志组
alterdatabasedroplogfilegroup1;
alterdatabasedroplogfilegroup2;
alterdatabasedroplogfilegroup3;
4、操作系统下删除原日志组1、2、3中的文件
5、重建日志组1、2、3
alterdatabaseaddlogfilegroup1('D:\ORACLE\ORADATA\ORADB\REDO01_1.LOG')size10M;
alterdatabaseaddlogfilegroup2('D:\ORACLE\ORADATA\ORADB\REDO02_1.LOG')size10M;
alterdatabaseaddlogfilegroup3('D:\ORACLE\ORADATA\ORADB\REDO03_1.LOG')size10M;
6、切换日志组
altersystemswitchlogfile;
altersystemswitchlogfile;
altersystemswitchlogfile;
7、删除中间过渡用的日志组4、5
alterdatabasedroplogfilegroup4;
alterdatabasedroplogfilegroup5;
8、到操作系统下删除原日志组4、5中的文件
9、备份当前的最新的控制文件
SQL>connectinternal
SQL>alterdatabasebackupcontrolfiletotraceresetlogs
(注意:如果为安全考虑每个group可以多加几个文件)
yt_zyp 回复于:2003-11-11 15:23:13
我已经试过了,好用,多谢txfy大虾
还有个问题:增大了redolog文件,其他的数据库参数是否也需要相应改动?还请赐教!多谢!
txfy 回复于:2003-11-11 15:29:23
一般不用修改什么相关参数,注意相关的logbuffer1-3m就可以了!
yt_zyp 回复于:2003-11-11 16:41:16
非常感谢txfy的帮忙
再请麻烦说的详细一些,是指的init.ora文件中的LOG_BUFFER参数吗,需要跟日志文件的大小如何配合?要能举个例子就更好了
因为我是远程维护用户的数据库,希望一次搞定,不然就要挨骂了:(
txfy 回复于:2003-11-11 17:23:10
对,这个参数有些地方建议加大,但是经过向cp,rollingpig等老大的讨教,都认为这个参数不应过大,1-3m就可以了,因为这个可能是跟redolog联系比较紧密地,所以我提出这个参数,你看一下就可以了,应该默认的就不会很大!
yt_zyp 回复于:2003-11-12 15:19:25
多谢斑竹的帮助
我从网上找到一篇有关redologfile的文章,与大家共享,转帖自[url]http://fengyu.china.com/[/url]
[quote:000b708b8e]跟redologfile有关的其它数据库参数
1、log_buffer
log_buffer是ORACLESGA的一部分,所有DML命令修改的数据块先放在log_buffer里,如果满了或者
到了check_point时候通过lgwr后台进程写到redologfile里去。它不能设得太大,这样在意
外发生时会丢失很多改变过的数据。它最好不要大于512K或者128K*CPU个数。
我们可以用下面的SQL语句检测log_buffer使用情况:
SVRMGRL>selectrbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value||'%'"radio"
fromv$sysstatrbar,v$sysstatre
whererbar.name='redobufferallocationretries'
andre.name='redoentries';
这个比率小于1%才好,否则增加log_buffer的大小
2、log_checkpoint_interval
Oracle8.1版本后log_checkpoint_interval指的是两次checkpoint之间操作系统数据块的个数。
checkpoint时Oracle把内存里修改过的数据块用DBWR写到物理文件,用LGWR写到日志和控制文件。
一般UNIX操作系统的数据块为512bytes。
从性能优化来说log_checkpoint_interval=redologfilesizebytes/512bytes
3、log_checkpoint_timeout
Oracle8.1版本后log_checkpoint_timeout指的是两次checkpoint之间时间秒数。
Oracle建议不用这个参数来控制,因为事务(transaction)大小不是按时间等量分布的。
log_checkpoint_timeout=0
log_checkpoint_timeout=900[/quote:000b708b8e]
查看上一页
返回分类首页 返回96PC首页
查看下一页 |