特濃JPOUG
Oracle Database 12c Pluggable Database
でSTATSPACKつかったらどうなるんだ
~ V$SYSSTATには要注意 ~
Japan Oracle User Group
山下 正
Contents
• JPOUG
• 今日話すこと
• 検証説明 / デモ
• まとめ

2
JPOUG
Japan Oracle User Group (http://www.jpoug.org/)
活動事例:
2011年6月
2012年4月
2012年7月
2012年10月
2013年12月
2013年5月
2013年7月
2013...
今日話すこと
• Oracle Database 12c の Pluggable Database 環境で STATSPACK を動
かす。
• STATSPACKの結果を”素”のまま眺めるのはつらいので”ビジュアル
系”にしてみる。
• “?...
検証環境
• Oracle Database 12c ( 12.1.0 ) Enterprise Edition on Oracle Linux 6.4
64bit
• Pluggable Database (Oracle Multitenan...
検証環境
Oracle Database 12c Container Database

CDB
APEX

PDB$SEED

APEX

STATS
PACK

PDB
(PDBORCL)

APEX

STATS
PACK

PDB
(P...
検証環境
Oracle Database 12c Container Database

CON_ID=0
APEX

CON_ID=2

APEX

STATS
PACK

CON_ID=3
(PDBORCL)

APEX

STATS
PA...
検証環境
CDB$ROOT@ORCL SQL> select CON_ID,DBID,NAME,OPEN_MODE,OPEN_TIME from v$containers;
CON_ID
---------1
2
3
4
5

DBID
---...
検証環境

STATSPACK 12.1
11g との違いは??
sprepins.sql

Rem
Rem
Rem

MODIFIED
shsong

(MM/DD/YY)
06/29/11 - shsong 06/28/11 - Bug 1...
検証環境

STATSPACK 12.1
----------------------------------------------------------------------Oracle12g Server
Release 12.1
P...
検証環境
Oracle Application Express 4.2
「Oracle Application Express(Oracle APEX)は、Oracleデー
タベース用の宣言型高速Webアプリケーション開発ツールです。
完全にサ...
検証
PDBORCL2上で3パターンの処理を実行し、それ
ぞれのデータベース上で確認できる統計値の現れ
方を確認する。

…画面

12
検証
画面サンプル(TopN Wait Event相当)

13
検証
画面サンプル(SQL ordered by XXX相当)

14
検証 waitevent

PDBORCL2で処理した影響を
受けて、PDBORCLで待機イベ
ントのWAIT時間が上昇

PDBORCL

PDBORCL2

CDB$ROOT

15
検証 waitevent

PDBORCL2で処理した影響を
受けて、PDBORCLで待機イベ
ントのWAIT時間が上昇

PDBORCL

PDBORCL2

CDB$ROOT

16
中間まとめ
• PDBで処理した結果はそれぞれのSTATSPACKに反映されてい
る。
• コンテナ・データベースはSGAも共有リソースとしているため、
SGA関連の待機イベントは他のPDBに影響する可能性があるの
で注意。 ORA-04031...
もう一度APEXの画面確認
PDB(PDBORCL)

PDB(PDBORCL2)

PDBORCL2で実行し
PDBORCL2で実行し
た処理により
た処理により
execute count が上
execute count が上
昇している...
もう一度APEXの画面確認
• 処理を実行したPDB以外で “execute count” が上昇している
• “execute count”はインスタンス・ワイドでカウントされる?
………………そうではないケースもある。

• CDB$ROO...
“execute count”深堀
• Oracle Database 12c で追加された新しいビューをみる。
http://docs.oracle.com/cd/E49329_01/server.121/b71292/release_cha...
V$SYSSTATとV$CON_SYSSTAT
CDB$ROOT@ORCL SQL> desc v$sysstat
名前
NULL?
----------------------------- -------STATISTIC#
NAME
CL...
CON_IDって…
<V$SYSSTAT から抜粋 >
CON_ID NUMBER データが関係するコンテナのID。
可能な値は次のとおり。
0: この値は、CDB全体に関連するデータを含む行に使用される。この値は、非CDB内の行にも使用される...
V$SYSSTATとV$CON_SYSSTAT
●各データベース内でV$SYSSTATを参照した時のCON_ID
データベース

CON_ID

参照時のユーザがSYSの
場合のV$SYSSTATの
CON_ID

参照時のユーザがPERFST...
V$SYSSTATとV$CON_SYSSTAT
●さらに、各データベース内でV$CON_SYSSTATを参照した時のCON_ID
データベース

V$SYSSTATのCON_ID

V$CON_SYSSTATのCON_ID

CON_ID

S...
V$SYSSTATとV$CON_SYSSTAT
●さらに、各データベース内でV$CON_SYSSTATを参照した時のCON_ID
データベース

V$SYSSTATのCON_ID

V$CON_SYSSTATのCON_ID

CON_ID

S...
V$CON_SYSSTATって…
CDB$ROOT@ORCL SQL> select * from v$con_sysstat where name = 'execute count'

STATISTIC# NAME

CLASS

VALU...
V$CON_SYSSTATって…
CDB$ROOT@ORCL SQL> select * from v$con_sysstat where name = 'execute count'
2 union all
3 select * from v...
V$CON_SYSSTATって…
• V$CON_SYSSTAT の縦横を変換して差分計算する。
• ダミーの負荷(@1000_select.pdborcl.loop.sql)かけた結果は、、、、
…..画面

28
V$CON_SYSSTATって…
CDB$ROOT@ORCL SQL> select * from v$con_sysstat where name = 'execute count'
2 union all
3 select * from v...
V$CON_SYSSTATって…
execute count

※イメージです

CDB$ROOT@ORCL SQL> select * from v$con_sysstat where name = 'execute count'
CON_I...
V$CON_SYSSTATって…
※イメージです

CDB$ROOT@ORCL SQL> select * from v$con_sysstat where name = 'execute count'
2 union all
3

CON_I...
V$CON_SYSSTATって…
“execute count” の値で確認

VIEW

CON_ID NAME

VALUE

VALUE –” CON_ID=2”のVALUE

V$CON_SYSSTAT

1 execute count...
V$CON_SYSSTATって…
“physical reads” の値で確認

VIEW

CON_ID NAME

VALUE

VALUE –” CON_ID=2”のVALUE

V$CON_SYSSTAT

1 physical rea...
V$CON_SYSSTATって…
“consistent gets” の値で確認

VIEW

CON_ID NAME

VALUE

VALUE –” CON_ID=2”のVALUE

V$CON_SYSSTAT

1 consistent ...
V$CON_SYSSTATって
• PDB$SEEDの値はコンテナ・データベース内の共通的な値のようだ。
• それぞれのPDBに重複してカウントされているように見える。
• この値を考慮して差分と合計すると、CON_ID=0の値と同じになる。
...
V$CON_SYSSTATって
• もう一度 PDBORCL2(CON_ID:4)に負荷をかけると、、、
• 今度の負荷(1000_select.pdborcl.loop.sh)かけた結果は、、、、
…画面

36
補足
• 「ダミーの負荷(@1000_select.pdborcl.loop.sql)」
負荷をかけた環境でのみ “execute count”がカウントされる

• 「今度の負荷(1000_select.pdborcl.loop.sh)」
負...
PDBのV$SYSSTATでは、、、
• 同一の処理にも拘わらず、SQLの実行方法によっては、CDB$ROOTで
確認するV$CON_SYSSTATの各PDBの統計値が異なってしまう。
• V$SYSSTATでインスタンス全体の統計値(CON_...
CDB$ROOTならSTATSPACK使えるか?…
PERFSTATスキーマでCDB$ROOTのV$SQLを確認すると各PDBのSQLの
情報は確認できない。なぜなら、CDB$ROOTでは CON_ID=1しか見えな
いから。
…..画面
CD...
各ビューで確認できるCON_IDは、、、
●各DBとユーザで確認できるビュー別のCON_ID
データベース
ビュー/ユーザ
V$SYSSTAT
V$SQL
V$WAITSTAT
V$CON_SYSSTAT

CDB$ROOT

PDB(PDBO...
STATSPACKが使えるかといえば、、、
●各DBのPERFSTATスキーマでレポートに必要な情報が取得できているか????
データベース
ビュー/ユーザ
V$SYSSTAT
V$SQL
V$WAITSTAT
V$CON_SYSSTAT

C...
Pluggable Database の STATSPACKって…
いまのところよくわからないねぇ…

42
続報 2013/11/18更新
• 各PDBへの接続がない状態では、CDB$ROOTで検索するV$CON_SYSSTATのそれぞれの
CON_ID(2,3,4,5…)は同じ値になることを確認。(※ CON_ID=1でクエリーを実行するため、CO...
続報 2013/11/18更新
CDB$ROOT@ORCL SQL> select 'v$sesstat' viewname ,a.name,sum(b.value),c.con_id
2
from v$statname a,v$sesstat...
Any Question?

@tadayima_jp
Tadashi Yamashita
45
Thank you!

@tadayima_jp
Tadashi Yamashita
46
Upcoming SlideShare
Loading in...5
×

[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き

1,324

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,324
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
21
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き"

  1. 1. 特濃JPOUG Oracle Database 12c Pluggable Database でSTATSPACKつかったらどうなるんだ ~ V$SYSSTATには要注意 ~ Japan Oracle User Group 山下 正
  2. 2. Contents • JPOUG • 今日話すこと • 検証説明 / デモ • まとめ 2
  3. 3. JPOUG Japan Oracle User Group (http://www.jpoug.org/) 活動事例: 2011年6月 2012年4月 2012年7月 2012年10月 2013年12月 2013年5月 2013年7月 2013年9月 2013年11月 2013年12月 JPOUG活動開始 Oracle OpenWorld Unconference presented by JPOUG 開催 JPOUG> SET EVENTS 20120721 Unconference at db tech showcase 2012 JPOUG Advent Calendar 2013 db tech showcase 2013 Osaka Tech Talk Night スタート JAWS FESTA Kansai 2013 db tech showcase 2013 Tokyo JPOUG Advent Calendar 2013 (http://www.zusaar.com/event/1687004) 3
  4. 4. 今日話すこと • Oracle Database 12c の Pluggable Database 環境で STATSPACK を動 かす。 • STATSPACKの結果を”素”のまま眺めるのはつらいので”ビジュアル 系”にしてみる。 • “???”を発見。 • “???”をもうちょっと深堀する。 • 無理やりまとめてみる。 4
  5. 5. 検証環境 • Oracle Database 12c ( 12.1.0 ) Enterprise Edition on Oracle Linux 6.4 64bit • Pluggable Database (Oracle Multitenant option) • STATSPACK • Oracle Application Express 4.2 5
  6. 6. 検証環境 Oracle Database 12c Container Database CDB APEX PDB$SEED APEX STATS PACK PDB (PDBORCL) APEX STATS PACK PDB (PDBORCL2) CDB$ROOT PDB (PDBORCL3) STATS PACK 6
  7. 7. 検証環境 Oracle Database 12c Container Database CON_ID=0 APEX CON_ID=2 APEX STATS PACK CON_ID=3 (PDBORCL) APEX STATS PACK CON_ID=4 (PDBORCL2) CON_ID=1 CON_ID=5 (PDBORCL3) STATS PACK 7
  8. 8. 検証環境 CDB$ROOT@ORCL SQL> select CON_ID,DBID,NAME,OPEN_MODE,OPEN_TIME from v$containers; CON_ID ---------1 2 3 4 5 DBID ---------1350188225 4064979437 2269547790 1200336578 1153988180 NAME ---------CDB$ROOT PDB$SEED PDBORCL PDBORCL2 PDBORCL3 OPEN_MODE ---------READ WRITE READ ONLY READ WRITE READ WRITE READ WRITE OPEN_TIME -----------------------------13-11-07 11:59:14.685 13-11-07 11:59:14.691 13-11-10 17:54:27.347 13-11-10 17:54:27.344 13-11-10 17:54:27.344 CDB$ROOT@ORCL SQL> CDB$ROOT@ORCL SQL> show user ユーザーは"SYS"です。 CDB$ROOT@ORCL SQL> select count(*) from gv$sessions_count; COUNT(*) ---------254 8
  9. 9. 検証環境 STATSPACK 12.1 11g との違いは?? sprepins.sql Rem Rem Rem MODIFIED shsong (MM/DD/YY) 06/29/11 - shsong 06/28/11 - Bug 12702106: display v$IOSTAT_FUNCTION_DETAIL … といっても、もともと11gから存在するビューの情報が出るようになっただけ。 他は spcreate.sql spcusr.sql spctab.sql 9
  10. 10. 検証環境 STATSPACK 12.1 ----------------------------------------------------------------------Oracle12g Server Release 12.1 Production ------------------------------------------------------------------------Copyright (c) 1993, 2012, Oracle and/or its affiliates. All rights reserved. Author: Connie Dialeris Green Contributors: Cecilia Gervasio, Graham Wood, Russell Green, Patrick Tearle, Harald Eri, Stefan Pommerenk, Vladimir Barriere, Kathryn Chou Please refer to the Oracle11g server README file in the rdbms doc directory, for copyright, disclosure, restrictions, warrant, trademark, disclaimer, and licensing information. The README file is README_RDBMS.HTM. Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065. ------------------------------------------------------------------------- 10
  11. 11. 検証環境 Oracle Application Express 4.2 「Oracle Application Express(Oracle APEX)は、Oracleデー タベース用の宣言型高速Webアプリケーション開発ツールです。 完全にサポートされた無償のオプションとして、Oracle Databaseのすべてのエディションで使用できます。」 http://www.oracle.com/technetwork/jp/developertools/apex/overview/index.html 11
  12. 12. 検証 PDBORCL2上で3パターンの処理を実行し、それ ぞれのデータベース上で確認できる統計値の現れ 方を確認する。 …画面 12
  13. 13. 検証 画面サンプル(TopN Wait Event相当) 13
  14. 14. 検証 画面サンプル(SQL ordered by XXX相当) 14
  15. 15. 検証 waitevent PDBORCL2で処理した影響を 受けて、PDBORCLで待機イベ ントのWAIT時間が上昇 PDBORCL PDBORCL2 CDB$ROOT 15
  16. 16. 検証 waitevent PDBORCL2で処理した影響を 受けて、PDBORCLで待機イベ ントのWAIT時間が上昇 PDBORCL PDBORCL2 CDB$ROOT 16
  17. 17. 中間まとめ • PDBで処理した結果はそれぞれのSTATSPACKに反映されてい る。 • コンテナ・データベースはSGAも共有リソースとしているため、 SGA関連の待機イベントは他のPDBに影響する可能性があるの で注意。 ORA-04031 とか • CDB$ROOTで確認できる統計値はすべてのPDBの統計値を包 含している。 17
  18. 18. もう一度APEXの画面確認 PDB(PDBORCL) PDB(PDBORCL2) PDBORCL2で実行し PDBORCL2で実行し た処理により た処理により execute count が上 execute count が上 昇しているケース。 昇しているケース。 PDBORCL2で実行した処理 により execute count が上 昇していないケース。 18
  19. 19. もう一度APEXの画面確認 • 処理を実行したPDB以外で “execute count” が上昇している • “execute count”はインスタンス・ワイドでカウントされる? ………………そうではないケースもある。 • CDB$ROOTで見るといずれのケースでも “execute count”が 上昇している。 …… よくわからない…… 19
  20. 20. “execute count”深堀 • Oracle Database 12c で追加された新しいビューをみる。 http://docs.oracle.com/cd/E49329_01/server.121/b71292/release_cha nges.htm#CJAJEECB • 今回は「 V$CON_SYSSTAT 」ビューをチェック 20
  21. 21. V$SYSSTATとV$CON_SYSSTAT CDB$ROOT@ORCL SQL> desc v$sysstat 名前 NULL? ----------------------------- -------STATISTIC# NAME CLASS VALUE STAT_ID CON_ID 型 --------------NUMBER VARCHAR2(64) NUMBER NUMBER NUMBER NUMBER CDB$ROOT@ORCL SQL> desc v$con_sysstat 名前 NULL? ----------------------------- -------STATISTIC# NAME CLASS VALUE STAT_ID CON_ID 型 --------------NUMBER VARCHAR2(64) NUMBER NUMBER NUMBER NUMBER おなじ 21
  22. 22. CON_IDって… <V$SYSSTAT から抜粋 > CON_ID NUMBER データが関係するコンテナのID。 可能な値は次のとおり。 0: この値は、CDB全体に関連するデータを含む行に使用される。この値は、非CDB内の行にも使用される 1: この値は、ルートのみに関連するデータを含む行に使用される n: nは、データを含む行に適用されるコンテナID Oracle Databaseリファレンス 12c リリース1 (12.1) B71292-01 http://docs.oracle.com/cd/E49329_01/server.121/b71292/refrn30272.htm#i1420473 <V$CON_SYSSTAT から抜粋 > CON_ID NUMBER CDB以外から問合せが行われた場合は、そのインスタンスの統計情報が返され、 CON_ID値が0に設定されます。 CDBのルートから問合せが行われた場合は、各コンテナの統計情報が返され、CON_ID値はその統計情報 に対応するコンテナを示します。 PDBから問合せが行われた場合は、そのPDBの統計情報が返され、CON_ID値がそのPDBのコンテナIDに 設定されます。 Oracle Databaseリファレンス 12c リリース1 (12.1) B71292-01 http://docs.oracle.com/cd/E49329_01/server.121/b71292/refrn30716.htm#I1030716 22
  23. 23. V$SYSSTATとV$CON_SYSSTAT ●各データベース内でV$SYSSTATを参照した時のCON_ID データベース CON_ID 参照時のユーザがSYSの 場合のV$SYSSTATの CON_ID 参照時のユーザがPERFSTAT の場合のV$SYSSTATの CON_ID CDB$ROOT 1 0 0 PDB(PDBORCL) 3 3 3 - CDB$ROOTで確認できるのは、コンテナ・データベース全体の統計値 - 各PDBではPDB内の統計情報が参照可能 - CDB$ROOTでは、自分(CON_ID=1)だけの統計値を見ることができない 23
  24. 24. V$SYSSTATとV$CON_SYSSTAT ●さらに、各データベース内でV$CON_SYSSTATを参照した時のCON_ID データベース V$SYSSTATのCON_ID V$CON_SYSSTATのCON_ID CON_ID SYS PERFSTAT SYS PERFSTAT CDB$ROOT 1 0 0 1,2,3,4,5 1 PDB(PDBORCL) 3 3 3 3 3 - V$CON_SYSSTAT をつかうと CDB$ROOTでコンテナ・データベース内の個々の統計値をすべて参照可能 - V$CON_SYSSTATを使っても各PDBではPDB内の統計情報だけが参照可能 24
  25. 25. V$SYSSTATとV$CON_SYSSTAT ●さらに、各データベース内でV$CON_SYSSTATを参照した時のCON_ID データベース V$SYSSTATのCON_ID V$CON_SYSSTATのCON_ID CON_ID SYS PERFSTAT SYS PERFSTAT CDB$ROOT 1 0 0 1,2,3,4,5 1 PDB(PDBORCL) 3 3 3 3 3 PDB(PDBORCL2) 4 4 4 4 4 - V$CON_SYSSTAT をつかうと CDB$ROOTでコンテナ・データベース内の個々の統計値をすべて参照可能 - V$CON_SYSSTATを使っても各PDBではPDB内の統計情報だけが参照可能 25
  26. 26. V$CON_SYSSTATって… CDB$ROOT@ORCL SQL> select * from v$con_sysstat where name = 'execute count' STATISTIC# NAME CLASS VALUE STAT_ID CON_ID ---------- -------------------- ---------- ---------- ---------- ---------3890 execute count 64 16268331 2453370665 1 3891 execute count 64 14966176 2453370665 2 3892 execute count 64 14966689 2453370665 3 3893 execute count 64 14966659 2453370665 4 3894 execute count 64 14966176 2453370665 5 26
  27. 27. V$CON_SYSSTATって… CDB$ROOT@ORCL SQL> select * from v$con_sysstat where name = 'execute count' 2 union all 3 select * from v$sysstat where name = 'execute count'; STATISTIC# NAME CLASS VALUE STAT_ID CON_ID ---------- -------------------- ---------- ---------- ---------- ---------3890 execute count 64 16268331 2453370665 1 3891 execute count 64 14966176 2453370665 2 3892 execute count 64 14966689 2453370665 3 3893 execute count 64 14966659 2453370665 4 3894 execute count 64 14966176 2453370665 5 778 execute count 64 16269327 2453370665 0 27
  28. 28. V$CON_SYSSTATって… • V$CON_SYSSTAT の縦横を変換して差分計算する。 • ダミーの負荷(@1000_select.pdborcl.loop.sql)かけた結果は、、、、 …..画面 28
  29. 29. V$CON_SYSSTATって… CDB$ROOT@ORCL SQL> select * from v$con_sysstat where name = 'execute count' 2 union all 3 select * from v$sysstat where name = 'execute count'; STATISTIC# NAME CLASS VALUE STAT_ID CON_ID ---------- -------------------- ---------- ---------- ---------- ---------3890 execute count 64 16268331 2453370665 1 3891 execute count 64 14966176 2453370665 2 3892 execute count 64 14966689 2453370665 3 3893 execute count 64 14966659 2453370665 4 3894 execute count 64 14966176 2453370665 5 778 execute count 64 16269327 2453370665 0 29
  30. 30. V$CON_SYSSTATって… execute count ※イメージです CDB$ROOT@ORCL SQL> select * from v$con_sysstat where name = 'execute count' CON_ID=1,3,4はアクティ 2 union all ビティーがあるPDB 3 select * from v$sysstat where name = 'execute count'; STATISTIC# NAME CLASS VALUE CON_ID=2,5はアクティビ ティーがないPDB STAT_IDかつ、execute count の値が CON_ID 同じ!? ---------- -------------------- ---------- ---------- ---------- ---------3890 execute count 64 16268331 2453370665 1 3891 execute count 64 14966176 2453370665 2 3892 execute count 64 14966689 2453370665 3 3893 execute count 64 14966659 2453370665 4 3894 execute count CON_ID=0 CON_ID=1 778 execute count CON_ID=2 64 CON_ID=3 14966176 2453370665 CON_ID=4 CON_ID=5 5 64 0 execute count 16269327 2453370665 30
  31. 31. V$CON_SYSSTATって… ※イメージです CDB$ROOT@ORCL SQL> select * from v$con_sysstat where name = 'execute count' 2 union all 3 CON_ID=2(PDB$SEED)の値をベースライ ンとして、その差分を合計すると、 select * from v$sysstat where name = 'execute count'; V$SYSSTATで検索した execute count (CON_ID=0)の値と一致する。 STATISTIC# NAME CLASS VALUE STAT_ID CON_ID ---------- -------------------- ---------- ---------- ---------- ---------3890 execute count 64 16268331 2453370665 1 3891 execute count 64 14966176 2453370665 2 3892 execute count 64 14966689 2453370665 3 3893 execute count 64 14966659 2453370665 4 3894 execute count CON_ID=0 CON_ID=1 execute count 778 execute count CON_ID=2 execute count2 64 CON_ID=3 14966176 2453370665 CON_ID=4 CON_ID=5 5 64 0 execute count3 execute count4 execute count5 16269327 2453370665 31
  32. 32. V$CON_SYSSTATって… “execute count” の値で確認 VIEW CON_ID NAME VALUE VALUE –” CON_ID=2”のVALUE V$CON_SYSSTAT 1 execute count 16527933 1312820 V$CON_SYSSTAT 2 execute count 15215113 0 V$CON_SYSSTAT 3 execute count 15215795 682 V$CON_SYSSTAT 4 execute count 15215581 468 V$CON_SYSSTAT 5 execute count 15215113 0 sum V$SYSSTAT 0 execute count 16529083 + con_id=2のVALUE 1313970 16529083 32
  33. 33. V$CON_SYSSTATって… “physical reads” の値で確認 VIEW CON_ID NAME VALUE VALUE –” CON_ID=2”のVALUE V$CON_SYSSTAT 1 physical reads 13045097 446076 V$CON_SYSSTAT 2 physical reads 12599021 0 V$CON_SYSSTAT 3 physical reads 12599273 252 V$CON_SYSSTAT 4 physical reads 12599155 134 V$CON_SYSSTAT 5 physical reads 12599021 0 sum V$SYSSTAT 0 physical reads 13045483 + con_id=2のVALUE 446462 13045483 33
  34. 34. V$CON_SYSSTATって… “consistent gets” の値で確認 VIEW CON_ID NAME VALUE VALUE –” CON_ID=2”のVALUE V$CON_SYSSTAT 1 consistent gets 98434084 4972139 V$CON_SYSSTAT 2 consistent gets 93461945 0 V$CON_SYSSTAT 3 consistent gets 93464277 2332 V$CON_SYSSTAT 4 consistent gets 93463505 1560 V$CON_SYSSTAT 5 consistent gets 93461945 0 sum V$SYSSTAT 0 consistent gets 98437976 + con_id=2のVALUE 4976031 98437976 34
  35. 35. V$CON_SYSSTATって • PDB$SEEDの値はコンテナ・データベース内の共通的な値のようだ。 • それぞれのPDBに重複してカウントされているように見える。 • この値を考慮して差分と合計すると、CON_ID=0の値と同じになる。 • 各PDBの差分の値を利用することで、PDB個別のアクティビティを把 握することができるのではないか。 35
  36. 36. V$CON_SYSSTATって • もう一度 PDBORCL2(CON_ID:4)に負荷をかけると、、、 • 今度の負荷(1000_select.pdborcl.loop.sh)かけた結果は、、、、 …画面 36
  37. 37. 補足 • 「ダミーの負荷(@1000_select.pdborcl.loop.sql)」 負荷をかけた環境でのみ “execute count”がカウントされる • 「今度の負荷(1000_select.pdborcl.loop.sh)」 負荷をかけた環境以外でも “execute count”がカウントされる • 上記より、同じ処理でも実行方法の違いにより、”execute count”の値が異なって 表示されることがある事象を確認。 • つまり、PDBのV$SYSSTATから得られる execute count の値は従来と同じような (期待した通りの)値を示さない場合がある。 ※ ここでは “期待した通り”とは、「あるPDBで実行したSQLの実行回数は、そのPDBのみの”execute count”としてカウントされること」としています。 37
  38. 38. PDBのV$SYSSTATでは、、、 • 同一の処理にも拘わらず、SQLの実行方法によっては、CDB$ROOTで 確認するV$CON_SYSSTATの各PDBの統計値が異なってしまう。 • V$SYSSTATでインスタンス全体の統計値(CON_ID:0)が確認できれば、 STATSPACKを利用する分には問題ないだろうか。 38
  39. 39. CDB$ROOTならSTATSPACK使えるか?… PERFSTATスキーマでCDB$ROOTのV$SQLを確認すると各PDBのSQLの 情報は確認できない。なぜなら、CDB$ROOTでは CON_ID=1しか見えな いから。 …..画面 CDB$ROOT@ORCL SQL> show user ユーザーは"PERFSTAT"です。 CDB$ROOT@ORCL SQL> show con_id CON_ID -----------------------------1 CDB$ROOT@ORCL SQL> show con_name CON_NAME -----------------------------CDB$ROOT CDB$ROOT@ORCL SQL> select distinct con_id from v$sql; CON_ID ---------1 CDB$ROOT@ORCL SQL> select distinct con_id from v$sqlarea; CON_ID ---------1 39
  40. 40. 各ビューで確認できるCON_IDは、、、 ●各DBとユーザで確認できるビュー別のCON_ID データベース ビュー/ユーザ V$SYSSTAT V$SQL V$WAITSTAT V$CON_SYSSTAT CDB$ROOT PDB(PDBORCL) SYS PERFSTAT SYS PERFSTAT 0 0 3 3 1,2,3,4,5 1 3 3 1 1 3 3 1,2,3,4,5 1 3 3 40
  41. 41. STATSPACKが使えるかといえば、、、 ●各DBのPERFSTATスキーマでレポートに必要な情報が取得できているか???? データベース ビュー/ユーザ V$SYSSTAT V$SQL V$WAITSTAT V$CON_SYSSTAT CDB$ROOT PDB(PDBORCL) SYS PERFSTAT SYS 0 0 ○ 3 1,2,3,4,5 1 1,2,3,4,5 CDB$ROOTのPERFSTATでは、CON_ID=1 のデータしか確認することができない。 つまり、コンテナ・データベース全体の 統計値を扱うことができないため、 STATSPACKレポートとしてはデータがた りない??? 1 × 1 × 1 × 3 3 3 PERFSTAT 3 × 3 ○ 3 ○ 3 × 各PDBのPERFSTATで確認できるV$SYSSTAT/V$CON_SYSSTAT の値は、SQLの実行方法によっては、別のPDBの統計値が 含まれてしまう場合があり、正確性に欠ける。 つまり、PDB個別の統計値を扱うことができないため、個別 のPDBを評価するためのSTATSPACKレポートとしては??? 41
  42. 42. Pluggable Database の STATSPACKって… いまのところよくわからないねぇ… 42
  43. 43. 続報 2013/11/18更新 • 各PDBへの接続がない状態では、CDB$ROOTで検索するV$CON_SYSSTATのそれぞれの CON_ID(2,3,4,5…)は同じ値になることを確認。(※ CON_ID=1でクエリーを実行するため、CON_ID=1の値は異なる) • 各PDBのセッション別の統計値を合計した値と、V$CON_SYSSTAT の各CON_IDの統計値 からCON_ID=2の統計値を差し引いた値が同じ値になることを確認。 • つまり、V$CON_SYSSTATの値は、V$SESSTATの値から導出(sum(value))されていると考 えられる。 • V$SESSSTATは該当セッションが切断されると、当然検索できなくなるが、このタイミング で、V$CON_SYSSTATの自身以外のCON_IDに切断されたセッション分の統計値が加算さ れているように見える。 • 各PDBのV$CON_SYSSTATの値は、自身のPDBで検索できるV$SYSSTATの値と同じである ため、上記の動作からV$SYSSTATにはほかのPDBの統計値が反映されていると考えら れる。 • よって、各PDBのSTATSPACKには別のPDBの統計情報が反映されていると考えられるた め、純粋に対象のPDBのみを分析する目的としては不向きではないだろうか。 43
  44. 44. 続報 2013/11/18更新 CDB$ROOT@ORCL SQL> select 'v$sesstat' viewname ,a.name,sum(b.value),c.con_id 2 from v$statname a,v$sesstat b,v$session c 3 where a.statistic# = b.statistic# 4 and a.name ='execute count' VIEWNAME NAME SUM(B.VALUE) CON_ID 5 and b.sid = c.sid ------------- ------------------ ------------ ---------6 and c.con_id = 3 v$sesstat execute count 722 3 v$con_sysstat execute count 52860484 1 7 group by a.name,c.con_id v$con_sysstat execute count 50340943 2 8 union all v$con_sysstat execute count 50341665 3 9 select 'v$con_sysstat' viewname, name,value,con_id v$con_sysstat execute count 50340943 4 10 from v$con_sysstat v$con_sysstat execute count 50340943 5 11 where name = 'execute count' v$sysstat execute count 52861206 0 12 union all 7行が選択されました。 13 select 'v$sysstat' viewname, name ,value,con_id 14 from v$sysstat CDB$ROOT@ORCL SQL> / 15 where name = 'execute count' 16 / VIEWNAME NAME SUM(B.VALUE) CON_ID ------------v$con_sysstat v$con_sysstat v$con_sysstat v$con_sysstat v$con_sysstat v$sysstat ------------------ ------------ ---------execute count 52862201 1 execute count 50341695 2 execute count 50341695 3 execute count 50341695 4 execute count 50341695 5 execute count 52862201 0 6行が選択されました。 50341665(CON_ID:3) - 50340943(CON_ID:2) ---------------722 この間にCON_ID=3 のセッションを切断 CON_ID2~5まで全部同 じ値。よって、CON_ID=1 の値も、CON_ID=0の値 と同じ。 44
  45. 45. Any Question? @tadayima_jp Tadashi Yamashita 45
  46. 46. Thank you! @tadayima_jp Tadashi Yamashita 46
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×