ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

実行計画

Oracle DatabaseでSQLの性能計測3(SQLトレース編)【Oracle Database or GoldenGate Advent Calendar 2018 Day 20】

1. SQLトレースとは? 2. SQLトレースの出力先と出力可能サイズの確認 3. DBMS_SESSIONパッケージでセッション単位でSQLトレースを取得 4. 出力されたSQLトレースの確認と整形(tkprof) 5. 整形(tkprof)済みトレースの見方 5-1. 整形(tkprof)済みトレースの抜…

Oracle DatabaseでSQLの性能計測2(DBMS_XPLAN&DBMS_SQLTUNE編)【Oracle Database or GoldenGate Advent Calendar 2018 Day 8】

1. DBMS_XPLANによるSQL実行時間の計測 1-1. DBMS_XPLAN とは? 1-2. ALLSTATS書式の前提条件 1-3. DBMS_XPLAN.DISPLAY_CURSOR(ALLSTATS書式)の実行サンプル 1-4. 出力された統計の統計の見方(DBMS_XPLAN.DISPLAY_CURSORのALLSTATS書式) 2. DBMS_SQLTUNEによ…

Hard Parseに時間が掛かるお手軽なSQLを作ってみる。(Oracle Database)

「Hard Parseに時間が掛かる手軽なSQLを作りたい。彡(゚)(゚)」と呟いた (※下記twitterモーメント参照)ところ、色々とアイデアを頂いたので、 全部ではないのですがお試し&まとめてみましたやで彡(゚)(゚) Hard Parseに時間が掛かるSQL ※twitterモーメント http…

V$SQLとその周辺でER図を描いてみよう! - JPOUG Advent Calendar 2017 Day 15 -

JPOUG Advent Calendar 2017 の Day 15 の記事となります。 昨日は おおのたかしさん の記事でした彡(゚)(゚) Oracle Database 12cR2へのアップグレード後に発生するORA-01017 https://www.ashisuto.co.jp/db_blog/article/201712-ora-01017.html 今年はV$SQL…

DBMS_PERF.REPORT_PERFHUBファンクションでパフォーマンス・ハブ画面をHTML出力してみる。

DBMS_PERFパッケージのREPORT_PERFHUBファンクションを使うと、 Enterprise Managerのパフォーマンス・ハブ相当の画面をHTML出力できるんやで。 彡(゚)(゚) ※Enterprise Managerを構築することなく、DB単体で出力できます。まず以下のようにしてhtmlファイルを…

単純なINSERT文でもバインド変数のサイズの違いで複数の子カーソルが生成される(Oracle Database)

表題の通り、やってみるやで彡(゚)(゚) INSERTするバインド変数の大きさの順番/組み合わせで挙動が変わるので、 まずはバイト数が小さい順にINSERTしてみるやで。 バイト数の小さい順にINSERT 実行するSQLは下記 -- 共有プールをFLUSH ALTER SYSTEM FLUSH SHA…

Oracle TechNight #7 の資料 と Oracle Database Connect 2017 の資料が公開されました。

ワイ と yoheiaさん(https://twitter.com/yoheia ) が 2017/2/27 に 語った Oracle TechNight #7 の資料が公開されたやで彡(゚)(゚) Oracle Database Technology Night 〜集え!オラクルの力(チカラ)〜 http://www.oracle.com/technetwork/jp/ondemand/dat…

Oracle DB のファンクション索引を作成すると、拡張統計(式統計)のエントリが自動で作成される。(※Oracle Database 11gR2 で検証)

超マニアックなネタ彡(゚)(゚)Oracle Database のファンクション索引を作成して、作成したファンクション索引を使用する SQLが実行されると、拡張統計(式統計)のエントリが作成されて COL_USAGE$ に格納されます。まずは準備/確認から。この時点では拡張統計…

SQLチューニングと対戦格闘ゲームの類似性について語る。- JPOUG Advent Calendar 2016 Day 15 -

JPOUG Advent Calendar 2016 の Day 15 の記事となります。 昨日は Yousuke Yadaさん の 以下の記事でした。 R12.2新機能『Offline Encryption Conversion』 ※バックポート実行 http://blog.livedoor.jp/y_db_y/archives/49072687.html ワイはSQLチューニン…

Oracle DBA & Developer Day 2016(DDD 2016) の セッション資料 が公開されました。

タイトルの通り、去る2016年10月27日に開催された Oracle DBA & Developer Day 2016(DDD 2016) の資料が公開されたやで。 彡(^)(^) Oracle DBA & Developer Day 2016 の セッション資料 http://www.oracle.com/technetwork/jp/ondemand/ddd-2016-3373953-ja.…

Oracle Database 12c 新機能、適応計画(Adaptive Plan)のサブプランが発動した時/しなかった時の実行計画を DBMS_XPLAN.DISPLAY_CURSOR の FORMAT => 'ADAPTIVE' で比較してみる。

こっちがサブプラン発動時(HASH JOINに変更された時)の実行計画 SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('aqkqdv23rmnj7', NULL, 'ADAPTIVE ALLSTATS LAST')); PLAN_TABLE_OUTPUT ----------------------------------------------------------------…

Oracle Database 12c で OPTIMIZER_DYNAMIC_SAMPLING=11 をセットすると、Dynamic Sampling の 結果 が RESULT CACHE に格納されて、異なるSQL で 共有される。

表題の通り、Dynamic Sampling を 11 にセットすると、Dynamic Sampling の 結果 が Result Cache に格納されて、異なるSQL(sql_id が 異なる SQL) で Dynamic Dampling の 結果が共有されるんやで。彡(゚)(゚) 従来の動作 SQLの実行計画作成時(Hard Parse時)…

DBMS_STATS.SEED_COL_USAGEプロシージャ と DBMS_STATS.CREATE_EXTENDED_STATSファンクション で 拡張統計のエントリを(半)自動作成してみる。

表題の検証をやってみるやで彡(゚)(゚) まずデータ作成します。実行スクリプトは下記の通りです。データ作成スクリプト CONNECT AYSHIBAT/xxxxxxxx DROP TABLE TBL_A; CREATE TABLE TBL_A AS SELECT LEVEL AS C1 , TO_DATE('2016/04/27', 'YYYY/MM/DD')+(LEVEL…

JPOUG Tech Talk Night #6 イベントレポート(by 21cafe様)

先日の JPOUG Tech Talk Night #6 が記事になったやで!彡(゚)(゚) Oracle運用のノウハウが満載!JPOUG Tech Talk Night #6イベントレポート https://geechs-magazine.com/tag/event/20160331 ワイ(柴田AYU) の プレゼンや、中嶋さん、太田さん、三原さん の …

2/23(火) の JPOUG Tech Talk Night #6 で Oracle Database の オプティマイザ統計運用 について語ってきたやで。

_人人人人人人人人人_ > 現行踏襲の呪縛!!! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ 表題の通り、2/23(火) の JPOUG Tech Talk Night #6 で Oracle Database の オプティマイザ統計運用 について、めっちゃ語ってきたやで 彡(゚)(゚) Slideshare の元リンクはこちら。 …

Oracle Database の STS(SQL Tuning Set) を活用して、SQL の 性能統計 や 実行計画 を キャプチャする。

表題の通り、STS(SQL Tuning Set) を使って、 SQL の 性能統計 や 実行計画 を キャプチャするやで彡(゚)(゚)まず DBMS_SQLTUNE.CREATE_SQLSETファンクション を実行して、STS を作成しまする。 VAR v_sts_name VARCHAR2(30); EXEC :v_sts_name := DBMS_SQLTUN…

2/23(火) の JPOUG Tech Talk Night #6 で Oracle Database の オプティマイザ統計運用 について語ります。

表題の通り、2/23(火) に 開催される JPOUG Tech Talk Night #6 で、 Oracle Database の オプティマイザ統計運用 について語るやで 彡(゚)(゚) JPOUG Tech Talk Night #6 固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 - 柴田 歩 - http:/…

sqlplus の SET AUTOTRACE TRACEONLY は トレースオンリーじゃなくてトランザクションが実行されてしまう。

表題の通り、sqlplus の SET AUTOTRACE TRACEONLY はトレースオンリーじゃなくて トランザクションが実行されていまいます。SELECT文では問題になりませんが、INSERT/UPDATE/DELETE は 実際にデータが更新されていまうので、気を付けて下さいませ(´・ω・)ゞ SQ…

まだ統計固定で消耗してるの? - JPOUG Advent Calendar 2015 (Day9) -

JPOUG Advent Calendar 2015 の 9日目となります。 昨日の記事は charade_oo4oさん の Oracle on Hyper-V 2015 でした。昨日の charade_oo4oさん や 渡辺 剛さんの記事、s4r_agentさんの記事など、 世の中は確実に Cloud な感じやね。彡(゚)(゚)さて今年のワイ…

EXPLAIN PLAN FOR 〜(※AUTOTRACE TRACEONLY含む)で出てくる実行計画 と SQL実行時の実行計画が異なるケースを作ってみる。

EXPLAIN PLAN FOR 〜(※AUTOTRACE TRACEONLY含む)で出てくる実行計画 と SQL実行時の実行計画が異なるケースを作ってみるZe!(`・ω・)Ъ幾つかパターンは有るんですが、WHERE句の範囲検索を バインド変数で指定するケースでやってみます。簡単なんで。まず服は脱…

Oracle の ASH(Active Session History) から リテラルSQL を追跡してみる。

Oracle の ASH(Active Session History) から リテラルSQL を追跡してみます。ASH にはアクティブなセッションの履歴情報、もう少し詳しく言うと DB CPU または 待機状態(Disk IO/ロック待ち/Network待機/etc...) の セッション情報 が 1回/1秒 の間隔で自動…

共有プール上の特定カーソルを狙い打ちで age out(消去)する。(DBMS_SHARED_POOL.PURGEプロシージャ)

共有プールの特定カーソルを狙い打ちで age out(消去) するには、 DBMS_SHARED_POOLパッケージの PURGEプロシージャ を使用します。まず V$SQLAREA を 参照して、age out したい SQL の ADDRESS値 と HASH_VALUE値 を確認します。 SQL> SET LINESIZE 170; SQ…

Bind Peek を もっと使おうぜ! - JPOUG Advent Calendar 2014 (Day 5) -

※2015年12月追記 こちらもよろしく!(`・ω・)ゞ まだ統計固定で消耗してるの? - JPOUG Advent Calendar 2015 (Day9) - [id:gonsuke777:20151208:1449587953] JPOUG Advent Calendar 2014 の 5日目となります。「Bind Peek を もっと使おうぜ!」と銘打って、…

Oracle Technology Day 2014(名古屋/大阪)で語ってきた。

またまた更新、、、以下のイベントで語って参りますた。 Oracle Technology Day 2014 in 名古屋 http://www.oracle.com/webapps/events/ns/EventsDetail.jsp?p_eventId=176929&src=7863979&src=7863979&Act=65 Oracle Technology Day 2014 in 大阪 http://ww…

Oracle DBA & Developer Day 2013 セッション資料が公開されてた。

ぐぐったら出てきた。ワイのもジャストプレイヤー・瀧CEOの資料もうpされてた。 他の方々の資料も盛りだくさん。皆さんよろしくやで〜〜。 Oracle DBA & Developer Day 2013 セッション資料http://www.oracle.com/technetwork/jp/ondemand/ddd-2013-2051348…

Oracle DBA & Developer Day 2013 で語ってきた。

ひっそりと更新、、、以下のイベントで語ってきたやで〜〜。Oracle DBA & Developer Day 2013http://www.oracle.co.jp/events/dbadev2013/自分は以下のセッションを担当しますた。SQLチューニングについてっすね。 【A-1】オラクル・コンサルが語る! SQLチ…

共有プール上の実行計画を出力する。(DBMS_XPLAN.DISPLAY_CURSOR)

久々の更新じゃーい!共有プール上に格納された SQL の実行計画を出力するには、 DBMS_STATSパッケージの DISPLAY_CURSORファンクションを使用する。 SQL> SET LINESIZE 170; SQL> SET PAGESIZE 1000; SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('…

EXPLAIN PLAN FOR 〜 でSQLの実行計画を出力

EXPLAIN PLAN で解析してから DBMS_XPLAN.DISPLAY で出力する。 SQL> EXPLAIN PLAN FOR 2> SELECT /*+ USE_CONCAT */ * FROM TEST_TABLE 3> WHERE ELE1 = :B1 4> OR ELE2 = :B2; SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE', NULL, 'ALL')); …