0
潮溜まりでジャブジャブ、
SQLチューニング

Rock Pool / Michael

Hiroshi Sekiguchi ( @discus_hamburg )
13年11月16日土曜日
自己紹介

@discus_hamburg

関口 裕士 (屋号 Stargrass Software)
最近の仕事 : Software Engineer < DB Engineer
最近は医者のような問診に興味を持っている
JPOUG ボー...
皆が、Deep   dive、Deep   diveというの
で、Oracle   Coreの深い海ではなく沢⼭山
のSQL⽂文が泳ぐ浅瀬へShallow   Diveす
ることに決めた天の邪⻤⿁鬼。

13年11月16日土曜日
潮溜溜まりに取り残された、⼀一癖ありそう
なSQL⽂文を釣り上げてみると...
いろいろな病に苦しんでいた。
治療療できたのか、治療療できなかったの
か...

13年11月16日土曜日
釣り上げたSQL文の病名
過フィルタリング症候群
クエリー分裂症
バッファキャッシュ欠乏症
参照整合性制約アレルギー

13年11月16日土曜日
過フィルタリング症候群

13年11月16日土曜日
ウォームアップ!

13年11月16日土曜日
クエリー分裂症

13年11月16日土曜日
釣り上げたSQLは、一匹で
あるかのように見えるが...
散らばっている情報が治療
を難しくする...
13年11月16日土曜日
問診結果
OLTPで分散クエリーを利用している。(分散DB)
OLTPなので大きなクエリーではないものの非機能要
件が厳しいので可能な限り改善したい。
大人の事情により、SQL文だけしか変更できない。
(・・)

13年11月16日土曜日
分散クエリーとリモートクエリー

どのような
クエリーなのでしょう?

13年11月16日土曜日
分散クエリー

13年11月16日土曜日
リモートクエリー

13年11月16日土曜日
釣り上げたSQL文
SELECT
	
  	
  	
  	
  	
  	
  	
  	
  /*+	
  USE_NL(tab1	
  tab2	
  tab3	
  tab4)	
  */
	
  	
  	
  	
  	
  	
 ...
釣り上げたSQL文 (実行計画)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐...
釣り上げたSQL文 (実行計画)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐...
釣り上げたSQL文 (DB Link..)
●USER_DB_LINKSより
DB_LINK	
  	
  	
  	
  USERNAME	
  	
  	
  HOST
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  -...
釣り上げたSQL文 (DB Link..)
●USER_DB_LINKSより
DB_LINK	
  	
  	
  	
  USERNAME	
  	
  	
  HOST
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  -...
釣り上げたSQL文 (表の配置)

13年11月16日土曜日
釣り上げたSQL文 (表の配置)
リモート表の3
表は同一インスタ
ンスにある

問題のSQL文は
このインスタンス
から実行される。
13年11月16日土曜日
釣り上げたSQL文 (実行計画)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐...
釣り上げたSQL文 (実行計画)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐...
リモートクエリーの実行計画
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-...
リモートクエリーの実行計画
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-...
リモートクエリーの
実行計画①
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­...
リモートクエリーの
実行計画①
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­...
リモートクエリーの
実行計画②
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­...
リモートクエリーの
実行計画②
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­...
リモートクエリーの
実行計画③
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­...
リモートクエリーの
実行計画③
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­...
リモートクエリーの分析結果
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐...
リモートクエリーの分析結果
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐...
改善できそうな箇所
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-...
改善できそうな箇所
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-...
治療方針

3つのリモートクエリーを
インラインビューにまとめ
ることで、1つのリモート
クエリーとして効率化を狙
う

SELECT
	
  	
  	
  	
  /*+	
  USE_NL(t01	
  tab4)	
  */
	
  	...
DEMO

13年11月16日土曜日
治療後の実行計画(ローカル)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­...
治療後の実行計画(リモート)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­...
治療効果の確認

Elapsed TIme

Before
After
13年11月16日土曜日
治療完!
釣ったSQL文はリリース

13年11月16日土曜日
治療完!
釣ったSQL文はリリース
分散クエリーをチューニングする
スキルを手に入れた。:)

13年11月16日土曜日
Oracle® Database管理者ガイド 12c リリース1 (12.1)
分散問合せのチューニング

http://docs.oracle.com/cd/E49329_01/server.
121/b71301/ds_appdev.htm...
バッファキャッシュ欠乏症

13年11月16日土曜日
釣り上げたSQLは、バッフ
ァキャッシュが足りなくて
息も絶え絶え...ほとんどが
User I/O待機...治療法は...
13年11月16日土曜日
問診結果
開口一番、予算はほぼないが小手先でなにか対処で
きない?
UPDATE文をループ処理内で繰り返し発行している
(ループ処理は大人の事情により一括化できない)
ストレージは非力で遅い
処理対象表のデータは増加しつづける
OracleはS...
精密検査(コード)
DECLARE
	
  	
  	
  	
  CURSOR	
  cs_foobar	
  IS
	
  	
  	
  	
  	
  	
  	
  	
  SELECT
	
  	
  	
  	
  	
  	
 ...
精密検査(コード)
DECLARE
	
  	
  	
  	
  CURSOR	
  cs_foobar	
  IS
	
  	
  	
  	
  	
  	
  	
  	
  SELECT
	
  	
  	
  	
  	
  	
 ...
精密検査(統計情報)
USER_INDEXESより
TABLE_NAME
INDEX_NAME
NUM_ROWS
DISTINCT_KEYS CLUSTERING_FACTOR
-------------- --------------- --...
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング
Upcoming SlideShare
Loading in...5
×

db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング

4,859

Published on

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

No Downloads
Views
Total Views
4,859
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
23
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

Transcript of "db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング"

  1. 1. 潮溜まりでジャブジャブ、 SQLチューニング Rock Pool / Michael Hiroshi Sekiguchi ( @discus_hamburg ) 13年11月16日土曜日
  2. 2. 自己紹介 @discus_hamburg 関口 裕士 (屋号 Stargrass Software) 最近の仕事 : Software Engineer < DB Engineer 最近は医者のような問診に興味を持っている JPOUG ボードメンバー Oracle ACE (2012) Blog : Mac De Oracle / http://discus-hamburg.cocolog-nifty.com 13年11月16日土曜日
  3. 3. 皆が、Deep   dive、Deep   diveというの で、Oracle   Coreの深い海ではなく沢⼭山 のSQL⽂文が泳ぐ浅瀬へShallow   Diveす ることに決めた天の邪⻤⿁鬼。 13年11月16日土曜日
  4. 4. 潮溜溜まりに取り残された、⼀一癖ありそう なSQL⽂文を釣り上げてみると... いろいろな病に苦しんでいた。 治療療できたのか、治療療できなかったの か... 13年11月16日土曜日
  5. 5. 釣り上げたSQL文の病名 過フィルタリング症候群 クエリー分裂症 バッファキャッシュ欠乏症 参照整合性制約アレルギー 13年11月16日土曜日
  6. 6. 過フィルタリング症候群 13年11月16日土曜日
  7. 7. ウォームアップ! 13年11月16日土曜日
  8. 8. クエリー分裂症 13年11月16日土曜日
  9. 9. 釣り上げたSQLは、一匹で あるかのように見えるが... 散らばっている情報が治療 を難しくする... 13年11月16日土曜日
  10. 10. 問診結果 OLTPで分散クエリーを利用している。(分散DB) OLTPなので大きなクエリーではないものの非機能要 件が厳しいので可能な限り改善したい。 大人の事情により、SQL文だけしか変更できない。 (・・) 13年11月16日土曜日
  11. 11. 分散クエリーとリモートクエリー どのような クエリーなのでしょう? 13年11月16日土曜日
  12. 12. 分散クエリー 13年11月16日土曜日
  13. 13. リモートクエリー 13年11月16日土曜日
  14. 14. 釣り上げたSQL文 SELECT                /*+  USE_NL(tab1  tab2  tab3  tab4)  */                tab4.* FROM                tab1                INNER  JOIN  tab2                ON                                tab1.unique#  =  tab2.unique#                  AND  tab1.unique#  IN  (1,2)                INNER  JOIN  tab3                ON                                tab2.unique#  =  tab3.unique#                  AND  tab2.branch#  =  tab3.branch#                INNER  JOIN  tab4                ON                                tab3.unique#  =  tab4.unique#                  AND  tab3.branch#  =  tab4.branch#                AND  tab3.loc#        =  tab4.loc# ; 13年11月16日土曜日
  15. 15. 釣り上げたSQL文 (実行計画) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) 13年11月16日土曜日
  16. 16. 釣り上げたSQL文 (実行計画) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) 13年11月16日土曜日
  17. 17. 釣り上げたSQL文 (DB Link..) ●USER_DB_LINKSより DB_LINK        USERNAME      HOST -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ PDBORCL_R    SCOTT            PDBORCL_R ●USER_SYNONYMSより SYNONYM_NAME                  TABLE_NAME      DB_LINK -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ TAB1                                  TAB1                  PDBORCL_R TAB2                                  TAB2                  PDBORCL_R TAB3                                  TAB3                  PDBORCL_R 13年11月16日土曜日
  18. 18. 釣り上げたSQL文 (DB Link..) ●USER_DB_LINKSより DB_LINK        USERNAME      HOST -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ PDBORCL_R    SCOTT            PDBORCL_R DB Link先は1つで 3表が同一リモートデ ータベースに存在する ●USER_SYNONYMSより SYNONYM_NAME                  TABLE_NAME      DB_LINK -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ TAB1                                  TAB1                  PDBORCL_R TAB2                                  TAB2                  PDBORCL_R TAB3                                  TAB3                  PDBORCL_R 13年11月16日土曜日
  19. 19. 釣り上げたSQL文 (表の配置) 13年11月16日土曜日
  20. 20. 釣り上げたSQL文 (表の配置) リモート表の3 表は同一インスタ ンスにある 問題のSQL文は このインスタンス から実行される。 13年11月16日土曜日
  21. 21. 釣り上げたSQL文 (実行計画) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) 13年11月16日土曜日
  22. 22. 釣り上げたSQL文 (実行計画) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ この実行計画はローカルデー      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) タベースで取得されたもの 13年11月16日土曜日
  23. 23. リモートクエリーの実行計画 Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      5  -­‐  SELECT  /*+  USE_NL  ("TAB3")  */  "UNIQUE#","BRANCH#"              ,"LOC#"  FROM  "TAB3"  "TAB3"  WHERE              "UNIQUE#"=1  OR  "UNIQUE#"=2  (accessing  'PDBORCL_R'  )      6  -­‐  SELECT  /*+  USE_NL  ("TAB2")  */  "UNIQUE#","BRANCH#"                  FROM  "TAB2"  "TAB2"  WHERE  "BRANCH#"=:1                AND  "UNIQUE#"=:2  AND  ("UNIQUE#"=1  OR  "UNIQUE#"=2)                  (accessing  'PDBORCL_R'  )      7  -­‐  SELECT  /*+  USE_NL  ("TAB1")  */  "UNIQUE#"                  FROM  "TAB1"  "TAB1"  WHERE  "UNIQUE#"=:1  AND                ("UNIQUE#"=1  OR  "UNIQUE#"=2)  (accessing  'PDBORCL_R'  ) explain plan文などでオプティマイザーが 切り出したリモートクエリーを確認 13年11月16日土曜日
  24. 24. リモートクエリーの実行計画 Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      5  -­‐  SELECT  /*+  USE_NL  ("TAB3")  */  "UNIQUE#","BRANCH#"              ,"LOC#"  FROM  "TAB3"  "TAB3"  WHERE              "UNIQUE#"=1  OR  "UNIQUE#"=2  (accessing  'PDBORCL_R'  )      6  -­‐  SELECT  /*+  USE_NL  ("TAB2")  */  "UNIQUE#","BRANCH#"                  FROM  "TAB2"  "TAB2"  WHERE  "BRANCH#"=:1                AND  "UNIQUE#"=:2  AND  ("UNIQUE#"=1  OR  "UNIQUE#"=2)                  (accessing  'PDBORCL_R'  )      7  -­‐  SELECT  /*+  USE_NL  ("TAB1")  */  "UNIQUE#"                  FROM  "TAB1"  "TAB1"  WHERE  "UNIQUE#"=:1  AND                ("UNIQUE#"=1  OR  "UNIQUE#"=2)  (accessing  'PDBORCL_R'  ) これらのSQL文はリモートデータベースで実 行されるため、実行計画はリモートデータベ ース上で確認する必要がある。 13年11月16日土曜日
  25. 25. リモートクエリーの 実行計画① Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      5  -­‐  SELECT  /*+  USE_NL  ("TAB3")  */  "UNIQUE#","BRANCH#"              ,"LOC#"  FROM  "TAB3"  "TAB3"  WHERE              "UNIQUE#"=1  OR  "UNIQUE#"=2  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                  |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT    |                  |      200  |    2000  |          3      (0)|  00:00:01  | |      1  |    INLIST  ITERATOR    |                  |              |              |                        |                    | |*    2  |      INDEX  RANGE  SCAN|  PK_TAB3  |      200  |    2000  |          3      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 13年11月16日土曜日
  26. 26. リモートクエリーの 実行計画① Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      5  -­‐  SELECT  /*+  USE_NL  ("TAB3")  */  "UNIQUE#","BRANCH#"              ,"LOC#"  FROM  "TAB3"  "TAB3"  WHERE              "UNIQUE#"=1  OR  "UNIQUE#"=2  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                  |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT    |                  |      200  |    2000  |          3      (0)|  00:00:01  | |      1  |    INLIST  ITERATOR    |                  |              |              |                        |                    | |*    2  |      INDEX  RANGE  SCAN|  PK_TAB3  |      200  |    2000  |          3      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ チューニングが必要だとは 思えない... 13年11月16日土曜日
  27. 27. リモートクエリーの 実行計画② Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐        6  -­‐  SELECT  /*+  USE_NL  ("TAB2")  */  "UNIQUE#","BRANCH#"                  FROM  "TAB2"  "TAB2"  WHERE  "BRANCH#"=:1                AND  "UNIQUE#"=:2  AND  ("UNIQUE#"=1  OR  "UNIQUE#"=2)                  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          7  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB2  |          1  |          7  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 13年11月16日土曜日
  28. 28. リモートクエリーの 実行計画② Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐        6  -­‐  SELECT  /*+  USE_NL  ("TAB2")  */  "UNIQUE#","BRANCH#"                  FROM  "TAB2"  "TAB2"  WHERE  "BRANCH#"=:1                AND  "UNIQUE#"=:2  AND  ("UNIQUE#"=1  OR  "UNIQUE#"=2)                  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          7  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB2  |          1  |          7  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ チューニングが必要だとは 思えない... 13年11月16日土曜日
  29. 29. リモートクエリーの 実行計画③ Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐    7  -­‐  SELECT  /*+  USE_NL  ("TAB1")  */  "UNIQUE#"                  FROM  "TAB1"  "TAB1"  WHERE  "UNIQUE#"=:1  AND                ("UNIQUE#"=1  OR  "UNIQUE#"=2)  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          4  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB1  |          1  |          4  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 13年11月16日土曜日
  30. 30. リモートクエリーの 実行計画③ Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐    7  -­‐  SELECT  /*+  USE_NL  ("TAB1")  */  "UNIQUE#"                  FROM  "TAB1"  "TAB1"  WHERE  "UNIQUE#"=:1  AND                ("UNIQUE#"=1  OR  "UNIQUE#"=2)  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          4  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB1  |          1  |          4  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ チューニングが必要だとは 思えない... 13年11月16日土曜日
  31. 31. リモートクエリーの分析結果 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                  |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT    |                  |      200  |    2000  |          3      (0)|  00:00:01  | |      1  |    INLIST  ITERATOR    |                  |              |              |                        |                    | |*    2  |      INDEX  RANGE  SCAN|  PK_TAB3  |      200  |    2000  |          3      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          7  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB2  |          1  |          7  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          4  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB1  |          1  |          4  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 13年11月16日土曜日
  32. 32. リモートクエリーの分析結果 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                  |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT    |                  |      200  |    2000  |          3      (0)|  00:00:01  | |      1  |    INLIST  ITERATOR    |                  |              |              |                        |                    | |*    2  |      INDEX  RANGE  SCAN|  PK_TAB3  |      200  |    2000  |          3      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          7  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB2  |          1  |          7  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | 3本のリモートクエリは個別は、個別に発行 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ されており、実行計画は単純であり、SQL文 |      0  |  SELECT  STATEMENT      |                  |          1  |          4  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | 単体ではチューニングが必要という状態には |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB1  |          1  |          4  |          1      (0)|  00:00:01  | ない.... -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ ほかにチューニング可能な箇所はないか....... 13年11月16日土曜日
  33. 33. 改善できそうな箇所 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) 13年11月16日土曜日
  34. 34. 改善できそうな箇所 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 3つのリモートクエリーをDB Linkを介して ネットワーク越しにNested Loop結合を行っ      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND ている。                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) この部分をすべてリモートデータベース内で 完結させれば、多少の効率改善になるのでは ないか.... 13年11月16日土曜日
  35. 35. 治療方針 3つのリモートクエリーを インラインビューにまとめ ることで、1つのリモート クエリーとして効率化を狙 う SELECT        /*+  USE_NL(t01  tab4)  */        tab4.* FROM        (                SELECT                        /*+  NO_MERGE  */                        tab3.unique#                        ,tab3.branch#                        ,tab3.loc#                FROM                        tab1                        INNER  JOIN  tab2                        ON                                tab1.unique#  =  tab2.unique#  AND  tab1.unique#  IN  (1,2)                        INNER  JOIN  tab3                        ON                                tab2.unique#  =  tab3.unique#  AND  tab2.branch#  =  tab3.branch#        )  t01        INNER  JOIN  tab4        ON                t01.unique#  =  tab4.unique#  AND  t01.branch#  =  tab4.branch#        AND  t01.loc#        =  tab4.loc# ; 13年11月16日土曜日
  36. 36. DEMO 13年11月16日土曜日
  37. 37. 治療後の実行計画(ローカル) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        10M|    2004      (1)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        10M|    2004      (1)|  00:00:01  |                |            | |      3  |        VIEW                                            |                  |      200  |    7800  |          3      (0)|  00:00:01  |                |            | |      4  |          REMOTE                                      |                  |              |              |                        |                    |  PDBOR~  |  R-­‐>S  | |*    5  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |      100  |              |          2      (0)|  00:00:01  |                |            | |      6  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |        10      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      5  -­‐  access("T01"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "T01"."BRANCH#"="TAB4"."BRANCH#"  AND                            "T01"."LOC#"="TAB4"."LOC#") Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      4  -­‐  EXPLAIN  PLAN  SET  STATEMENT_ID='PLUS8440309'  INTO  PLAN_TABLE@!  FOR  SELECT  /*+  NO_MERGE  */              "A1"."UNIQUE#","A1"."BRANCH#","A1"."LOC#"  FROM  "TAB1"  "A3","TAB2"  "A2","TAB3"  "A1"  WHERE              "A2"."UNIQUE#"="A1"."UNIQUE#"  AND  "A2"."BRANCH#"="A1"."BRANCH#"  AND              "A3"."UNIQUE#"="A2"."UNIQUE#"  AND  ("A3"."UNIQUE#"=1  OR  "A3"."UNIQUE#"=2)  AND  ("A2"."UNIQUE#"=1              OR  "A2"."UNIQUE#"=2)  AND  ("A1"."UNIQUE#"=1  OR  "A1"."UNIQUE#"=2)  (accessing  'PDBORCL_R'  ) 13年11月16日土曜日
  38. 38. 治療後の実行計画(リモート) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                      |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT        |                  |        20  |      420  |          3      (0)|  00:00:01  | |      1  |    NESTED  LOOPS              |                  |        20  |      420  |          3      (0)|  00:00:01  | |      2  |      NESTED  LOOPS            |                  |        20  |      340  |          3      (0)|  00:00:01  | |      3  |        INLIST  ITERATOR    |                  |              |              |                        |                    | |*    4  |          INDEX  RANGE  SCAN|  PK_TAB3  |      200  |    2000  |          3      (0)|  00:00:01  | |*    5  |        INDEX  UNIQUE  SCAN|  PK_TAB2  |          1  |          7  |          0      (0)|  00:00:01  | |*    6  |      INDEX  UNIQUE  SCAN  |  PK_TAB1  |          1  |          4  |          0      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      4  -­‐  access("A1"."UNIQUE#"=1  OR  "A1"."UNIQUE#"=2)      5  -­‐  access("A2"."UNIQUE#"="A1"."UNIQUE#"  AND                            "A2"."BRANCH#"="A1"."BRANCH#")              filter("A2"."UNIQUE#"=1  OR  "A2"."UNIQUE#"=2)      6  -­‐  access("A3"."UNIQUE#"="A2"."UNIQUE#")              filter("A3"."UNIQUE#"=1  OR  "A3"."UNIQUE#"=2) 13年11月16日土曜日
  39. 39. 治療効果の確認 Elapsed TIme Before After 13年11月16日土曜日
  40. 40. 治療完! 釣ったSQL文はリリース 13年11月16日土曜日
  41. 41. 治療完! 釣ったSQL文はリリース 分散クエリーをチューニングする スキルを手に入れた。:) 13年11月16日土曜日
  42. 42. Oracle® Database管理者ガイド 12c リリース1 (12.1) 分散問合せのチューニング http://docs.oracle.com/cd/E49329_01/server. 121/b71301/ds_appdev.htm#i1007640 13年11月16日土曜日
  43. 43. バッファキャッシュ欠乏症 13年11月16日土曜日
  44. 44. 釣り上げたSQLは、バッフ ァキャッシュが足りなくて 息も絶え絶え...ほとんどが User I/O待機...治療法は... 13年11月16日土曜日
  45. 45. 問診結果 開口一番、予算はほぼないが小手先でなにか対処で きない? UPDATE文をループ処理内で繰り返し発行している (ループ処理は大人の事情により一括化できない) ストレージは非力で遅い 処理対象表のデータは増加しつづける OracleはStandard Edition 年々というより毎月処理速度が劣化している etc... 13年11月16日土曜日
  46. 46. 精密検査(コード) DECLARE        CURSOR  cs_foobar  IS                SELECT                        rowid                FROM                        foobar                WHERE                        unique#  BETWEEN  1  AND  400000                ORDER  BY                        unique#                FOR  UPDATE; BEGIN        FOR  row  IN  cs_foobar  LOOP              UPDATE  foobar              SET                      foobar_str  =  LPAD('y',500,'y')              WHERE                      rowid  =  row.rowid;        END  LOOP;        COMMIT; END; / 13年11月16日土曜日
  47. 47. 精密検査(コード) DECLARE        CURSOR  cs_foobar  IS                SELECT                        rowid                FROM                        foobar                WHERE                        unique#  BETWEEN  1  AND  400000                ORDER  BY                        unique#                FOR  UPDATE; BEGIN        FOR  row  IN  cs_foobar  LOOP              UPDATE  foobar              SET                      foobar_str  =  LPAD('y',500,'y')              WHERE                      rowid  =  row.rowid;        END  LOOP;        COMMIT; END; / 13年11月16日土曜日
  48. 48. 精密検査(統計情報) USER_INDEXESより TABLE_NAME INDEX_NAME NUM_ROWS DISTINCT_KEYS CLUSTERING_FACTOR -------------- --------------- ---------- ------------- ----------------FOOBAR SYS_C0010235 2070913 2070913 2070899 USER_IND_COLUMNSより NDEX_NAME COLUMN_NAME ---------------- -------------SYS_C0010235 UNIQUE# USER_TABLESより TABLE_NAME NUM_ROWS AVG_ROW_LEN ------------ ---------- ----------FOOBAR 2000000 506 13年11月16日土曜日
  1. A particular slide catching your eye?

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

×