- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle优化123
监控缓冲区的命中率
数据库缓冲区(Buffer Cache): 存放数据库中数据库块的copy. 它由一组缓冲块组成,这些缓冲块为所有与该实例相连的用户进程共享. 缓冲块的数目由初始化参数DB_Block_buffers确定, 缓冲块的大小由初始化参数DB_BLOCK_SIZE确定. 大的数据块可提高查询速度.
日志缓冲区(Redo Log Buffer): 存放数据操作的更改信息. 它们以日志项(redo entry)的形式存放在日志缓冲区中. 当需要进行数据库恢复时, 日志项用于重构或回滚对数据库所做的变更. 日志缓冲区的大小由初始化参数LOG_BUFFER确定. 大的日志缓冲区可减少日志文件IO的次数. 后台进程LGWR将日志缓冲区中的信息写入磁盘的日志文件中, 可启动ARCH后台进程进行日志信息归档.
共享池(shared pool): 包含用来处理的sql语句信息. 它包含共享sql区和数据字典存储区. 共享sql区包含执行特定的sql语句所用的信息. 数据字典区包含用于存放数据字典, 它为所有用户进程共享.
Cursors: 一些内存指针, 执行待处理的sql语句.
其他信息区: 除了上述几个信息区外, 还包括一些进程之间的通信信息(如封锁信息); 在多线程服务器配置下, 还有一些程序全局区的信息, 请求队列和响应队列等.
数据库缓冲区命中率
select name,value from v$sysstat where name in (physical reads, physical reads direct, physical reads direct (lob), session logical reads);
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;
改进数据库缓冲区的性能
修改data buffer cache的大小
调整database buffer cache的性能最简单的办法就是修改它的大小. 占SGA的45%最合适。
1, DB_BLOCK_SIZE主数据库块大小默认是8K, 在建立完数据库之后就不能改变。
2, DB_CACHE_SIZE(默认缓冲区池)默认48M, 我们主要修改这个参数以提高性能。
Alter system set db_cache_advice = on;
用oracle推荐的统计顾问, 在正常操作半个小时之后可以执行如下查询得到推荐的大小。
select name,size_for_estimate,v$db_cache_advice.ESTD_PHYSICAL_READS from v$db_cache_advice ?where block_size=8192 and advice_status=ON;
另外, 我们可以通过下述语句查询哪些对象正缓存在buffer cache中, 正使用多少个buffer cache缓冲区。
select do.owner,do.object_name,do.object_type,count(distinct a.BLOCK#) NUM of buffersfrom v$bh a, dba_objects dowhere a.OBJD = do.object_id and do.owner = CTLgroup by do.owner,do.object_name,do.object_type
3, 使用多个缓冲池
Alter system set db_cache_size = 300M;
Alter system set db_keep_cache_size = 150M;
Alter system set db_recycle_cache_size = 30M;
将表分配给保持区
Alter table col_cust storage(buffer_pool keep);
使用下面语句可以查看分配
文档评论(0)