GAGA LIFE.

DBAブログ -APとロジックとAKがある-

Oracle

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集合演算子を使用する複合問合せに変換することで、追加の索引アクセス・パスを有効にするために適用される変換 実行例 --…

Oracle 問合せ変換(Query Transformation)

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

Oracle 統計情報の収集(DBMS_STATSの各プロシージャのパラメータ)

概要 統計情報の収集のために、DBMS_STATSパッケージにはいくつかのプロシージャが用意されていますが、 それぞれの特徴やパラメータについてまとめます。 各プロシージャについて システム特性や取得対象に応じてデータベース全体/データディクショナリ/ス…

Oracle オブジェクト統計

概要 オブジェクト統計には、下記の3種類があります。 表統計 列統計 索引統計 さらに各タイプには、下記の3つのタイプがあります。 表/索引レベルの統計 パーティション・レベルの統計 サブパーティション・レベルの統計 パーティションとサブパーティショ…

Oracle 統計情報の種類

Oracleの統計情報について簡単にまとめます。 種類 概要 未取得時の影響 取得方法 オブジェクト統計 表統計 表に対する統計 ・表(パーティション)の行数 ・表内に格納されたHWM以下に存在するデータブロック数 ・表内の行の長さの平均 ・行連鎖/行移行が発生…

Oracle SQL処理フロー

SQL処理のフローを記載します。

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/OS/ロケーション/CPU/メモリ) Trace file /opt/oracle/diag/rdbms/ora12201/ora12201/trace/ora12201_ora_9374.trcOracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit ProductionBuild label: RDBMS_12.2.0.1.0_LINUX.X64_…

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 実行計画解析のリファレンス

実行計画のビュー View Description V$SQL_SHARED_CURSOR 特定の子カーソルが既存の子カーソルと共有されない理由を示します。 それぞれの列は、カーソルが共有されない具体的な理由を示します。 USE_FEEDBACK_STATS列には、再最適化のために子カーソルが 一…

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

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

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

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

Oracle SQL解析の前提知識(SQL_ID/PLAN_HASH_VALUE/CURSOR)

SQL_ID 各SQL文を識別するための文字列。 Oracleは実行されたSQL文を13桁の「文字列」で管理しています。この文字列のことをがSQL識別子(SQL_ID)と呼ばれます。 SQL_IDは、13文字の文字列で表される基数32の数字です。各文字は数字または32の小文字のいずれ…

Oracle 診断イベントのリスト

概要 Oracleデータベースで何らかの問題が発生した場合の調査のためにSR(Oracleサポート)より診断イベントの設定を依頼される場合があります。診断イベントにはどのようなものがあるのかを確認しました。 確認方法 Eventは、ほとんど10000〜10999の範囲で番…

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

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

Oracle CDB/PDB起動停止

概要 Oracle DB 12c CDB/PDB 起動停止 環境情報 ホストOS:Windows 10VirtualBox:Ver 5.2.8ゲストOS:CentOS 7 64bitOracle:Oracle Database EE 12.2.0.1 起動手順 1.CDB起動 sqlplus / as sysdba startup 2.PDB起動手順(全てのPDB) show con_name show pdbsal…

Oracle 隠しパラメータ確認

隠しパラメータの確認方法 set line 10000set pages 20000col "Description" for a100col "Parameter" for a40col "Value" for a30select a.ksppinm "Parameter",a.KSPPDESC "Description",b.ksppstvl "Value"from x$ksppi a, x$ksppcv b where a.indx = b.i…

ASH(Active Session History)をCSV形式で出力

概要 現在、自分達DBAチームが管理している環境には、以下の環境があるため、それぞれについてメモします。 11.2.0.4 RAC 12.1.0.2 RAC また、以下の情報についてもそれぞれ記載します。 ・GV$~ : ASHバッファの1秒間隔の情報 ・DBA_HIST~ : 10秒間隔でサ…

Oracleサンプル・スキーマのインストール

概要 前回、Oracle Databaseをインストールしました。デフォルトでは、下記の通り、Human Resources(HR)スキーマを作成するスクリプトが配置されていますが、その他(SHやOE)のスクリプトは入っていませんでした。 [oracle@aaeca05e3663 schema]$ pwd/opt/ora…

Docker上にOracle Database 12.2を構築(Part2)

前回記事で構築した環境の状況を確認しました。 構成確認 --Dockerホスト側 [root@Marshall oradata]# pwd/mnt/oradata[root@Marshall oradata]# ll合計 0drwxr-xr-x 3 54321 54321 18 5月 4 16:27 dbconfigdrwxr-x--- 4 54321 54321 227 5月 4 16:23 orcl[r…

Docker上にOracle Database 12.2を構築

概要 Docker(CentOS)にOracle Database EE 12.2.0.1をインストールします。 環境情報 ホストOS:Windows 10VirtualBox:Ver 5.2.8ゲストOS:CentOS 7 64bitOracle:Oracle Database EE 12.2.0.1 手順概要 基本的に以下の公式の手順とスクリプトを使用して構築し…