メニュー
Oracle技術検証 #Golden Gate 障害時の情報収集あれこれ調査用虎の巻 SQL集 セッション調査 オブジェクト調査 パフォーマンス系 チューニング サー...
共有プール(shared pool)はヒープ(heap memory)構造を取ります。
共有プールはその領域を複数のチャンクに分けて管理・使用します。
共有プールを使用するプロセス(SQLの実行やバックグラウンドプロセス)はメモリの空き(フリーチャンク)を探し(フリーリストのサーチ)
必要な領域の確保および、必要に応じてフリーチャンクの分割を行うため、共有プールラッチ(latch: shared pool )を獲得してから実施します。
共有プールラッチ(latch: shared pool )
共有メモリを使うために領域の空き確認&確保の際に他の人(プロセス)が状態を変えないようにロックすること
共有プールラッチ(latch: shared pool )を獲得する過程で競合が発生した場合共有プールラッチ(latch: shared pool )の待機が発生します。
1.ハード・パース過多による共有プールラッチの取り合い
ハード・パースにより共有プールの使用が増え、共有プールの取得(チャンク)が発生
→チャンクが増える→共有プールの断片化
→フリーリストのサーチが長くなる
→ラッチ獲得待ちが増える
→latch: shared poolの待機が発生する。
ラッチは共有プールに一つだけなので、その一つのラッチを取り合うことでlatch: shared poolの待機が発生する。
そのため、対策の一つとしてサブプールに分けることによりラッチの取り合い(待機)が減る。
サブプールはそれ自体が独立した共有プール(shared pool)に管理され、
独自のフリーリスト(Freelist)、LRUリスト、共有プールラッチ(latch: shared pool )を有します。
サブプールの条件
CPUの数が4以上あり、共有プールが250MB以上の場合
サブブールの作成方法
_KGHDSIDX_COUNT隠しパラメータを使用
_KGHDSIDX_COUNTの値だけサブプールを作成して共有プールを管理します。
一日毎とかv$sgastatからコンポーネントのサイズを記録して、増え具合を見る。
コンポーネントは、公開されていない情報もあるが、わかるものは区別しておいた。
格納用のテーブル
create table wk_t_vsgastat
(
get_date date
,POOL VARCHAR2(12)
,Compornent VARCHAR2(24)
,NAME VARCHAR2(26)
,BYTES NUMBER
,CON_ID NUMBER
)
;
格納用テーブルにデータを入れるSQL
insert
into sysdba.wk_t_vsgastat
select
TO_CHAR(SYSDATE,'YYYY.MM.DD HH24:MI:SS') as NOW_TIME
,pool
,case name WHEN 'SQLA' THEN 'library cache' --SQL実行する際に利用する領域
WHEN 'kglsim object batch' THEN 'library cache' --共有プールアドバイザに関連した領域
WHEN 'kglsim heap' THEN 'library cache' --共有プールアドバイザに関連した領域
WHEN 'KGLH0' THEN 'library cache' --ライブラリキャッシュオブジェクト
WHEN 'KGLHD' THEN 'library cache' --ライブラリキャッシュ・ハンドルに関する情報を格納
WHEN 'KGLDA' THEN 'library cache' --ライブラリキャッシュデータブロック
WHEN 'KGLS' THEN 'library cache' --※公開可能な情報なし
WHEN 'KGLNA' THEN 'library cache' --ライブラリキャッシュ・ハンドルの名前
WHEN 'KGLSG' THEN 'library cache' --※公開可能な情報なし
WHEN'kglsim hash table bkts' THEN 'library cache' --※公開可能な情報なし
ELSE ''
END as Compornent
,name
,bytes
,CON_ID
from v$sgastat
where
pool = 'shared pool'
order by bytes desc
;
共有カーソル
共有カーソル統計情報
合計解析 :V$SQL の「PARSE_CALLS」の合計値
ハード解析 :V$SQL の「LOADS」の合計値
子カーソル :V$SQL のレコード件数
ロード済計画 :V$SQL の「LOADED_VERSIONS」の合計値
無効化 :V$SQL の「INVALIDATIONS」の合計値
最大カーソル・サイズ(KB) :V$SQL の「SHARABLE_MEM」の最大値
すべてのカーソル・サイズ(KB) :V$SQL の「SHARABLE_MEM」の合計値
初回ロード時間 :V$SQL の「first_load_time」の最小値
最新ロード時間 :V$SQL の「last_load_time」の最大値
SELECT MAX(s.sharable_mem) "最大カーソル・サイズ(KB)",
SUM(s.sharable_mem) "すべてのカーソル・サイズ(KB)",
SUM(s.loaded_versions) "ロード済計画",
SUM(s.loads) "ハード解析",
MIN(to_date(s.first_load_time, 'YYYY-MM-DD/HH24:MI:SS')) "初回ロード時間",
SUM(s.invalidations) "無効化",
SUM(s.parse_calls) "合計解析",
MAX(to_date(s.last_load_time, 'YYYY-MM-DD/HH24:MI:SS')) "最新ロード時間",
count(1) "子カーソル",
FROM v$sql s,
sys."_BASE_USER" u,
sys."_BASE_USER" u1
WHERE s.sql_id = '<対象のSQL_ID>'
AND s.parsing_schema_id = u.user#(+)
AND s.parsing_user_id = u1.user#(+)
GROUP BY s.sql_id, s.plan_hash_value;
シェアボタン: このページをSNSに投稿するのに便利です。
Oracle技術検証 #Golden Gate 障害時の情報収集あれこれ調査用虎の巻 SQL集 セッション調査 オブジェクト調査 パフォーマンス系 チューニング サー...
ASMディレクトリ毎の使用サイズ/使用率/ファイル数を確認するSQLdefine dirlv=2select file_type, count(*) files,&...
バックグラウンドプロセス、データ・ログファイル等 アーカイブRedoログファイルのサイズを確認する。set line 250set pages 1000alter session set N...
◆アクティブセッション高沸アクティビティ(アクティブセッション)が高沸、待機イベントを確認すると「log file sync」でセッションに遅延が発生しているとのことRedoLogがいっぱ...
SQLPLUSでバインド変数を使う方法--SQLのバインド変数と同じ名前・型の変数を宣言variable b1 numbervariable b2 number--以下値をセット@Sampleで実行時...
インスタンス、SID、サービス名--SQLPLUSshow parameter service_namesshow parameter db_nameshow parameters db_...
/********************************************************************** * sqlFile ...
表領域の容量確認col 表領域_最大 for 999,990col 表領域_使用済み &nbs...
スコットのひとり言をまとめるニャぁ… 江草すごいニャ~ぁ禁止事項 掲示板の趣旨と関係ない書き込み 誹謗・中傷含む書き込み 他サイトやアプリの宣伝 招待URLの書き込み 以上...
はじめにここは、雑談・質問・相談など何でも話題にする掲示板です。掲示板についてお知らせ特にありません。禁止事項 掲示板の趣旨と関係ない書き込み 誹謗・中傷含む書き込み 他サイトやアプリの宣伝 招待UR...
チューニングいろいろ Indexの性能劣化確認INDEXは追加や削除を繰り返すと、断片化(リーフブロックが広がったり)階層が深くなりINDEX効率が悪くなる。断片化が20%以上、リーフの階層...
共有プール共有プール(shared pool)はヒープ(heap memory)構造を取ります。共有プールはその領域を複数のチャンクに分けて管理・使用します。共有プールを使用するプロセス(SQLの実行...
Enterprise Manager Cloud Control トップ・アクティビティ>SQLの詳細待機ごとのアクティビティ(円グラフの意味) CPUにはCPUWaitもふくま...
V$SQLの実行回数、パースの回数からみるパフォーマンス問題EXECUTIONS:SQL の実行回数PARSE_CALLS: 解析コールの回数 = ハードパースとソフトパースの合計値LOADS:ハード...
1実行当たりの実行時間が長いSQLSET LINES 300set pages 100COL SQL_TXT FORM A48COL buffer...
/********************************************************************** * sqlFile &...
メモリ&プロセス・アーキティクチャ ...
ODBCドライバとデータリンクファイルでサクッとDB接続
/********************************************************************** * sqlFile ...
こんな面白記事を発見 CURADもどきをつくってみる ...