首页 > 数据库 > Oracle > 第3章。调整redo buffer cache
设置初始参数,不能动态修改
SQL> alter system set log_buffer=128000 scope=spfile;
系统已更改。
SQL> show parameter log_buffer
NAME TYPE VALUE
------------------------------------ ----------- --------
log_buffer integer 524288
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 118098724 bytes
Fixed Size 453412 bytes
Variable Size 104857600 bytes
Database Buffers 12582912 bytes
Redo Buffers 204800 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter log_buff
NAME TYPE VALUE
------------------------------------ ----------- --------
log_buffer integer 128000
其默认大小=512K或者(128K*CPU数目)
注:要把日志BUFFER设置为操作系统块容量的倍数!
二,容量影响性能:
没有一个绝对的计算方法,也没有绝对的设置多大的大小,因环境而异!
有默认的修改REDO BUFFER CACHE容量的规则:
| 应用类型 | Redo buffer | Byte |
| OLTP | LARGE | 1M-2M |
| DSS/DW/REPORT | SMALL | 50KB-250K |
| 混合型或普通型 | MEDIUM | 250K-1M |
查看其大小:
SQL> SHOW PARAMETER LOG_BUFFER;
NAME TYPE VALUE
------------------------------------ ----------- --------
log_buffer integer 128000
SQL> SELECT * FROM V$SGASTAT WHERE NAME='log_buffer';
POOL NAME BYTES
----------- -------------------------- ----------
log_buffer 194560
SQL> show sga
Total System Global Area 118098724 bytes
Fixed Size 453412 bytes
Variable Size 104857600 bytes
Database Buffers 12582912 bytes
Redo Buffers 204800 bytes
SQL>
发现大小不一致,是正常的,ORACLE保留经由参数LOG_BUFFER设置的内存。
容量超过2M的不产生额外的益处。
另一个测量REDO BUFFER大小的方式。
1,当事务量处于最大时,选择一个时间帧;
2,发布查询,获得冲做记录项的平均容量,BYTE表示
SQL> SELECT r.VALUE / e.VALUE "average size of redo entries"
2 FROM V$sysstat r, V$sysstat e
3 WHERE r.NAME = 'redo size'
4 AND e.NAME = 'redo entries';
average size of redo entries
----------------------------
217.34452
3,记录该时间帧的并发事务数:
SQL> SELECT COUNT(*) "concurrent transactions"
2 FROM V$transaction;
concurrent transactions
-----------------------11
4,计算估计的REDO LOG BUFFER的容量,要+10%的FUDGE
concurrent transactions* average size of redo entries*1.10
5,CEIL(EST.
SELECT CEIL(217.34452*11*1.1/(8*1024))*8*1024/8192||'K' FROM DUAL;
REDO LOG BUFFER SIZE/OS BLOCK SIZE)*OS BLOCK SIZE[@more@]checkpoint
log_checkpoint_timeout 多少秒空闲等待后出现CHECKPOINT
log_checkpoint_interval多少量的记录写入重做日志文件时。
SQL> show parameter log_checkpoint
NAME TYPE VALUE
------------------------------------ ----------- -------
log_checkpoint_interval integer 0
log_checkpoint_timeout integer 1800
log_checkpoints_to_alert boolean FALSE
SQL> alter system set log_checkpoint_timeout=600;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7860240/viewspace-915483/ ,如需转载,请注明出处,否则将追究法律责任。