Oracleのログ
oracleのログは下記の3種類
- アラートログ
- トレースファイル
- リスナーログ
アラートログはOracleからのエラーや警告が出力される。インスタンス別にalert_[ORACLE SID].logというファイル名がつけられる。background_dump_destで指定されたディレクトリに出力される。
トレースファイルは障害が発生した瞬間に作成されるファイルである。UnixでいうところのCore Dumpになる。トレースファイルは [ORACLESID]_ora_[ProcessID].trcというファイル名で作成される。場所はuser_dump_destディレクトリ以下になる右。
ユーザートレースは下記パラメータを設定すると出力される。
SQL_TRACE = TRUE
またセッション別にトレースを取るときには下記のSQLを実施すればよい
ALTER SESSION SET SQL_TRACE = TRUE;
リスナーログは下記の場所に出力される。
[diagnostic_dest]/diag/tnslsnr/[Host Name]/[Listner Name]/trace/リスナー名.log
Oracle Netトレースの取得
- http://d.hatena.ne.jp/yohei-a/20130420/1366471052
- http://d.hatena.ne.jp/yohei-a/20110214/1297662858
特定SQLの問題
特定のSQLで問題が起きているときには2つの原因が考えられる。
- SQLステートメントがおかしい
- 不適切なIndexの使用
- リソースの枯渇
- ロック
- その他の問題
1)および2)についてオプティマイザで解析を進める。3)については実行したときにOSのパフォーマンスモニタツールから解析をしてみる。
4)については下記のサイトに詳しい。
http://www.atmarkit.co.jp/ait/articles/0407/28/news105.html
5)については 下記2つをまず実施する。
- ユーザートレース
- Oracle Netによる解析
SQL構文については下記のサイトに詳しい
http://kb.tableau.com/articles/knowledgebase/database-query-performance