day08_SGA后半部分


share_pool:用于缓存SQL语句以及SQL语句中涉及的表定义(数据列以及数据类型)

查看共享池
SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL;


当执行一个sql语句,就会被记录,在生产平台上,很多sql语句会被很多人重复执行,所以,缓存了的sql语句,会被更快的执行
SQL> select count(*) from dba_objects;

SQL>  select sql_text from v$sqlarea where sql_text like '%dba_objects%';


刷新(清空)share pool
SQL> alter system flush shared_pool;

再次查看之前的命令没有了
select sql_text from v$sqlarea where sql_text like '%dba_objects%';


SQL> show parameter shared_pool_size;

----------------------------------------------
Database buffer cache(作用:缓存数据)
Buffer cache存储从数据文件检索出来的数据块拷贝,提升数据检索速度,降低IO压力


SQL> create table aa as select * from dba_objects;

SQL> alter system flush shared_pool;
SQL> alter system flush buffer_cache;

打开自动跟踪
SQL> set autotrace traceonly;

SQL>select count(*) from aa;
结果:
 5184  consistent gets (逻辑读 内存)
 914  physical reads   (物理读 硬盘)

再次执行
SQL> set autotrace traceonly;
SQL>select count(*) from aa;
结果:
       5047  consistent gets(只有逻辑读 说明都是从内存读出的)
          0  physical reads
-----------------------------
查看共享池
SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL;
SQL> show parameter shared_pool_size;

SQL> alter system set shared_pool_size=64m scope=both;(此参数可以直接修改到内存和参数文件不需要重启)

SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL;
SQL> show parameter shared_pool_size;

你会发现share pool有2个不同值


SQL> shutdown immediate;
SQL> startup
SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL;
SQL> show parameter shared_pool_size;
重启后,依然不会变化,share pool有2个不同值,所以咱们不用修改,10g以后是段自动管理,除非你把段自动管理关闭,它才会生效。

SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL;【以这个查询出的share pool为准】



不管share pool、buffer cache全是在SGA中划分出来的,share pool、buffer cache受SGA管理,你开启自动管理功能不用手工设置,受SGA控制。
SGA变大,share pool、buffer cache也会变大。SGA变小,share pool、buffer cache也会变小。


显示SGA的所有设置值
SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL
    union
    select name as pool,sum(bytes/1024/1024) from v$sgastat s where s.POOL is null group by s.name;


SQL> show parameter sga;

SGA是动态的并且最大值由SGA_MAX_SIZE参数控制【sga中划分的所有池,相加总和不可以超过sga_target。如果想把SGA中划分的各个池调大,由于SGA自动管理,SGA变大,这些划分的各个池也会变大】





SQL> show parameter sga

SGA大小受2个参数影响:sga_target、sga_max_size


sga_max_size相当于你钱包里有多少钱,sga_target你要买的东西的价格
你钱包里有1000元,你买双500元的鞋。你钱包里有1000元,你买1500元的鞋,买不了吧!

在oracle运行过程当中修改SGA_TARGET值不能大于SGA_MAX_SIZE,生产中sga_target和sga_max_size大小致最好,就不会出问题了。
就是你有1000元钱,你买双1000元的鞋,正好~!


如果SGA_MAX_SIZE配置值小于SGA_TARGET,那么在数据库启动后SGA_MAX_SIZE= SGA_TARGET,在此期间SGA_TARGET不能向上调整
你谈个女朋友,你钱包里有1000元,人家要1500元的包,你是不是也得买啊?哪怕你是借钱

SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL
    union
    select name as pool,sum(bytes/1024/1024) from v$sgastat s where s.POOL is null group by s.name;
SQL> show parameter sga
SQL> alter system set sga_max_size=350M scope=spfile;
SQL> shutdown immediate;
SQL> startup
SQL> show parameter sga 【如果SGA_MAX_SIZE配置值大于SGA_TARGET,那么在数据库启动后SGA_MAX_SIZE, SGA_TARGET分别使用自己的配置值】
SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL
    union
    select name as pool,sum(bytes/1024/1024) from v$sgastat s where s.POOL is null group by s.name;
    
  各个池没有变化,它们受sga_target影响,不受sga_max_size,上面咱们修改的是sga_max_size大小,所以各个池没有变化 
    
    
SQL> alter system set sga_target=400M  scope=spfile;
SQL> shutdown immediate;
SQL> startup
SQL> show parameter sga 【sga_max_size和sga_target一样了,sga_max_size迁就sga_target】    
SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL
    union
    select name as pool,sum(bytes/1024/1024) from v$sgastat s where s.POOL is null group by s.name;   


buffer cache和share pool有变化


生产中最简单的调优方式,扩大内存吧,所以服务器内存没有小于16G。

在oracle 10g后,SGA下的各个小池大小不需要咱们手工修改,你只需要会修改SGA,就可以了。





scope=spfile【修改参数文件,当前没有生效,要重启】
scope=both;【1修改到参数文件、2修改到内存当前生效】


memory_max_size
memory_target




原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/3f4741be0713899ee00e223e24efdede.html