oracle中视图V$PGA_TARGET_ADVICE的用法

看一下这个视图能给我们带来什么样的信息(视图中每个列都很有帮助):
[email protected]> SELECT   pga_target_for_estimate / 1024 / 1024 "PGA(MB)",
  2           pga_target_factor,
  3           estd_pga_cache_hit_percentage,
  4           estd_overalloc_count
  5    FROM   v$pga_target_advice;

PGA(MB) PGA_TARGET_FACTOR ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
---------- ----------------- ----------------------------- --------------------
        10                .5                            34                   13
        15               .75                            34                   13
        20                 1                           100                   13
        24               1.2                           100                   13
        28               1.4                           100                   13
        32               1.6                           100                    3
        36               1.8                           100                    0
        40                 2                           100                    0
        60                 3                           100                    0
        80                 4                           100                    0
       120                 6                           100                    0
       160                 8                           100                    0

12 rows selected.

通过上面的数据可以得到如下的结论:
1.第一列表示不同的PGA的具体值

2.第二列PGA_TARGET_FACTOR为“1”表示当前的pga_aggregate_target设置大小(其他数值都是以这个数据为基础的倍数),我这里是20M,通过pga_aggregate_target参数可以确认一下
[email protected]> show parameter pga_aggregate_target;

NAME                    TYPE                 VALUE
----------------------- -------------------- -----------
pga_aggregate_target    big integer          20M

3.第三列表示PGA的估算得到的Cache命中率的百分比
目前系统如果PGA为20M的时候,就可以达到100%的命中率

4.第四列如果为“0”表示可以消除PGA的过载
从上面的数据中可以得到,当PGA为36M的时候,可以消除PGA的过载。

5.综合以上的结论,我们最终可以将PGA的大小设置为36M。
[email protected]> alter system set pga_aggregate_target=36m;

System altered.

6.调整后,再次查询一下v$pga_target_advice视图得到如下的建议信息,可以看到基本上已经满足现在的系统需求。
[email protected]> SELECT pga_target_for_estimate / 1024 / 1024 "PGA(MB)",
  2         pga_target_factor,
  3         estd_pga_cache_hit_percentage,
  4         estd_overalloc_count
  5  FROM   v$pga_target_advice;

PGA(MB) PGA_TARGET_FACTOR ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
---------- ----------------- ----------------------------- --------------------
        18                .5                            94                    2
        27               .75                            94                    2
        36                 1                           100                    0
43.1992188               1.2                           100                    0
50.3994141               1.4                           100                    0
57.5996094               1.6                           100                    0
64.7998047               1.8                           100                    0
        72                 2                           100                    0
       108                 3                           100                    0
       144                 4                           100                    0
       216                 6                           100                    0
       288                 8                           100                    0

12 rows selected.

恭喜你,到这里,您一定已经会“看”这个v$pga_target_advice视图了。

这是一个动态的过程,可以定期的查看这个视图得到更加有效的PGA大小的设置建议。

时间: 2024-08-12 20:30:07

oracle中视图V$PGA_TARGET_ADVICE的用法的相关文章

Oracle中HINT的30个用法

在SQL语句优化过程中,经常会用到hint, 以下是在SQL优化过程中常见Oracle中"HINT"的30个用法 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. /*+FIRST_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消

oracle中视图v$sql的用途

1.获取正在执行的sql语句.sql语句的执行时间.sql语句的等待事件: select a.sql_text,b.status,b.last_call_et,b.machine,b.event,b.program from v$sql a,v$session b where a.sql_id=b.sql_id 2.获取sql语句执行时间: select sql_text,cpu_time/1000/1000 t_cpu,trunc(elapsed_time/1000/1000) t_elaps

(转)Oracle中的rownum,ROWID的 用法

场景:在书写oracle的sql语句时候,如果语句不存在主键,需要删除几条重复的记录,这个时候如果不知道oracle中的伪列,就需要把所有的重复记录先删除,再插入.这样做好麻烦,可以通过伪列来定位记录. 1 ROWNUM的使用——TOP-N分析 使用SELECT语句返回的结果集,若希望按特定条件查询前N条记录,可以使用伪列ROWNUM. ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集).简单的说ROWNUM是符合条件结果的序列号.它总是从1开始排起的

Oracle中的rownum,ROWID的 用法

1.ROWNUM的使用——TOP-N分析 使用SELECT语句返回的结果集,若希望按特定条件查询前N条记录,可以使用伪列ROWNUM. ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集).简单的说ROWNUM是符合条件结果的序列号.它总是从1开始排起的. 使用ROWNUM时,只能使用<.<=.!=符号. 举例: student(学生)表,表结构为: ID     char(6) --学号 name VARCHAR2(10) --姓名 --建表 cre

oracle中的CURRVAL和NEXTVAL用法

原文:https://blog.csdn.net/qianyiyiding/article/details/51592689  1.什么是sequence?其作用是什么? 在Oracle数据库中,什么是序列呢?其中的作用是什么呢?其实sequence是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,在插入之前,获取序列号nextval值,然后进行插入.也可以通过查询检查当前值,或使序列增至下一个值. 2.如何定义

Oracle中存储过程的作用和用法

存储过程是Oracle开发者在数据转换或查询报表时经常使用的方式之一.它就是想编程语言一样一旦运行成功,就可以被用户随时调用,这种方式极大的节省了用户的时间,也提高了程序的执行效率.存储过程在数据库开发中使用比较频繁,它有着普通SQL语句不可替代的作用.所谓存储过程,就是一段存储在数据库中执行某种功能的程序.其中包含一条或多条SQL语句,但是它的定义方式和PL/SQL中的块.包等有所区别.存储过程可以通俗地理解为是存储在数据库服务器中的封装了一段或多段SQL语句的PL/SQL代码块.在数据库中有

ORACLE中伪表 dual 的用法

 dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情,如下: 1.查看当前用户,可以在 SQL Plus中执行下面语句 select user from dual; 2.用来调用系统函数 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间 select SYS_CONTEXT('USERENV','TERMINAL') from dual

Oracle中视图和同义词的区别

视图和同义词分别都是数据库中的对象名称,它们都不对应实际的数据存储,都依赖其他对象的存在而存在.视图:视图可以被看成是虚拟表或存储查询.除非是索引视图,否则视图的数据不会作为非重复对象存储在数据库中.一般是基于一个或多个数据表经数据查询语句构建而成:视图可以再被用于数据查询语句中. 同义词:是架构范围内的对象的另一名称.通过使用同义词,客户端应用程序可以使用由一部分组成的名称来引用基对象,而不必使用由两部分.三部分或四部分组成的名称.可以理解为是对数据库中一个对象的快捷方式或者在特定范围内的别名

Oracle中视图和基表的联系与区别。

视图是从一个或几个基本表中导出的表,是从现有基本表中抽取若干子集组成用户的“专用表”. 基表:基表的定义指建立基本关系模式, 而变更则是指对数据库中已存在的基本表进行删除与修改.区别: 1.视图是已经编译好的sql语句.而表不是2.视图没有实际的物理记录.而表有.3.表是内容,视图是窗口4.表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改5.表是内模式,试图是外模式6.视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据