Optimizer(10053)トレースを見るときによく使うキーワード sql_id plan_hash_value Plan Table Final query after transformations Best so far Join order[ Table Stats Single Table Access Path
SQLHCとは SQLチューニング・ヘルス・チェック・スクリプト(SQLHC)は My Oracle Support で提供されているPL/SQLスクリプト My Oracle Support の DocID: 1542531.1 から sqlhc.zip をダウンロード・解凍して、sqlplus で SQL_ID を指定して実行 指定した SQL_ID の実行計画、実行時間、参照している表・索引定義、統計情報、実行計画のボトルネック、SQL監視、Optimizer(10053)トレース などを V$ASH、DBA_HIST_ASH、DBA_HIST_SQLSTAT などからまるっととってくれる便利スクリプト 情報採取手順 情報採取する SQL の SQL ID を確認する DBサーバの任意のディレクトリで SQLHC を解凍する $ unzip sqlhc.zip Archive: sq
CHR関数を使う方法もある。 SQL> select 'select '||chr(39)||'X'||chr(39)||' from dual;' from dual 'SELECT'||CHR(39)||'X --------------------- select 'X' from dual; ちょっと聞かれたのでメモ。
SQLトレースを取得する。 自セッション*1 SQLトレースを有効化する(開始)。*2 waits: true にすると待機イベントと待機時間が出力される(デフォルト値: true) binds: true にするとバインド変数の値が出力される(デフォルト値: false) plan_stat: STAT# で出力されるセクション(実行計画と実行統計)の出力頻度 FIRST_EXECUTION: 初回のみ出力(デフォルト) ALL_EXECUTIONS: 実行のたびに出力(11.1以降) NEVER: 出力しない -- ALTER SESSION SET EVENTS '10046 trace name context forever, level 12'; と同じ EXECUTE DBMS_SESSION.SESSION_TRACE_ENABLE(waits => true, binds
概要 シバタツ流! DWHチューニングの極意 第4回 SQL書き換えテクニックによると、DWHにおけるUPDATEをダイレクトパスインサートを用いたINSERT /*+ APPNED */ INTO ... SELECT ...に置き換えることで高速化を見込める、というテクニックが紹介されている。今回はこれを実際に試し、statspackのレポートを取得して、なぜ高速化が見込めるかを考える。また、同じ結果となる別のUPDATEとも比較を行い、OracleのUPDATEについて考える。 やること やることそのものは参照元と変わらないが、このエントリでは実行時間にフォーカスを置く。その点を強調して物事を単純化するため、いくつか手抜きをする。 まず、UPDATEは全件更新にする。ただ、これだとUPDATEをSELECT CASEで置換するという重要な点が抜け落ちてしまう。そのため、UPDATE
is not null で count する SQL を Index Only "Fast Full" Scan で仕事(計算)量を減らして高速化してみた。インデックスを作成すると、オプティマイザが期待していた仕事(計算)量が少なくなる実行計画を選択してくれた。 チューニング結果 ビフォー 17:36:30 SQL> alter system flush buffer_cache; System altered. Elapsed: 00:00:00.88 17:36:51 SQL> select count(c2) from test1 where c5 is not null; COUNT(C2) ---------- 100000 Elapsed: 00:00:05.70 17:37:11 SQL> select * from table(dbms_xplan.display_curs
Tom Kyte の以下の記事を読んで、同じテーブルをフルスキャンする場合にソート有無で consistent gets が変わる理由を調べてみた。 これは大きな変化です。 転送されるデータが8MBから3.4MBに減少しました。この減少はすべて、Oracle*Netの圧縮によるものです。 TIMESTAMPの値には繰り返しが多いため、何度も転送する必要がありません。 さらに、consistent getsが5,794から1,031に減少している点もお気づきでしょう。 これもORDER BYによる副作用のひとつです。 1回目の問合せの実行でデータが表から直接読み取られますが、ソートは実行されないため、データを一時領域に書き込む必要はありません。 したがって、データをフェッチするたびに(SQL*Plusのデフォルトの配列フェッチ・サイズは一度に15行)、バッファ・キャッシュからブロックを取得し
statspackの使用例としてしばしば見かけるものの一つに、ライブラリキャッシュのヒット率がある。Oracleでは同一と見なされないSQLの書き方とかバインド変数の効果とかについての記述と共に記されることが多い。また、ヒット率はおおむねどの文献でも95%~99%以上を保ちましょう、と書かれている。 このエントリでは、あえてライブラリキャッシュにヒットしないSQLを流し続けたとき、何が起きるのかをstatspackレポートを通して確認してみる。やることとしては2つのプログラムの実行時間とstatspackレポートを比較する。1つは、SELECT文のWHEREをバインド変数にし、もう1つは、バインド変数を使わず毎回静的なSQLを実行させ続ける。 環境 DB CentOS-6.4-x86_64 Oracle Database Express Edition 11g Release 2 Java
コーソル DatabaseエンジニアのBlog へようこそ コーソル DatabaseエンジニアのBlogでは、 コーソル所属のエンジニアがOracle Databaseを中心としたDatabaseに関わる技術情報を発信しています。 コーソルでは、Oracle Databaseをはじめとするデータベース全般に関わるサービス(コンサルティング、設計、構築など)、オラクル製品のプロダクトサポートサービスを提供しています。 また、不定期で無償の技術セミナーを開催しています。 株式会社コーソル - サービス案内 株式会社コーソル - セミナー情報 コーソルでは、Oracle Databaseスペシャリストになりたいエンジニア、 Oracle Database技術を活かして働きたいエンジニアを絶賛募集中です。 コーソルについて知るためには・・・ 株式会社コーソル - 会社情報 人事ブログ - 『コー
本記事は JPOUG Advent Calendar 2013 の18日目です。17日目は mutatsu さんの 備忘録とか 12cのPL/SQL新機能:暗黙的結果セット(dbms_sql.return_result) でした。 ここでは Oracle Database を扱う上で設定しておくと便利だと思う変数を 10 個ほど紹介したいと思います。 1. SQLPATH 環境変数 - SQL*Plus まずは DBA 1.0 の相棒 SQL*Plus を使う上で欠かせない SQLPATH 環境変数。 SQL*Plus の環境変数 - SQL*Plusの構成 - SQL*Plusユーザーズ・ガイドおよびリファレンス リリース12.1 B71396-01 sqlplus から実行する SQL スクリプトの場所を指定する値です。マニュアルによると次の順番で SQL スクリプトを検索するとありま
コーソル DatabaseエンジニアのBlog へようこそ コーソル DatabaseエンジニアのBlogでは、 コーソル所属のエンジニアがOracle Databaseを中心としたDatabaseに関わる技術情報を発信しています。 コーソルでは、Oracle Databaseをはじめとするデータベース全般に関わるサービス(コンサルティング、設計、構築など)、オラクル製品のプロダクトサポートサービスを提供しています。 また、不定期で無償の技術セミナーを開催しています。 株式会社コーソル - サービス案内 株式会社コーソル - セミナー情報 コーソルでは、Oracle Databaseスペシャリストになりたいエンジニア、 Oracle Database技術を活かして働きたいエンジニアを絶賛募集中です。 コーソルについて知るためには・・・ 株式会社コーソル - 会社情報 人事ブログ - 『コー
コーソル DatabaseエンジニアのBlog へようこそ コーソル DatabaseエンジニアのBlogでは、 コーソル所属のエンジニアがOracle Databaseを中心としたDatabaseに関わる技術情報を発信しています。 コーソルでは、Oracle Databaseをはじめとするデータベース全般に関わるサービス(コンサルティング、設計、構築など)、オラクル製品のプロダクトサポートサービスを提供しています。 また、不定期で無償の技術セミナーを開催しています。 株式会社コーソル - サービス案内 株式会社コーソル - セミナー情報 コーソルでは、Oracle Databaseスペシャリストになりたいエンジニア、 Oracle Database技術を活かして働きたいエンジニアを絶賛募集中です。 コーソルについて知るためには・・・ 株式会社コーソル - 会社情報 人事ブログ - 『コー
各種インフラ技術(OS、ストレージ、ネットワーク)やオラクル製品といった話題を取り上げます。著者は小田圭二、「門外不出のOracle現場ワザ」、「絵で見てわかるOracleの仕組み」、「絵で見てわかるOS/ストレージ/ネットワーク」などの著作もあります ■アンケートに質問いただいた内容 背景 - v$sysstat を使って前日と当日のシステムの状態を比較しましょうとアドバイスがありました - v$sysstat は executions とか logon数とか 100 行近くのパラメータが累積値で保持されていると理解しています - この項目をすべてエクセル化するのは難しいと考えています 教えていただきたい点 - 監視の項目で特に注視する項目はありますか - 通常 v$sysstat は何分間隔で取得されますか - 待機イベント等を監視する際、参考とする表、項目を教えていただけますと助かり
コーソル DatabaseエンジニアのBlog へようこそ コーソル DatabaseエンジニアのBlogでは、 コーソル所属のエンジニアがOracle Databaseを中心としたDatabaseに関わる技術情報を発信しています。 コーソルでは、Oracle Databaseをはじめとするデータベース全般に関わるサービス(コンサルティング、設計、構築など)、オラクル製品のプロダクトサポートサービスを提供しています。 また、不定期で無償の技術セミナーを開催しています。 株式会社コーソル - サービス案内 株式会社コーソル - セミナー情報 コーソルでは、Oracle Databaseスペシャリストになりたいエンジニア、 Oracle Database技術を活かして働きたいエンジニアを絶賛募集中です。 コーソルについて知るためには・・・ 株式会社コーソル - 会社情報 人事ブログ - 『コー
RDBMSでwhere句なしのupdate/deleteをする機会は極めて限られ、本番環境でついうっかりやってしまうと夜逃げしたくなるレベルである。しかしやっちまったものは仕方ないので、どうすれば少なくとも無かったことにする状態に出来るのかを考える。 環境 Oracle Database Express Edition 11g Release 2をCentOS 6.4 x86_64上で動作 Oracle SQL Developer 3.2 SQL*Plus: Release 11.2.0.2.0 Production 準備 下記をテスト用の生贄テーブルとして用意する。 drop table hoge purge; create table hoge ( hoge_id integer not null, hoge_value varchar2(16), constraint hoge_pk
コーソル DatabaseエンジニアのBlog へようこそ コーソル DatabaseエンジニアのBlogでは、 コーソル所属のエンジニアがOracle Databaseを中心としたDatabaseに関わる技術情報を発信しています。 コーソルでは、Oracle Databaseをはじめとするデータベース全般に関わるサービス(コンサルティング、設計、構築など)、オラクル製品のプロダクトサポートサービスを提供しています。 また、不定期で無償の技術セミナーを開催しています。 株式会社コーソル - サービス案内 株式会社コーソル - セミナー情報 コーソルでは、Oracle Databaseスペシャリストになりたいエンジニア、 Oracle Database技術を活かして働きたいエンジニアを絶賛募集中です。 コーソルについて知るためには・・・ 株式会社コーソル - 会社情報 人事ブログ - 『コー
テーブル切捨てのtruncateと、条件無しでdeleteは、どちらも結果的にテーブルから全行削除される。しかし、両者の動作は異なるもので、想定される使い方も異なる。Oracleの運用ミス事例でもしばしば取り上げられる。システムはなぜダウンするのかのp.232「2つの削除コマンドの使い分けを誤る」など。 というわけで、実際にSQLを実行しながら両者の違いを見てみるが、使用ブロック数に着目しながら確認してみる。 環境 Oracle Database Express Edition 11g Release 2をCentOS 6.4 x86_64上で動作 Oracle SQL Developer 3.2 準備 このエントリ内で使用するクエリについて。 「テスト用のテーブル作成」と書いた場合、下記クエリを指す、とする。 drop table hoge purge; create table hog
Oracle10g XE をインストールしたので手順をメモ。環境は Windows XP。 1) Oracle10g XEのダウンロード 以下のURLから Oracle10g XE をダウンロードする。 http://www.oracle.com/technology/products/database/xe/index.html 2) インストール ダウンロードしたらそれを実行。インストール先やらを選んで、SYSTEM, SYSのパスワードを入れて進むとインストールが開始される。その後続いて、デフォルトのデータベース XE の設定もされる。 3) ユーザの設定 インストールが終わったら、現在の OS ユーザを グループ ORA_DBA に追加する。 4) 自動起動の設定 デフォルトは起動時に自動的にデータベースをOPENするようになっているので、自動で起動したくない場合は、以下のレジスト
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く