GAGA LIFE.

インフラエンジニアブログ

スポンサーリンク

QEP

Hint Report(DBMS_XPLAN)のパラレル処理確認時の注意点

概要 Hint Report(DBMS_XPLAN)を後で確認する際、パラレルクエリの場合、見え方に差異が出る場合があります。 これは、コーディネータのインスタンスとスレーブが実行されたインスタンスでのHint Reportで見え方が異なる場合があるためです。 その動作確認と…

実行計画の比較(DBMS_XPLAN.COMPARE_PLANSファンクション)

概要 DBMS_XPLAN.COMPARE_PLANS APIを使用して実行プランを比較する19cの新機能を試したのでメモします。 DBMS_XPLAN.COMPARE_PLANSは、実行計画の比較機能を提供する19cの新機能です。 参照計画とテスト計画の任意のリストを取得し、それらの違いを強調表示…

Oracleのヒント句の有効性を確認する Hint Report(DBMS_XPLAN)

概要 Oracle 18cまではヒント句の使用有無や記述の正誤を簡単に判断する方法はありませんでした。 これまでは、イベントの10053(CBOトレース)を取得し、出力されたトレース内の「Dumping Hints」というセクションで確認していました。 ただし、それも実際に…

INDEX SKIP SCAN

INDEX SKIP SCAN 概要 INDEX SKIP SCANの概要について記載します。 INDEX SKIP SCAN INDEX SKIP SCAN(9i~)により第1キーが抽出条件に無くてもインデックスを使用する機能がありますが、この実行計画が選択される条件として 第1キーのカーディナリティが非…

バインド変数

概要 バインド変数を使用することで、大きく以下のようなメリットが得られます。 * 共有プールの節約 * SQLインジェクション対策になる バインド変数の関連箇所 バインド変数の使用 バインド変数の問題点 バインドピークとその問題点

ハードパースとソフトパース

概要 ハードパースとソフトパースについての解説 ハードパース 様々な実行計画を生成し、最適な実行計画を選択 統計情報が収集済みのとき(ソフトパース) * 統計情報を利用 * 統計情報:表、列、索引、システム 統計がない時or古い時(ハードパース) * 動…

実行計画生成の前提知識(SQL_ID/PLAN_HASH_VALUE/CURSOR)

概要 SQLや実行計画を解析する際の最低限知っておくべきと考える情報を記載します。 SQL_ID(SQL識別子) 意味 Oracleは実行されたSQL文を13桁の「文字列」で管理していますが、この文字列のことをSQL識別子(SQL_ID)と呼びます。 特徴 SQL識別子(SQL_ID)はSQL…

Oracle ヒント句

Oracle ヒント句 ヒント句 オプティマイザが適切な実行計画を選択してくれない、または不具合の影響等で性能要件を満たせない実行計画になることを抑止・安定化させる。 ただし、ヒントは融通が利かないため最終手段と考えるべき。 理由としてヒントで実行計…

Oracle 学習用書籍

概要 Oracleデータベースを利用する際してはマニュアル/MOSの情報を参照しますが、 その他の情報としてOracleデータベースを勉強する上で個人的に役に立った書籍を挙げてみました。 キャリアとしては、Oracleの製品サポート⇒DBA⇒DBコンサルですが、どの立場…

Oracle 問合せ変換③ 述語のプッシュ(Predicate Push Down)

概要 述語のプッシュ(またはプッシュダウン)は、前回記事で説明したビュー・マージが不可能なビューに対する問合せであった場合に、主問合せの述語をビュー定義の中に組み入れる(プッシュ)ことによって、実行の初期段階で多くの行を絞り込むことが期待できま…

Oracle 問合せ変換②-2 ビュー・マージ(Complex View Merging)

概要 前回のSimple View Mergingに引き続き、今回はComplex View Mergingについて記載します。 変換の目的についてはSimple/Complexで大きく変わらないため今回は記載しません。 実行例 Complex view merging WITH agg_q AS ( SELECT /*+ merge */ s.cust_id…

Oracle 問合せ変換②-1 ビュー・マージ(Simple View Merging)

概要 Oracleの問合せ変換の中の「ビュー・マージ(View Merging)」について記載します。 今回の実行例は、Simple View Merging編です。 - Simple View Merging:単純な結合のクエリブロックをマージするために使用される - Complex View Merging:集計を含むク…

Oracle 問合せ変換① OR拡張

概要 Oracleの問合せ変換の中の「OR拡張(Or Expansion)」について記載します。 目的 WHERE句にORを含むSQLを1つまたは複数のUNION ALL集合演算子を使用する複合問合せに変換することで、追加の索引アクセス・パスを有効にするために適用される変換 実行例 OR…

Oracle 問合せ変換(Query Transformation)

はじめに オプティマイザは、多数の問合せ変換を使用して、意味的には同等の新しいSQL文を生成します。 数あるOracleの問合せ変換について主要なものを整理しました。 以下でカテゴリ分けしています。 単純変換:No-brainer Transformations 集合と結合の変…

Oracle SQL言語~なぜ非効率な実行計画が選択され、SQLが性能劣化するのか~

概要 統計情報の必要性について自分なりに整理してみました。なぜ非効率な実行計画が選択され、SQL性能が悪くなるのかもあわせて考えてみました。DBAをしているとアプリケーションのご担当者や上層部への報告でこの点に関する説明を求められる機会が多いため…

Oracle EVENT 10053(CBOトレース)の出力内容について

概要 10053のトレースファイルの内容はあまり文書化されておらず、各リリース毎に変更されています。今回は、バージョン12.2の環境で取得したトレース内容を確認しています。 出力の概要 トレースには以下のようなセクションが表示されています。 セクション…

Oracle CBOトレース(10053)の取得

概要 CBOトレースの取得方法について記載します。event 10053は、CBO(Cost Base Optimizer)の動作をトレースするイベントです。CBOがどのような計算を行い、最終的にその実行計画を選択したのかを調査する際に有用です。主に、CBOが選択した実行計画が最適な…

Oracle アクセスパス

概要 Oracleのアクセス・パスについてまとめた内容を記載します。アクセス・パスは、データを取り出す方法のことです。 アクセス・パス一覧 分類 実行計画(Operation) 説明 Table TABLE ACCESS FULL 全表走査。HWM(High Water Mark)までの全てのブロックにア…

Oracle 実行計画の確認方法(DBMS_XPLAN.DISPLAY_CURSOR)

概要 SQLパフォーマンス調査で使用するDBMS_XPLANについてのまとめを記載します。 DBMS_XPLAN.DISPLAY_CURSORについて:過去にDatabaseで実行されたSQLの実行計画を確認することが可能です。 また、この機能を使用することでSQL文の実行計画とそのSQLを実行…

Oracle 実行計画の取得方法の選択について

概要 Oracleで実行計画を取得する方法をまとめました。※普段は、SQLチューニング依頼を受けた場合にはDBMS_XPLAN.DISPLAY_CURSORを使用しています。 方法 EXPLAIN PLAN+DBMS_XPLAN AUTOTRACE(SQL*Plus) DBMS_XPLANパッケージ(CURSOR/AWR) 動的パフォーマンス…

Oracle 結合方法と結合タイプ

はじめに Oracleの結合方法/結合タイプについて記載します。 結合アルゴリズム 結合アルゴリズム 日本語 ヒント句 Nested Loops Joins ネステッド・ループ結合 USE_NL/NO_USE_NL/USE_NL_WITH_INDEX Hash Joins ハッシュ結合 USE_HASH/NO_USE_HASH Sort Merge…

Oracle B-treeインデックスアクセス

はじめに B-treeインデックスを使用したテーブルアクセスの方法についてまとめます。 B-treeインデックスアクセス方式 操作 ヒント 代替ヒント INDEX FULL SCAN INDEX INDEX FULL SCAN (MIN/MAX) INDEX INDEX FULL SCAN DESCENDING INDEX_DESC INDEX RANGE S…

Oracle EVENT 10053(CBOトレース)の出力例

概要 Oracleの10053(CBO)トレースを読み解く際の確認すべきセクションを記載します。 各セクション ヘッダー(Oracle/OS/ロケーション/CPU/メモリ) Trace file /opt/oracle/diag/rdbms/ora12201/ora12201/trace/ora12201_ora_9374.trcOracle Database 12c Ent…

Oracle 実行計画解析のリファレンス

概要 Oracleで実行計画を読み解く際のリファレンスを記載します。 実行計画のビュー View Description V$SQL_SHARED_CURSOR 特定の子カーソルが既存の子カーソルと共有されない理由を示します。 それぞれの列は、カーソルが共有されない具体的な理由を示しま…

Oracle [12.2]SQLトレースの出力内容

概要 12cR2より、SQLトレースの実行統計にstartsの情報が出力されるように追加修正されているようです。starts:実行計画内の各ステップでの実行回数を表示しています。 DBMS_XPLAN.DISPLAY_CURSORで実行統計を表示した場合にも出力されます。 出力内容 12.1…

スポンサーリンク