2018年5月12日土曜日

Oracle色々(11grR2,12cR2)

前提:Oracle 11g(Release 11.2.0)、12c(Release 12.1.0、12.2.0)

1.そもそも編

<インスタンスとデータベースの違いとは?>
 メモリ空間の話  →インスタンス
 物理ファイル群の話→データベース
 RAC構成の場合、1つのデータベース・複数のインスタンス、ということになる。
 
 RAC…Real Application Clusters。複数サーバ(インスタンス)で1つのデータベースを共有する仕組み。
      RAC構成はActive/Active構成。(Active/Standbyではない)

 RAC構成メリット
  ①耐障害性の向上
  ②拡張性の向上
   サーバを後から追加可能(スケールアウト)
  ③負荷分散の実現
   性能を安定化、負荷の平準化。

<性能向上するために>
 一般的にもDISKアクセスは遅く、Cacheアクセスの方が速い

 Oracleではデータ参照スピードを上げるために
 テーブルにインデックスを貼る方法が通例。
 
 インデックス対象データはメモリ(SGA データベース・バッファ・キャッシュ)へ展開され
 その結果アクセス効率が上がる。
 (SGAに検索対象が存在すれば、テーブル(Disk)の参照不要)
 
 REDOログバッファ
 →昨今ではあまり問題にならない傾向。
 
 オプティマイザ
 →共有プールにあるライブラリキャッシュを参照して経路を決める。
  ライブラリキャッシュ…アプリケーションコード(コンパイル済)保持。
             SQL解析ツリー、実行計画

<V$表を利用したSGA領域の見積方法>
■V$DB_CACHE_ADVICE
select
SIZE_FOR_ESTIMATE
, SIZE_FACTOR
, ESTD_PHYSICAL_READ_FACTOR
, ESTD_PHYSIVAL_READS
from V$DB_CACHE_ADVICE;

※SIZE_FACTOR(現在値1)を変化させてESTD_PHYSIVAL_READSが減るなら効果あり

■V$SHARED_POOL_ADVICE
select
SHARED_POOL_SIZE_FOR_ESTIMATE
, SHARED_POOL_SIZE_FACTOR
, ESTD_LC_MEMORY_OBJECT_HITS
from V$SHARED_POOL_ADVICE;

<V$表を利用したPGA領域の見積方法>
select
count(n.name) SESSION_COUNT
, sum(s.value/1024/1024) SESSION_MEMORY_MB
from v$sesstat s, v$statname n, v$session se
where n.statistic# = s.statistic#
and s.sid=se.sid
and n.name in ('session pga memory');

SESSION_COUNT×2MB または SESSION_MEMORY_MB(MB)を参考にする

<各メモリとパラメータについて>
Oracle11g以降
MEMORY_TARGETに設定した値の範囲でいい感じにやってくれる。
→明示的に対象パラメータに値を設定することで最低限の値を確保してくれる。

参考サイト
津島博士のパフォーマンス講座
http://www.oracle.com/technetwork/jp/database/articles/tsushima/index.html

Oracleの実行計画を読んでみよう!
https://www.slideshare.net/ryotawatabe/20170907-dbts2017-tokyo-cosol-how-to-read-oracle-execution-plan

0 件のコメント:

コメントを投稿