数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

自动调整 Oracle9i Database :Oracle SGA(2)


发布日期:2023年06月04日
 
自动调整 Oracle9i Database :Oracle SGA(2)

为 pga_aggregate_target 开发特征码

Oracle 数据库中的 PGA 区域非常重要因为它控制排序操作以及 SQL 散列联接的速度在以下的某一种情况出现时您可能希望动态更改 pga_aggregate_target 参数

只要 v$sysstat 统计量 estimated PGA memory for onepass 的值超过 pga_aggregate_target 您就希望增加 pga_aggregate_target

只要 v$sysstat 统计量 workarea executions ? multipass 的值大于百分之一数据库就可能得益于额外增加的 RAM 内存

有可能出现过量分配 PGA 内存的情况而只要 v$sysstat 行 workarea executions?optimal 的值持续显示百分之百时您可能会考虑减少 pga_aggregate_target 的值

v$pgastat 视图提供对 PGA 使用情况以及自动内存管理程序的实例级汇总统计信息为快速获得概要信息有个简单的查询提供了关于所有 Oracle Database g 连接的总体 PGA 使用情况的极佳统计信息

check_pgasql

*************************************************************

Display detailed PGA statistics

*************************************************************

column name format a

column value format

select

name

value

from

v$pgastat

;

该查询的输出可能类似于以下信息

NAME VALUE

aggregate PGA auto target

global memory bound

total expected memory

total PGA inuse

total PGA allocated

maximum PGA allocated

total PGA used for auto workareas

maximum PGA used for auto workareas

total PGA used for manual workareas

maximum PGA used for manual workareas

estimated PGA memory for optimal

maximum PGA memory for optimal

estimated PGA memory for onepass

maximum PGA memory for onepass

在上面来自于 v$pgastat 的显示内容中我们看到以下重要的统计信息

Total PGA used for auto workareas — 该统计量监视所有以自动内存模式运行的连接的 RAM 使用情况记住 Oracle 没有允许所有内部进程使用自动内存特性例如 Java 和 PL/SQL 将会分配 RAM 内存而这将不会计算在总的 PGA 统计量中因此您应该从分配的总 PGA 中减去该值以便了解由连接所使用的内存量和由 Java 和 PL/SQL 所使用的 RAM 内存量

Estimated PGA memory for optimal/onepass — 该统计量估计出以最优化模式执行所有任务连接 RAM 请求时需要多少内存记住当 Oracle Database g 遇到内存短缺情况时 DBA 将调用多步操作试图找到最近释放的 RAM 内存在 Oracle Database g 中该统计量对于监视 RAM 使用情况非常重要大部分 Oracle DBA 会将 pga_aggregate_target 增加到此值

在 Oracle Database g 中可以使用称为新顾问实用程序的 v$pga_target_advice 该实用程序显示从当前值的 % 到 % 的不同大小的 pga_aggregate_target 的最优化一步和多步 PGA 执行的临界差别

列表显示使用这一新的实用程序的示例查询以下是输出的示例在这里我们看到已经为当前的处理超量分配了 pga_aggregate_target 可以安全地从这一区域提取 RAM 并将它分配到其他地方

Estimated Estimated

Target(M) Cache Hit % OverAlloc

<= current size

可以看到您能够方便地创建自动方法来检测 PGA 内存短缺情况(使用 Statspack )并编写作业来动态更改 pga_aggregate_target 以确保为排序和散列联接进行最优化的 RAM 使用

为数据缓沖区开发特征码

DBA 将会注意到在实际情况中数据缓沖区命中率 (DBHR) 的变化会随着测量间隔的频率增加而增加例如 Statspack 可能在以小时为单位的间隔时报告 DBHR 为百分之九十二但在采样率以两分钟为间隔时将显示很大的变化如图所示

作为一般性原则应该调整主机上的所有可用内存并且应该为 db_cache_size 分配达到增益递减点的 RAM 资源(参见图在该点处增加缓沖区块不会显着提高缓沖区命中率

新的 v$db_cache_advice 视图 类似于 Oracle 中推出的一个用于跟蹤缓沖区命中情况的旧实用程序 x$kcbrbh 同样 x$kcbcbh 视图用于跟蹤缓沖区遗漏情况数据缓沖区命中率可以提供与 v$db_cache_advice 所提供内容相类似的数据因此多数 Oracle 调整的专业人员可以使用这两种工具来监视其数据缓沖区的有效性

当 v$db_cache_advice 实用程序已经启用并且数据库已经运行了足够长的时间来提供有代表性的结果时可以使用 列表 中的脚本来执行高速缓存建议功能使用这一脚本您可以获得对您所有缓沖区池的高速缓存建议包括 kkkk 和 k 数据缓沖区

该脚本的输出如下所示注意数值的范围从 db_cache_size 当前大小的百分之十直到当前大小的两倍

Estd Phys Estd Phys

Cache Size (MB) Buffers ReadFactor Reads

< % size

Current Size

< x size

如图中所标注数据缓沖区最优化设置的位置就是附加缓沖区的临界效益开始减少的位置当然该优化点将在一段时间后改变这就是为什么我们需要预先重新配置 SGA 的原因以便于我们能够根据当前的处理需要来更改数据缓沖区的大小

对于趋势分析DBHR 中的变化并不重要可以沿两个方向生成平均数据缓沖区命中率一周中每天的平均 DBHR 和一天中每小时的平均 DBHR

记住在数据缓沖区中变化快速地发生有时长期的分析将会提供线索指出数据库中的处理故障问题几乎每个 Oracle 数据库都提供链接到常规处理计划的模式称为特征码

以下显示一个 Statspack DBHR 每小时平均值脚本的输出报告基于六个月的数据收集显示每天的平均命中率如果在电子表格中绘制该数据则该数据库的 DBHR 特征码变得显而易见

hr BHR

该数据的绘图如图所示我们看到一些有趣的重复趋势

上一篇:Oracle创建用户UNLIMITEDTABLESPACE

下一篇:Oracle11g数据库的认证体系结构