王朝网络
分享
 
 
 

Oracle 9i 的增强型内存使用率查看表

王朝oracle·作者佚名  2008-05-31
宽屏版  字体: |||超大  

增强了的v$process查看表

Oracle已经通过增强v$process查看表来实现内存监控。v$process查看表里的新数据列答应你显示当前所有Oracle进程的程序全局区(PGA)区域的细节。PGA是内存里的一个专门区域,被单独的进程用来执行内存密集型函数,例如排序。

v$process查看表的三个新数据列包括pga_used_memory、pga_allocated_memory和 pga_max_memory。从这些刻度表里,你可以看到Oracle环境里各个后台进程的实际内存利用率,还可以查看每个到数据库的连接所需要的内存。为了说明这个问题,考虑一下下面这个查询:

col c1 heading 'ProgramName' format a30

col c2 heading 'PGAUsedMemory' format 999,999,999

col c3 heading 'PGAAllocatedMemory' format 999,999,999

col c4 heading 'PGAMaximumMemory' format 999,999,999

select

program c1,pga_used_mem c2,pga_alloc_mem c3,pga_max_mem c4

from

v$process

order by

c4 desc;

这个例子深入到了Oracle数据库引擎的行为中。例如,你可以看到Oracle的日志编写器(LGWR)进程是PGA内存最大的消耗者,其原因是很清楚的:Oracle的日志编写器进程必须把重做日志镜像(redo log image)从Oracle的日志缓冲器(在内存里)里传输到在线重做日志文件系统里。你还可以看到Oracle的数据库编写器(DBW0)进程也有很高的内存占用率,这也是有原因的:Oracle的异步I/O进程必须使用大量的内存资源来保证所有数据库的更改都被成功地写到数据库里。

各个进程所要使用的内存大小

在Oracle9i里查看内存使用的真实值就是查看各个进程的内存使用率。Oracle9i现在有一个共享的内存区域,叫做pga_aggregate_target。在使用Oracle的多线程服务器时, pga_aggregate_target参数的工作方法和Oracle的大内存池相类似,只有一个显著的不同点。有了一个共享内存区域,Oracle的各个进程,在进行排序和散裂合并时,就可以不受限制地使用多达内存池总量5%的内存。这相对于Oracle8i来说是个重大的改进,它原来要求每个PGA区域的大小必须限制在sort_area_size初始化参数所设定的值里。

Oracle9i还提供了一个叫做v$pgastat的新字典查看表。v$pgastat查看表能显示数据库内每个内存区域内的内存使用率的总量。这些信息可以告诉你内存使用率的峰值,还能答应你根据对系统的相对压力来调整内存需求。以下是一个简单的对v$pgastat的查询:

column name format a40

column value format 999,999,999

select name,value

from

v$pgastat

order by

value desc;

你可以看到pga_aggregate_target的值以及这个实例所使用的所有内存区域的峰值。现在我们再来看看最佳、单周期和多周期的内存运行情况。

当Oracle的进程需要进行操作时,例如排序或者散裂合并,它就到pga_aggregate_target区域里的共享内存区里,尝试取得足够多的相互毗邻的内存帧来执行操作。假如这个进程能够立即取得这些内存帧,它就被标记为最优内存访问。假如需要在单周期内通过pga_aggregate_target取得所需的内存,那么内存分配就被标记为单周期。假如所有的内存都在使用中,那么Oracle也许就不得不通过pga_aggregate_target在多周期内取得内存,这叫做多周期。

记住:内存的速度是非常非常快的,绝大多数排序或者散裂合并都是在几微秒内完成的。Oracle答应单个进程最多使用pga_aggregate_target 5%的内存,并行操作最多可以被答应消耗PGA内存池30%的内存。

多周期运行显示了内存的不足,所以你总应该分配足够的内存以保证至少有95%连接上了的任务能够最佳地获得内存。

你可以查询这里列出的v$sysstat查看表来取得workarea运行的信息:

col c1 heading 'WorkareaProfile' format a35

col c2 heading 'Count' format 999,999,999

col c3 heading 'Percentage' format 99

select name c1,cnt c2,decode(total, 0, 0, round(cnt*100/total)) c3

from

(

select name,value cnt,(sum(value) over ()) total

from

v$sysstat

where

name like 'workarea exec%'

);

至少有95%的任务应该有最佳workarea运行情况。在以上的输出中,你可以看到所有的workarea运行情况,它们能运行在最佳、单周期和多周期模式下。

这里提供了和pga_aggregate_target区域大小相关的重要信息。它还能指示出内存区域的过量分配。假如最佳workarea运行的百分比持续保持在98到100%,你就可以从pga_aggregate_target里心安理得地“盗取”内存帧,并把它们分配到Oracle SGA(例如db_cache_size)的其他区域里,那里可能更需要内存资源。

查看各个workareas

Oracle还提供了数据字典查看表,它能显示SQL声明的运行计划里各个步骤所使用的内存大小。其价值对正确设置hash_area_size和其他内存密集参数的内存大小是不可估量的。

v$sql_workarea_active查看表显示了Oracle9i数据库里各个workarea的内存使用数量。

而且,Oracle提供了多个用来合并表格的方法,每个都需要不同数量的内存。Oracle9i SQL优化器能够分辨分类归并联合、嵌套循环合并、、散裂合并和星型合并方法。在有些情况下,散裂合并比分类归并联合运行得更快,但是散裂合并需要更多的内存资源和对hash_area_size参数更高级的设置。

以下是对v$sql_workarea_active查询表的查询:

Select

to_number(decode(SID, 65535, NULL, SID)) sid,

operation_type OPERATION,

trunc(WORK_AREA_SIZE/1024) WSIZE,

trunc(EXPECTED_SIZE/1024) ESIZE,

trunc(ACTUAL_MEM_USED/1024) MEM,

trunc(MAX_MEM_USED/1024) "MAX MEM",

number_passes PASS

from

v$sql_workarea_active

order by 1,2;

你可以看到SQL运行每一步的内存使用数量。一个SQL声明执行Group By排序需要73 KB内存。你还可以看到运行散裂合并的两个SQL声明的系统ID(SID)。这些散裂合并分别使用了3到13 MB内存来建立内存中的散裂表。

一个非常重要的工具

Oracle正在成为最灵活、最复杂的数据库治理系统之一。数据库组件的内存使用查看表是治理你Oracle数据库非常重要的工具。有了它,Oracle专家能够更加轻易地保证内存使用率的所有设置对所有应用程序都是最优的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有