《Oracle从入门到精通》读书笔记第十三章 oracle系统调优

13.1 调整初始化参数
8i及之前版本中,初始化参数记录在INITsid.ora文件中
8i之后的版本,初始化参数记录在SPFILEsid.ora文件中

13.1.1 oracle初始化参数分类
基本参数:可调整的参数
高级参数:精细调整的参数

13.1.2 主要系统调优参数介绍
show parameter 参数参数值
alter system 修改参数,影响整个数据库实例
alter session 修改参数,影响当前会话

13.2 系统全局区(SGA)优化
13.2.1 调整内存分配
内存的调整是在应用程序和SQL语句调整后进行

13.2.2 调整日志缓冲区
SQL> select distinct lebsz as log_buffer_size from x$kccle;
LOG_BUFFER_SIZE
---------------
            512

建议至少使用两个文件组成一个日志文件组,同一个日志文件组中的日志文件内容相同。
每个数据库必须至少拥有两个日志文件组

触发LGWR的情况:
a、执行commit或rollback命令
b、日志缓冲区满
c、每隔3秒钟
d、DBWR启动
e、日志缓冲区达到1/3容量
f、日志容量达到1M
g、发生日志切换

13.2.3 调整共享池(shared spool)
3个组主要组件:
a、库缓存:缓存共享SQL和PL/SQL语句
b、数据字典缓存:缓存数据字典表的信息
c、UGA(user globe area):在共享服务器模式下,当没有配置大池时(即large_pool_size=0),UGA会占用共享池的空间

共享池的调整主要包括3个方面:
库缓存、数据字典缓存和对话信息

调整库缓存
SQL> select sum(pins) 请求存取数,sum(reloads) 不命中数 from v$librarycache;
请求存取数 不命中数
---------- ----------
     67924 154
一般来说,库高速缓存总不命中数与总存取数之比应当接近零,当该比率如果接近或大于1%,采用以下两种办法:
(1)增加初始化参数shared_pool_size的值,提高库高速缓存中可用的内存数量,同时为了取得好的效果,还要增加初始化参数open_cursors的值。
(2)写等价的SQL语句。

调整数据字典缓存
SQL> select sum(gets) 请求存取数,sum(getmisses) 不命中数 from v$rowcache;
请求存取数 不命中数
---------- ----------
    169457 7324
一般来说,数据字典高速缓存总不命中数与总存取数之比应当接近零,如果该比率大于10%,通过增加初始化参数shared_pool_size的值,以提高数据字典高速缓存可用的内存数量。

调整会话信息
SQL> select sum(value)||' 字节' as 当前分配给所有会话的内存数
  2 from v$sesstat,v$statname
  3 where name='session uge memory' and v$sesstat.statistic#=v$statname.statistic#;
当前分配给所有会话的内存数
---------------------------------------------
 字节
值session uga memory用于显示分配给对话的内存字节数
SQL>
SQL> select sum(value)||' 字节' as 曾经分配给所有会话的最大内存数
  2 from v$sesstat,v$statname
  3 where name='session uge memory max' and v$sesstat.statistic#=v$statname.statistic#;
曾经分配给所有会话的最大内存数
---------------------------------------------
 字节
值session uga memory max用于显示分配给对话的最大内存数

13.2.4 调整数据库缓存区
SQL> select name,value from v$sysstat where name in('db block gets','consistent gets','physical reads');
NAME VALUE
---------------------------------------------------------------- ----------
db block gets 448747
consistent gets 286521
physical reads 19610

db_block_gets: 当前模式所请求读的块数
consistent gets: 在一致读模式下所读的块数
physical reads: 从磁盘读的块数

计算缓冲区高速缓存的命中率可以使用“1-(physical reads/(db_block_gets + consistent gets))‘这个公式,如果命中率低于70%,就会造成性能下降,应该立即通过增加初始化参数db_block_buffers的值来增加缓冲区高速缓存的大小。

13.2.5 SGA调优建议

13.3 排序区优化
用户数据的排序可使用两个区域:一个是内存排序区,一个是磁盘临时段
建议尽量使用内存排序区,而不使用临时段,参数sort_area_size用来设置排序区大小
每个排序所占用的大小由sort_area_retained_size参数决定
SQL> show parameter sort_area_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sort_area_size integer 65536
SQL> show parameter sort_area_retained_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sort_area_retained_size integer 0

13.3.1 排序区与其他内测区的关系
大池(large pool)用于数据备份与恢复工具,比如rman等备份工具,大小由参数large_pool_size决定
SQL> show parameter large_pool_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
large_pool_size big integer 0

13.3.2 排序活动
专用连接,在内存中分配PGA,
多线程服务器建立连接,在large_pool中分配排序空间

13.3.3 专用模式下排序区的调整
1、sort_area_size
除非在共享模式下,一般不推荐设置该参数,而推荐使用pga_aggregate_target进行PGA内存的自动管理

2、sort_area_retained_size
与sort_area_size配合使用,设置了pga_aggregate_target后,该参数无效

pga_aggregate_target决定可以由所有服务器进程使用的内存总量
SQL> show parameter pga_aggregate_target;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 199M

workarea_size_policy决定采用手动管理还是自动管理
SQL> show parameter workarea_size_policy;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO

13.3.4 共享模式下排序区的调整

你可能感兴趣的:(oracle,系统调优)