Oracle优化培训笔记-第二节

用已知的东西推未知的东西

Oracle 体系结构2:

 

修改参数的时候需要系统参数的设置

 

datagrad:    不同机房的database的冗余,容灾

 

goudegate:

 

Oracle连接过程

 

server服务进程:

1. 专用服务器( show parameter process)  150*1.2; 独占方式,占用后其他会话不能连接.

2.共享服务器

 

一. 共享池 SHARE Pool:  SHARED_POOL_SIZE

私有内存区: PGA  包括  和连接的会话有关系,会话数越来越多,则占用服务器内存越来越大

 session会话信息    ┒

sort排序信息            ┨  UGA  用户全局区

curser 游标信息       ┛

栈空间: 变量信息

 

共享内存区存放内容:

1. SQL语句本身(文本);分析树(多条路径)  SQL执行计划;

2. 数据库字典表信息

优化策略:

1. 增加SGA大小

2. 绑定变量,宿主变量  (对于数据仓库,绑定变量可能会带来灾难); 可以通过存储过程调用中传递实参的方法来解决

3. 常驻内存语句,大对象保留区(SHARE_POOL_RESERVED_SIZE)

select * from v$shared_pool_reserved ;

Request_misses  /requests 比较大则表示该区间不够

驻留语法: 

select * from v$db_object_cache

where shareable_mem >10000

and (type = 'PACKAGE' or type = 'PACKAGE_BODY'

or type = 'PROCEDURE' or type = 'FUNCTION')

and kept='NO'

executedbms_shared_pool.keep('package_name');   把包常驻共享内存

 

标准包(standard ,包括to_char,等);

executedbms_shared_pool.unkeep('package_name');  把包取消常驻共享内存

通过建立触发器自动执行包常驻内存操作

 

判断参考值:

SQL语句命中率,共享池 要求达到85%;

select gethitratio from v$librarycache where  ...= 'SQL AREA'

reload / ping的值如果>1% 需要增加共享池

 

二. 数据库缓冲区 data buffer pool:

 

DB_CACHE_SIZE   参数

DB_BLOCK_SIZE  单个块大小  数据仓库使用大的block ,主要看业务是否是连续的业务; 建库的时候就已经决定了.

DB_CACHE_SIZE  最小颗粒度(SGA不超过128M,则最小4M否则为16M)

优化方法:

1. 修改上面两个参数大小

2. 常驻内存表  (KEEP缓冲区  RECYCLE缓冲区 DEFAULT缓冲区)

建表的时候增加storage 参数;

alter table customer storage(BUFFER_POOL  RECYCLE);

alter index … storage (BUFFER_POOL KEEP )

 

数据库缓冲区包括两个队列:

1. LRU队列  

2. Dirty 队列  (满了就触发写操作)

判断参考值:

读命中对于联机交易系统要求90以上; 通过参考v$sysstat表

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值