优化实例内存

来源:互联网 发布:神机妙算软件介绍 编辑:程序博客网 时间:2024/04/30 04:28
优化实例内存 ---oracle database 11g 性能优化攻略
1.使用自动内存管理
oracle11g 新增了自动内存管理的特性
通过设置如下两个参数来实现
memory_max_target
memory_target 
2.管理多个缓冲池
为了确保经常使用的数据段缓存在缓冲池中,而不会被回收,可以使用多个缓冲池,keep池和recycle
如果数据库里包含大量的被频繁访问的表,那么设置keep池让频繁访问的这些表存储在keep池中,这样做可以将频繁访问的表一直保留换冲池中而不被交换出去
如果数据库每天要访问一两次非常大的对象,避免这些大对象占用过多的缓冲区,把其他正常访问的对象挤出缓冲池,可以设置recycle池来存放这些大对象
通过设置如下参数来使用keep池和recycle池
db_keep_cache_size
db_recycle_cache_size
为数据段指定默认的缓冲池
alter table table_name storage(buffer_pool=keep)
alter table table_name storage(buffer_pool=recycle)
3.设置内存的最小值
使用自动内存管理,建议设置sga和pga内存的最小值,在内存自动分配时,分配内存最小值就是设置的最小值
4.监控内存调整操作
监控内存的调整操作来合理分配内存通过视图v$memory_target_advice
查看视图v$memory_resize_ops视图来观察自动内存管理的分配操作,来评估内存的抖动情况
5.优化内存使用
6.调优PGA内存分配
设置合理PGA来减少磁盘排序,通过查询视图或者awr报告来设置合理的PGA值
v$pgastat,v$sql_workarea_histogram
7.配置服务器查询缓存
服务器结果集缓存为经常执行的sql查询和pl/sql函数的结果提供一种非常好的方法
相关参数
result_cache_max_size 服务器结果集缓存设置分配内存
result_cache_max_result 一个结果缓存能够使用的最大内存百分比,默认为服务器结果集缓存大小的15%
result_cache_remote_expiration 默认情况任何包含远程对象的结果都不会被缓存
8.管理结果集缓存
可以通过dbms_result_cache包来监控和管理服务器结果缓存
9.缓存sql查询结果
设置result_cache_mode为force强制所有sql查询结果都被数据库缓存起来,oracle推荐设置为manual,可以通过提示来启用特定查询结果集缓存/*+ RESULT_CACHE */
通过表注释启用结果集查询
alter table tablename result_cache(mode force)
可以通过提示/*+ NO_RESULT_CACHE */关闭查询结果缓存
10.缓存客户端结果集
11.缓存PL/SQL函数结果
12.配置oracle数据库的智能缓存
oracle数据库智能缓存是oracle 11g R2的一个新特性,闪存缓存利用闪存设备的i/o速度比磁盘存储快
闪存是一个只读缓存,当干净的数据库由于空间的压力被清出缓冲区高速缓存,这些数据块就被移入闪存缓存中,如果后来又需要这些数据,数据库会再把这些数据从闪存缓存移回SGA中
启用闪存(目前闪存缓存特性仅限于solaris和oracle linux操作系统中)
db_flash_cache_file 设置闪存的路径名和文件名称
db_flash_cache_size 设置闪存缓存的大小
13.调节重做日志缓冲区大小
alter system set log_buffer=4096000 scope=spfile;
0 0
原创粉丝点击