ora 12500 oracle 9i processes,Oracle9i 性能调整与优化

第五课   调整缓冲区高速缓存(Buffer Cache)的性能

Buffer cache由数据块组成。

1. Buffer cache的工作原理

LRU列表:MRU  ………………。 LRU.(全表扫描FTS放在LRU端。)

缓冲区块的状态:Free、Pinned、Clean、Dirty.

Dirty List或Write List(写列表)。

数据库写进程DBW0将缓冲区高速缓存中的数据写到数据文件中。

2.        测量Buffer cache的性能

测量Buffer cache的命中率:

SQL> select 1-((physical.value ? direct.value ? lobs.value)/logical.value) “Buffer Cache Hit Ratio” from V$SYSSTAT physical, V$SYSSTAT direct,

V$SYSSTAT lobs, V$SYSSTAT logical where physical.name = ‘physical reads’

And direct.name = ‘physical reads direct’ and

lobs.name = ‘physical reads direct (lob)’

And logical.name = ‘session logical reads’;

“Buffer Cache Hit Ratio”的值要 > 90%.

使用STATSPACK来监视Buffer cache.

使用REPORT.TXT来监视Buffer cache.

非命中率指标:Free Buffer Inspected、Free Buffer Waits、Buffer Busy Waits.(V$sysstat)

使用Performance Manager(数据库例程)来监视Buffer Cache.

3. 提高缓冲区高速缓存性能的方法

加大Buffer Cache的大小:init.ora参数DB_CACHE_SIZE(动态参数)。

使用Buffer Cache Advisory功能决定Buffer Cache的大小:

首先将init.ora参数DB_CACHE_ADVICE设成ON,然后查询V$DB_CACHE_ADVICE.

使用多个缓冲区池:

Keep Pool: DB_KEEP_CACHE_SIZE

Recycle Pool:DB_RECYCLE_CACHE_SIZE

Default Pool: DB_CACHE_SIZE

在内存中缓存表: 表的CACHE选项,对优化小表的全表扫描。

正确创建索引。

4. 调整Large Pool和JAVA POOL

Large Pool用于共享服务器、RMAN、并行查询、DBWR的从属进程。

Large Pool的大小通过init.ora参数Large_pool_size设置。默认为8M.

从V$sgastat中监视free memory的值:

SQL>SELECT name,bytes FROM V$sgastat WHERE pool = ‘large pool’;

JAVA_POOL池的默认大小为32M.对于大型Java应用程序,JAVA_POOL池的大小应大于50M.

init.ora参数java_pool_size

从V$sgastat中监视free memory的值。

SQL>SELECT name,bytes FROM V$sgastat WHERE pool = ‘java pool’;

第六课   调整重做有关的性能

Oracle重做有关的组件包括:Redo Log Buffer、Online Redo Log、LGWR、Archive Log、Checkpoint、Arch0.

1. 监视Redo Log Buffer的性能

Redo Log Buffer不采用LRU(Least Recently Used)算法管理。

当下列事件发生时,Redo Log Buffer的内容存盘:

Commit时、每3秒、空间使用1/3、达到1M、检查点。

如果写入Redo Log Buffer的速度超过LGWR存盘的速度,就会因等待而降低性能。

监视Redo Log Buffer的重试率(<1%)。

Select retries.value/entries.value “Redo Log Buffer Retry Ratio”

From V$sysstat retries, V$sysstat entries

Where retries.name =  ‘redo buffer allocation retries’

And entries.name =  ‘redo entries’;

“Redo Log Buffer Retry Ratio”的值要 < 1%.

Select name,value from V$sysstat where name=‘redo log space requests’;

如果该值大,需要增加Redo Log Buffer.

2. 提高Redo Log Buffer的性能

增加Redo Log Buffer的大小:init.ora参数log_buffer.

减小重做日志的生成量。(如果设置表的NOLOGGING属性,下列操作不记录在Online Redo Log中:用SQL* Loader的直接路径加载。

NOLOGGING属性还可用于下列SQL语句:CREATE TABLE AS SELECT、CREATE INDEX、

ALTER INDEX REBUILD、CREATE TABELSPACE)。

3. 调整检查点进程的性能

测量检查点进程的性能:没有完成的检查点进程的次数。

select * from V$system_event;

两个事件:checkpoint completed、log file switch(checkpoint incomplete)。

Select * from V$sysstat.

background checkpoints started和background checkpoints completed.

使用Alert日志来记录检查点进程:init.ora参数log_checkpoint_to_alert.

使用Performance Manager来测量检查点进程的性能:I/O中的平均灰数据队列长度(如果为0,说明检查点太频繁)。

建议调整online redo log的大小,使检查点进程每20-30分钟执行一次。

4. 调整联机重做日志文件

使用V$system_event来监视联机重做日志文件的性能:

log file parallel write、log file switch completed.

调整联机重做日志文件的方法:与数据文件、控制文件、归档日志文件分开,放在原始设备上。

5. 调整归档性能

检查归档进程的性能:通过V$system_event中的log file switch(archiving needed)事件。

检查每个归档进程的状态:V$archive_processes.

创建多个归档进程:init.ora参数LOG_ARCHIVE_MAX_PROCESSES(默认为2)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值