ヘッダーをスキップ
Oracle® Databaseパフォーマンス・チューニング・ガイド
11
g
リリース2 (11.2)
B56312-06
ライブラリ
製品
索引
次
目次
タイトルおよび著作権情報
はじめに
対象読者
ドキュメントのアクセシビリティについて
関連ドキュメント
表記規則
『Oracle Databaseパフォーマンス・チューニング・ガイド』の新機能
Oracle Database 11
g
リリース2(11.2.0.4)Oracle Databaseパフォーマンスの新機能
Oracle Database 11
g
リリース2(11.2.0.2)Oracle Databaseパフォーマンスの新機能
Oracle Database 11
g
リリース2(11.2.0.1)Oracle Databaseパフォーマンスの新機能
第I部 パフォーマンス・チューニング
1
パフォーマンス・チューニングの概要
1.1
パフォーマンス・チューニングの概要
1.1.1
パフォーマンス計画
1.1.2
インスタンスのチューニング
1.1.2.1
パフォーマンスの原理
1.1.2.2
ベースライン
1.1.2.3
症状および問題点
1.1.2.4
チューニングの時期
1.1.3
SQLチューニング
1.1.3.1
問合せオプティマイザおよび実行計画
1.2
パフォーマンス・チューニング機能およびツールの概要
1.2.1
自動パフォーマンス・チューニング機能
1.2.2
その他のOracle Databaseツール
1.2.2.1
V$パフォーマンス・ビュー
第II部 パフォーマンス計画
2
パフォーマンスを考慮した設計と開発
2.1
オラクル社の新しい方法論
2.2
投資の選択肢について
2.3
スケーラビリティについて
2.3.1
スケーラビリティとは
2.3.2
システムのスケーラビリティ
2.3.3
スケーラビリティを妨げる要因
2.4
システム・アーキテクチャ
2.4.1
ハードウェア・コンポーネントとソフトウェア・コンポーネント
2.4.1.1
ハードウェア・コンポーネント
2.4.1.2
ソフトウェア・コンポーネント
2.4.2
要件に合った正しいシステム・アーキテクチャの構成
2.5
アプリケーション設計の原則
2.5.1
アプリケーション設計の簡潔さ
2.5.2
データのモデル化
2.5.3
表および索引の設計
2.5.3.1
索引への列の追加または索引構成表の使用
2.5.3.2
異なる索引タイプの使用
2.5.3.3
索引のコストの算出
2.5.3.4
索引内のシリアライズ
2.5.3.5
索引内の列の順序付け
2.5.4
ビューの使用
2.5.5
SQLの実行効率
2.5.6
アプリケーションの実装
2.5.7
アプリケーション開発の傾向
2.6
ワークロードのテスト、モデル化および実装
2.6.1
データのサイズ設定
2.6.2
ワークロードの見積り
2.6.2.1
類似システムからの推定
2.6.2.2
ベンチマーク
2.6.3
アプリケーションのモデル化
2.6.4
設計のテスト、デバッグおよび検証
2.7
新規アプリケーションのデプロイ
2.7.1
ロールアウトの方法
2.7.2
パフォーマンス・チェックリスト
3
パフォーマンス改善方法
3.1
Oracleのパフォーマンス改善方法
3.1.1
Oracleのパフォーマンス改善方法の手順
3.1.2
パフォーマンスを概念的にモデル化する際の意思決定プロセスの例
3.1.3
Oracleシステムにおける誤りの上位10項目
3.2
パフォーマンスの緊急の問題に対処する方法
3.2.1
パフォーマンスの緊急の問題に対処する方法の手順
第III部 インスタンスのパフォーマンスの最適化
4
パフォーマンスを考慮したデータベースの構成
4.1
初期インスタンス構成のパフォーマンスの考慮事項
4.1.1
初期化パラメータ
4.1.2
UNDO領域の構成
4.1.3
REDOログ・ファイルのサイズ指定
4.1.4
追加表領域の作成
4.1.4.1
永続的な表領域の作成: 自動セグメント領域管理
4.1.4.2
一時表領域の作成
4.2
最適なパフォーマンスを得る表の作成とメンテナンス
4.2.1
表圧縮
4.2.1.1
圧縮係数の見積り
4.2.1.2
チューニングによる圧縮率向上
4.2.2
未使用領域の解放
4.2.3
データの索引付け
4.2.3.1
ソート用データのメモリーの指定
4.3
共有サーバーのパフォーマンスの考慮事項
4.3.1
ディスパッチャ固有のビューを使用する競合の識別
4.3.1.1
ディスパッチャ・プロセスの競合の低減
4.3.2
共有サーバーの競合の識別
5
自動パフォーマンス統計
5.1
データ収集の概要
5.1.1
データベース統計
5.1.1.1
待機イベント
5.1.1.2
時間モデル統計
5.1.1.3
アクティブ・セッション履歴
5.1.1.4
システム統計とセッション統計
5.1.2
オペレーティング・システム統計
5.1.2.1
CPU統計
5.1.2.2
仮想メモリー統計
5.1.2.3
ディスクI/O統計
5.1.2.4
ネットワーク統計
5.1.2.5
オペレーティング・システムのデータ収集ツール
5.1.3
統計の解釈
5.2
自動ワークロード・リポジトリの概要
5.2.1
スナップショット
5.2.2
ベースライン
5.2.2.1
固定ベースライン
5.2.2.2
変動ウィンドウ・ベースライン
5.2.2.3
ベースライン・テンプレート
5.2.3
適応しきい値
5.2.4
領域使用量
5.3
自動ワークロード・リポジトリの管理
5.3.1
スナップショットの管理
5.3.1.1
スナップショットの作成
5.3.1.2
スナップショットの削除
5.3.1.3
スナップショット設定の変更
5.3.2
ベースラインの管理
5.3.2.1
ベースラインの作成
5.3.2.2
ベースラインの削除
5.3.2.3
ベースラインの名前変更
5.3.2.4
ベースライン・メトリックの表示
5.3.2.5
デフォルトの変動ウィンドウ・ベースラインのウィンドウ・サイズの変更
5.3.3
ベースライン・テンプレートの管理
5.3.3.1
単一ベースライン・テンプレートの作成
5.3.3.2
繰返しベースライン・テンプレートの作成
5.3.3.3
ベースライン・テンプレートの削除
5.3.4
自動ワークロード・リポジトリ・データの転送
5.3.4.1
AWRデータの抽出
5.3.4.2
AWRデータのロード
5.3.5
自動ワークロード・リポジトリ・ビューの使用
5.3.6
自動ワークロード・リポジトリ・レポートの生成
5.3.6.1
AWRレポートの生成
5.3.6.2
Oracle RAC AWRレポートの生成
5.3.6.3
特定のデータベース・インスタンスのAWRレポートの生成
5.3.6.4
特定のデータベース・インスタンスのOracle RAC AWRレポートの生成
5.3.6.5
SQL文のAWRレポートの生成
5.3.6.6
特定のデータベース・インスタンスのSQL文のAWRレポートの生成
5.3.7
自動ワークロード・リポジトリ期間比較レポートの生成
5.3.7.1
AWR期間比較レポートの生成
5.3.7.2
Oracle RAC AWR期間比較レポートの生成
5.3.7.3
特定のデータベース・インスタンスのAWR期間比較レポートの生成
5.3.7.4
特定のデータベース・インスタンスのOracle RAC AWR期間比較レポートの生成
5.3.8
アクティブ・セッション履歴レポートの生成
5.3.8.1
ASHレポートの生成
5.3.8.2
特定のデータベース・インスタンスのASHレポートの生成
5.3.8.3
Oracle RAC ASHレポートの生成
5.3.9
アクティブ・セッション履歴レポートの使用
5.3.9.1
上位イベント(Top Events)
5.3.9.2
ロード・プロファイル(Load Profile)
5.3.9.3
上位SQL(Top SQL)
5.3.9.4
上位PL/SQL(Top PL/SQL)
5.3.9.5
上位Java(Top Java)
5.3.9.6
上位セッション(Top Sessions)
5.3.9.7
上位オブジェクト/ファイル/ラッチ(Top Objects/Files/Latches)
5.3.9.8
アクティビティの経過(Activity Over Time)
6
自動パフォーマンス診断
6.1
自動データベース診断モニターの概要
6.1.1
ADDM分析
6.1.2
Oracle Real Application ClustersでのADDMの使用方法
6.1.3
ADDMの分析結果
6.1.4
ADDMの分析結果の確認: 例
6.2
ADDMの設定
6.3
ADDMを使用したデータベース・パフォーマンスの問題の診断
6.3.1
データベース・モードでのADDMの実行
6.3.2
インスタンス・モードでのADDMの実行
6.3.3
部分モードでのADDMの実行
6.3.4
ADDMレポートの表示
6.4
ADDM情報を表示するビュー
7
メモリーの構成および使用方法
7.1
メモリー割当ての問題について
7.1.1
Oracleメモリー・キャッシュ
7.1.2
自動メモリー管理
7.1.3
自動共有メモリー管理
7.1.4
キャッシュ・サイズの動的な変更
7.1.4.1
動的サイズ変更操作に関する情報の表示
7.1.5
アプリケーションの考慮事項
7.1.6
オペレーティング・システムのメモリー使用量
7.1.6.1
ページングの削減
7.1.6.2
主メモリーへのSGAの格納
7.1.6.3
個々のユーザーへの十分なメモリーの割当て
7.1.7
構成の繰返し
7.2
バッファ・キャッシュの構成および使用方法
7.2.1
バッファ・キャッシュの効果的な使用
7.2.2
バッファ・キャッシュのサイズ設定
7.2.2.1
バッファ・キャッシュ・アドバイザの統計
7.2.2.2
V$DB_CACHE_ADVICEの使用
7.2.2.3
バッファ・キャッシュ・ヒット率の計算
7.2.3
バッファ・キャッシュ・アドバイザ統計の解釈および使用方法
7.2.3.1
バッファ・キャッシュに割り当てられたメモリーの増加
7.2.3.2
バッファ・キャッシュに割り当てられたメモリーの削減
7.2.4
複数バッファ・プールについて
7.2.4.1
大きいセグメントへのランダム・アクセス
7.2.4.2
Oracle Real Application Clustersのインスタンス
7.2.4.3
複数バッファ・プールの使用方法
7.2.5
V$DB_CACHE_ADVICE内のバッファ・プール・データ
7.2.6
バッファ・プール・ヒット率
7.2.7
プール内に多くのバッファを持つセグメントの特定
7.2.8
KEEPプール
7.2.9
RECYCLEプール
7.3
共有プールとラージ・プールの構成および使用方法
7.3.1
共有プールの概念
7.3.1.1
ディクショナリ・キャッシュの概念
7.3.1.2
ライブラリ・キャッシュの概念
7.3.1.3
SQL共有基準
7.3.2
共有プールの効果的な使用方法
7.3.2.1
共有カーソル
7.3.2.2
単一のユーザーのログインおよび修飾表の参照
7.3.2.3
PL/SQLの使用方法
7.3.2.4
DDLの実行の回避
7.3.2.5
キャッシュ順序番号
7.3.2.6
カーソルのアクセスおよび管理
7.3.3
共有プールのサイズ設定
7.3.3.1
共有プール: ライブラリ・キャッシュの統計
7.3.3.2
V$LIBRARYCACHE
7.3.3.3
共有プールのアドバイザ統計
7.3.3.4
共有プール: ディクショナリ・キャッシュの統計
7.3.4
共有プール統計の解釈
7.3.4.1
メモリー割当ての増加
7.3.4.2
メモリー割当ての減少
7.3.5
ラージ・プールの使用l
7.3.5.1
共有サーバー・アーキテクチャでのラージ・プールと共有プールのチューニング
7.3.6
CURSOR_SPACE_FOR_TIMEの使用
7.3.7
セッション・カーソルのキャッシュ
7.3.7.1
セッション・カーソル・キャッシュの機能
7.3.7.2
セッション・カーソル・キャッシュの有効化
7.3.7.3
セッション・カーソル・キャッシュのチューニング
7.3.8
予約プールの構成
7.3.8.1
SHARED_POOL_RESERVED_SIZEの使用
7.3.8.2
SHARED_POOL_RESERVED_SIZEが小さすぎる場合
7.3.8.3
SHARED_POOL_RESERVED_SIZEが大きすぎる場合
7.3.8.4
SHARED_POOL_SIZEが小さすぎる場合
7.3.9
除去防止のためのラージ・オブジェクトの保存
7.3.10
既存アプリケーションのカーソルの共有
7.3.10.1
類似した文でSQL領域を共有する方法
7.3.10.2
CURSOR_SHARINGを非デフォルト値に設定する場合
7.3.11
接続の維持
7.4
REDOログ・バッファの構成および使用方法
7.4.1
ログ・バッファのサイズ設定
7.4.2
ログ・バッファの統計
7.5
PGAメモリー管理
7.5.1
自動PGAメモリーの構成
7.5.1.1
PGA_AGGREGATE_TARGETの初期設定
7.5.1.2
自動PGAメモリー管理のパフォーマンスの監視
7.5.1.3
PGA_AGGREGATE_TARGETのチューニング
7.5.1.4
V$SYSSTATおよびV$SESSTAT
7.5.2
OLAP_PAGE_POOL_SIZEの構成
7.6
サーバーおよびクライアントの結果キャッシュの管理
7.6.1
サーバーの結果キャッシュの管理
7.6.1.1
サーバーの結果キャッシュの機能
7.6.1.2
サーバーの結果キャッシュの初期化パラメータ
7.6.1.3
サーバーの結果キャッシュに使用するメモリーの管理
7.6.2
クライアントの結果キャッシュの管理
7.6.2.1
クライアントの結果キャッシュの機能
7.6.2.2
クライアントの結果キャッシュの初期化パラメータ
7.6.3
結果をキャッシュする問合せの指定
7.6.3.1
結果キャッシュのモード
7.6.3.2
SQLの結果キャッシュ・ヒントの使用
7.6.3.3
結果キャッシュの表注釈の使用
7.6.4
結果キャッシュの要件
7.6.4.1
結果キャッシュの読取り一貫性の要件
7.6.4.2
結果キャッシュのその他の要件
7.6.4.3
結果キャッシュの問合せパラメータの要件
7.6.5
結果キャッシュの情報へのアクセス
8
I/O構成および設計
8.1
I/Oについて
8.2
I/O構成
8.2.1
オペレーティング・システムまたはハードウェアのストライプ化を使用したファイルのレイアウト
8.2.1.1
リクエストされたI/Oサイズ
8.2.1.2
I/Oリクエストの同時実行性
8.2.1.3
物理ストライプ境界とブロック・サイズ境界との位置合せ
8.2.1.4
提案されたシステムの管理性
8.2.2
手動によるI/Oの分散
8.2.3
ファイルを分割する場合
8.2.3.1
表、索引およびTEMP表領域
8.2.3.2
REDOログ・ファイル
8.2.3.3
アーカイブREDOログ
8.2.4
3つの構成サンプル
8.2.4.1
すべてのディスクにまたがったすべての内容のストライプ化
8.2.4.2
異なるディスクへのアーカイブ・ログの移動
8.2.4.3
個別のディスクへのREDOログの移動
8.2.5
Oracle Managed Files
8.2.6
データ・ブロック・サイズの選択
8.2.6.1
読取り
8.2.6.2
書込み
8.2.6.3
ブロック・サイズの長所と短所
8.3
データベース内部のI/O測定
8.3.1
I/O測定の前提条件
8.3.2
I/O測定の実行
8.4
Oracle Orion測定ツールによるI/O測定
8.4.1
Oracle Orion測定ツールの概要
8.4.1.1
Orionテストのターゲット
8.4.1.2
Oracle管理者のためのOrion
8.4.2
Orionの開始
8.4.3
Orionの入力ファイル
8.4.4
Orionのパラメータ
8.4.4.1
Orionに必要なパラメータ
8.4.4.2
Orionのオプション・パラメータ
8.4.4.3
Orionのコマンドライン例
8.4.5
Orionの出力ファイル
8.4.5.1
Orionの出力ファイル例
8.4.6
Orionのトラブルシューティング
9
オペレーティング・システム・リソースの管理
9.1
オペレーティング・システムのパフォーマンスの問題について
9.1.1
オペレーティング・システムのキャッシュの使用
9.1.1.1
非同期I/O
9.1.1.2
FILESYSTEMIO_OPTIONS初期化パラメータ
9.1.1.3
NFSサーバー環境における非同期I/Oの制限
9.1.2
メモリー使用量
9.1.2.1
バッファ・キャッシュの制限
9.1.2.2
メモリー使用量に影響を与えるパラメータ
9.1.3
オペレーティング・システムのリソース・マネージャの使用
9.2
オペレーティング・システムの問題の解決
9.2.1
UNIXベースのシステムのパフォーマンスに関するヒント
9.2.2
Windowsシステムのパフォーマンスに関するヒント
9.2.3
HP OpenVMSシステムのパフォーマンスに関するヒント
9.3
CPUについて
9.4
CPUの問題の解決
9.4.1
CPU使用率の確認およびチューニング
9.4.1.1
メモリー管理のチェック
9.4.1.2
I/O管理のチェック
9.4.1.3
ネットワーク管理のチェック
9.4.1.4
プロセス管理のチェック
9.4.2
Oracle Database Resource Managerを使用したCPUリソースの管理
9.4.3
インスタンス・ケージングを使用したCPUリソースの管理
10
パフォーマンス・ビューを使用したインスタンスのチューニング
10.1
インスタンスのチューニング手順
10.1.1
問題の定義
10.1.2
ホスト・システムの検査
10.1.2.1
CPUの使用率
10.1.2.2
I/Oの問題の識別
10.1.2.3
ネットワークの問題の識別
10.1.3
Oracle Database統計の調査
10.1.3.1
統計収集のレベルの設定
10.1.3.2
待機イベント
10.1.3.3
待機イベント統計を含む動的パフォーマンス・ビュー
10.1.3.4
システム統計
10.1.3.5
セグメント・レベルの統計
10.1.4
変更の実装および測定
10.2
Oracle Database統計の解釈
10.2.1
負荷の検査
10.2.1.1
負荷の変更
10.2.1.2
高いアクティビティ率
10.2.2
待機イベント統計を使用したボトルネックへのドリルダウン
10.2.3
待機イベントおよび潜在的な原因の表
10.2.4
追加された統計情報
10.2.4.1
REDOログ領域リクエスト統計
10.2.4.2
読取り一貫性
10.2.4.3
継続行による表フェッチ
10.2.4.4
解析関連の統計
10.3
待機イベント統計
10.3.1
buffer busy waits
10.3.1.1
原因
10.3.1.2
処置
10.3.2
db file scattered read
10.3.2.1
処置
10.3.2.2
過剰なI/Oの管理
10.3.2.3
不十分なI/O分散
10.3.2.4
I/Oを待機しているセッションで実行されたSQL文の検索
10.3.2.5
I/Oを必要とするオブジェクトの検索
10.3.3
db file sequential read
10.3.3.1
処置
10.3.4
direct path readおよびdirect path read temp
10.3.4.1
原因
10.3.4.2
処置
10.3.5
direct path writeおよびdirect path write temp
10.3.5.1
原因
10.3.5.2
処置
10.3.6
enqueue(enq:)待機
10.3.6.1
ロックおよびロック・ホルダーの検索
10.3.6.2
処置
10.3.7
Other待機クラスのイベント
10.3.8
free buffer waits
10.3.8.1
原因
10.3.8.2
処置
10.3.8.3
複数のデータベース・ライター(DBWR)・プロセスまたはI/Oスレーブの検討
10.3.9
アイドル待機イベント
10.3.10
ラッチ・イベント
10.3.10.1
処置
10.3.10.2
例: 現在待機されているラッチの検索
10.3.10.3
共有プールとライブラリ・キャッシュ・ラッチの競合
10.3.11
log file parallel write
10.3.12
library cache pin
10.3.13
library cache lock
10.3.14
log buffer space
10.3.15
log file switch
10.3.15.1
処置
10.3.16
log file sync
10.3.17
rdbms ipc reply
10.3.18
SQL*Netイベント
10.3.18.1
SQL*Net message from client
10.3.18.2
SQL*Net message from dblink
10.3.18.3
SQL*Net more data to client
10.4
リアルタイムSQL監視
10.4.1
SQL計画の監視
10.4.2
パラレル実行の監視
10.4.3
SQL監視レポートの生成
10.4.4
SQL監視の有効化と無効化
10.5
インスタンス・リカバリのパフォーマンスのチューニング: ファスト・スタート・フォルト・リカバリ
10.5.1
インスタンス・リカバリについて
10.5.1.1
キャッシュ・リカバリ(ロールフォワード)
10.5.1.2
トランザクション・リカバリ(ロールバック)
10.5.1.3
チェックポイントとキャッシュ・リカバリ
10.5.2
キャッシュ・リカバリ時間の構成: FAST_START_MTTR_TARGET
10.5.2.1
FAST_START_MTTR_TARGETの現実的な値
10.5.2.2
ランタイム・パフォーマンスを最適化するためのチェックポイント頻度の低減
10.5.2.3
V$INSTANCE_RECOVERYによるキャッシュ・リカバリの監視
10.5.3
FAST_START_MTTR_TARGETのチューニングとMTTRアドバイザの使用
10.5.3.1
FAST_START_MTTR_TARGETの測定
10.5.3.2
FAST_START_MTTR_TARGETの現実的な範囲の決定
10.5.3.3
MTTRアドバイザによる様々な目標値の評価
10.5.3.4
最適なREDOログ・サイズの決定
第IV部 SQL文の最適化
11
問合せオプティマイザ
11.1
問合せオプティマイザの概要
11.1.1
オプティマイザ操作
11.1.2
問合せオプティマイザの構成要素
11.1.2.1
問合せ変換
11.1.2.2
見積り
11.1.2.3
プラン・ジェネレータ
11.1.3
バインド変数の照合
11.1.3.1
適応カーソル共有
11.1.3.2
バインド関連のパフォーマンスデータの表示
11.2
オプティマイザ・アクセス・パスの概要
11.2.1
全表スキャン
11.2.1.1
大量データにアクセスする場合に全表スキャンのほうが高速になる理由
11.2.1.2
オプティマイザが全表スキャンを使用する場合
11.2.1.3
全表スキャンのヒント
11.2.1.4
パラレル問合せの実行
11.2.2
ROWIDスキャン
11.2.2.1
オプティマイザがROWIDを使用する場合
11.2.3
索引スキャン
11.2.3.1
ブロックのI/O(行ではなく)の想定
11.2.3.2
索引一意スキャン
11.2.3.3
索引レンジ・スキャン
11.2.3.4
索引レンジ・スキャン降順
11.2.3.5
索引スキップ・スキャン
11.2.3.6
全体スキャン
11.2.3.7
高速全索引スキャン
11.2.3.8
索引結合
11.2.3.9
ビットマップ索引
11.2.4
クラスタ・アクセス
11.2.5
ハッシュ・アクセス
11.2.6
サンプル表スキャン
11.2.7
問合せオプティマイザによるアクセス・パスの選択方法
11.3
結合の概要
11.3.1
問合せオプティマイザによる結合文の実行方法
11.3.2
問合せオプティマイザによる結合の実行計画の選択方法
11.3.3
ネステッド・ループ結合
11.3.3.1
ネステッド・ループ結合の従来の実装と新規の実装
11.3.3.2
オプティマイザがネステッド・ループ結合を使用する場合
11.3.3.3
ネステッド・ループ結合のヒント
11.3.3.4
ネステッド・ループのネスト
11.3.4
ハッシュ結合
11.3.4.1
オプティマイザがハッシュ結合を使用する場合
11.3.4.2
ハッシュ結合のヒント
11.3.5
ソート/マージ結合
11.3.5.1
オプティマイザがソート/マージ結合を使用する場合
11.3.5.2
ソート/マージ結合のヒント
11.3.6
デカルト結合
11.3.6.1
オプティマイザがデカルト結合を使用する場合
11.3.6.2
デカルト結合のヒント
11.3.7
外部結合
11.3.7.1
ネステッド・ループ外部結合
11.3.7.2
ハッシュ結合外部結合
11.3.7.3
ソート/マージ外部結合
11.3.7.4
完全外部結合
11.4
実行計画の読み方と理解
11.4.1
EXPLAIN PLANの概要
11.4.2
実行計画のステップ
11.5
オプティマイザ動作の制御
11.5.1
問合せオプティマイザ機能の有効化
11.5.2
オプティマイザの目標の選択
11.5.2.1
OPTIMIZER_MODE初期化パラメータの設定
11.5.2.2
オプティマイザの目標変更に対するヒントの使用
11.5.2.3
データ・ディクショナリ内のオプティマイザ統計
12
EXPLAIN PLANの使用方法
12.1
EXPLAIN PLANについて
12.1.1
実行計画の変化理由
12.1.1.1
スキーマの相違
12.1.1.2
コストの相違
12.1.2
排除行数の最少化
12.1.3
実行計画以外の考慮事項
12.1.3.1
V$SQL_PLANビューの使用
12.1.4
EXPLAIN PLANの制限事項
12.2
PLAN_TABLE出力表
12.3
EXPLAIN PLANの実行
12.3.1
EXPLAIN PLANでの文の指定
12.3.2
EXPLAIN PLANでの別の表の指定
12.4
PLAN_TABLE出力の表示
12.4.1
PLAN_TABLE出力のカスタマイズ
12.5
EXPLAIN PLAN出力の読み方
12.6
EXPLAIN PLANによるパラレル実行の表示
12.6.1
EXPLAIN PLANによるパラレル問合せの表示
12.7
EXPLAIN PLANによるビットマップ索引の表示
12.8
EXPLAIN PLANによる結果キャッシュの表示
12.9
EXPLAIN PLANによるパーティション・オブジェクトの表示
12.9.1
EXPLAIN PLANによるレンジ・パーティション化およびハッシュ・パーティション化の表示の例
12.9.1.1
ハッシュ・パーティション化の計画
12.9.2
コンポジット・パーティション・オブジェクトでのプルーニング情報の例
12.9.3
パーシャル・パーティション・ワイズ結合の例
12.9.4
フル・パーティション・ワイズ結合の例
12.9.5
INLIST ITERATORおよびEXPLAIN PLANの例
12.9.5.1
INリスト列が索引列である場合
12.9.5.2
INリスト列が索引でありパーティション列である場合
12.9.5.3
INリスト列がパーティション列である場合
12.9.6
ドメイン索引およびEXPLAIN PLANの例
12.10
PLAN_TABLE列
13
オプティマイザ統計の管理
13.1
オプティマイザ統計の概要
13.2
自動オプティマイザ統計収集の管理
13.2.1
自動オプティマイザ統計収集の有効化と無効化
13.2.2
統計収集時の考慮事項
13.2.2.1
手動統計を使用する場合
13.2.2.2
前のバージョンの統計のリストア
13.2.2.3
統計のロック
13.3
手動での統計の収集
13.3.1
DBMS_STATSプロシージャによる統計の収集
13.3.1.1
サンプリングを使用した統計収集
13.3.1.2
パラレル統計収集
13.3.1.3
パーティション・オブジェクトの統計
13.3.1.4
列統計情報とヒストグラム
13.3.1.5
失効している統計の判別
13.3.1.6
ユーザー定義統計
13.3.2
手動統計収集のプリファレンスの設定
13.3.3
統計を収集する時期
13.3.4
DBMS_STATSファンクションによる統計の比較
13.4
システム統計
13.4.1
作業負荷統計
13.4.1.1
作業負荷統計の収集
13.4.1.2
マルチブロック読取りカウント
13.4.2
非作業負荷統計
13.4.2.1
非作業負荷統計の収集
13.5
統計の管理
13.5.1
統計の保留
13.5.2
拡張統計の管理
13.5.2.1
列グループの統計の管理
13.5.2.2
式の統計の管理
13.5.3
前のバージョンの統計のリストア
13.5.4
統計のエクスポートとインポート
13.5.5
統計のリストアとインポートまたはエクスポートの相違点
13.5.6
表統計またはスキーマ統計のロック
13.5.7
統計の設定
13.5.8
統計の欠落の処理
13.6
動的統計の制御
13.6.1
動的統計の目的
13.6.2
動的統計の概念
13.6.2.1
動的統計レベル
13.6.2.2
オプティマイザで動的統計を使用するタイミング
13.6.3
動的統計レベルの手動設定
13.6.4
動的統計の無効化
13.7
統計の表示
13.7.1
表、索引および列の統計
13.7.2
ヒストグラムの表示
13.7.2.1
高さ調整済ヒストグラム
13.7.2.2
頻度ヒストグラム
14
索引およびクラスタの使用方法
14.1
索引パフォーマンスについて
14.1.1
論理構造のチューニング
14.1.2
SQLアクセス・アドバイザを使用した索引のチューニング
14.1.3
索引を付ける列と式の選択
14.1.4
コンポジット索引の選択
14.1.4.1
コンポジット索引のキーの選択
14.1.4.2
コンポジット索引のキーの順序付け
14.1.5
索引を使用する文の記述
14.1.6
索引を使用しない文の記述
14.1.7
索引の再作成
14.1.8
索引の縮小
14.1.9
一意でない索引による一意性の規定
14.1.10
ENABLE NOVALIDATE制約の使用方法
14.2
パフォーマンスを考慮したファンクション索引の使用方法
14.3
パフォーマンスを考慮したパーティション索引の使用方法
14.4
パフォーマンスを考慮した索引構成表の使用方法
14.5
パフォーマンスを考慮したビットマップ索引の使用方法
14.6
パフォーマンスを考慮したビットマップ結合索引の使用方法
14.7
パフォーマンスを考慮したドメイン索引の使用方法
14.8
パフォーマンスを考慮した表クラスタの使用方法
14.9
パフォーマンスを考慮したハッシュ・クラスタの使用方法
15
SQL計画の管理の使用方法
15.1
SQL計画ベースラインの概要
15.1.1
SQL計画ベースラインの目的
15.1.2
SQL計画ベースラインのアーキテクチャ
15.2
SQL計画ベースラインの管理
15.2.1
SQL計画ベースラインの取得
15.2.1.1
計画の自動取得
15.2.1.2
既存計画からのベースラインの作成
15.2.2
SQL計画ベースラインの選択
15.2.3
SQL計画ベースラインの改良
15.2.3.1
手動の計画ロードによる計画の改良
15.2.3.2
DBMS_SPM.EVOLVE_SQL_PLAN_BASELINEによる計画の改良
15.3
SQLチューニング・アドバイザでのSQL計画ベースラインの使用
15.4
固定SQL計画ベースラインの使用
15.5
SQL計画ベースラインの表示
15.6
SQL管理ベース
15.6.1
ディスク領域の使用量
15.6.2
消去方針
15.6.3
SQL管理ベースの構成パラメータ
15.7
SQL計画ベースラインのインポートとエクスポート
15.8
ストアド・アウトラインのSQL計画ベースラインへの移行
15.8.1
ストアド・アウトラインの移行の概要
15.8.1.1
ストアド・アウトラインの移行の目的
15.8.1.2
ストアド・アウトラインの移行方法
15.8.1.3
ストアド・アウトラインの移行のためのユーザー・インタフェース
15.8.1.4
ストアド・アウトラインの移行の基本ステップ
15.8.2
ストアド・アウトラインの移行の準備
15.8.3
アウトラインの移行によるSQL計画管理機能の使用
15.8.4
アウトラインの移行でのストアド・アウトライン動作の保存
15.8.5
ストアド・アウトラインの移行後のフォーローアップ・タスクの実行
16
SQLチューニングの概要
16.1
SQLチューニングの概要
16.2
チューニングの目的
16.2.1
ワークロードの削減
16.2.2
ワークロードの均衡化
16.2.3
ワークロードのパラレル化
16.3
高負荷SQLの識別
16.3.1
多くのリソースを消費するSQLの識別
16.3.1.1
特定のプログラムのチューニング
16.3.1.2
アプリケーションのチューニング/負荷の軽減
16.3.2
識別したSQLに関するデータの収集
16.3.2.1
チューニング中に収集する情報
16.4
自動SQLチューニング機能
16.4.1
ADDM
16.4.2
SQLチューニング・アドバイザ
16.4.3
SQLチューニング・セット
16.4.4
SQLアクセス・アドバイザ
16.5
効率的なSQL文の開発
16.5.1
オプティマイザ統計の確認
16.5.2
実行計画の検討
16.5.3
SQL文の再構成
16.5.3.1
ANDと=を使用した条件の組立て
16.5.3.2
WHERE句での変換列の回避
16.5.3.3
特定のタスクに対する専用のSQL文の作成
16.5.4
ヒントによるアクセス・パスおよび結合順序の制御
16.5.4.1
ビューを管理するときの注意
16.5.4.2
中間結果の格納
16.5.5
索引の再構成
16.5.6
トリガーおよび制約の変更または無効化
16.5.7
データの再構成
16.5.8
実行計画の長期的な保持
16.5.9
データへのアクセスを最小限に削減
16.5.9.1
CASE式を使用した複数のスキャンの組合せ
16.5.9.2
RETURNING句を持つDMLの使用
16.5.9.3
1つの文での必要なすべてのデータの変更
16.6
SQLテスト・ケースの作成
16.6.1
テスト・ケースの作成
16.6.1.1
Enterprise ManagerからのSQLテスト・ケース・ビルダーへのアクセス
16.6.1.2
DBMS_SQLDIAGを使用したSQLテスト・ケース・ビルダーへのアクセス
17
自動SQLチューニング
17.1
自動チューニング・オプティマイザの概要
17.1.1
統計分析
17.1.2
SQLプロファイリング
17.1.3
アクセス・パス分析
17.1.4
SQL構造分析
17.1.5
代替計画分析
17.2
自動SQLチューニング・アドバイザの管理
17.2.1
自動SQLチューニングの動作
17.2.2
自動SQLチューニングの有効化と無効化
17.2.3
自動SQLチューニングの構成
17.2.4
自動SQLチューニング・レポートの表示
17.3
SQLチューニング・アドバイザによる事後対応のチューニング
17.3.1
入力ソース
17.3.2
チューニング・オプション
17.3.3
アドバイザ出力
17.3.4
SQLチューニング・アドバイザ
17.3.4.1
SQLチューニング・タスクの作成
17.3.4.2
SQLチューニング・タスクの構成
17.3.4.3
SQLチューニング・タスクの実行
17.3.4.4
SQLチューニング・タスクのステータスのチェック
17.3.4.5
SQLチューニング・アドバイザの進捗のチェック
17.3.4.6
SQLチューニング・タスクの結果の表示
17.3.4.7
SQLチューニング・タスクに関するその他の操作
17.4
SQLチューニング・セットの管理
17.4.1
SQLチューニング・セットの作成
17.4.2
SQLチューニング・セットのロード
17.4.3
SQLチューニング・セットの内容の表示
17.4.4
SQLチューニング・セットの変更
17.4.5
SQLチューニング・セットの転送
17.4.6
SQLチューニング・セットの削除
17.4.7
SQLチューニング・セットに対するその他の操作
17.5
SQLプロファイルの管理
17.5.1
SQLプロファイルの概要
17.5.1.1
SQLプロファイルの推奨事項
17.5.1.2
SQLプロファイルの作成
17.5.1.3
SQLプロファイルのAPI
17.5.2
SQLプロファイルの受入れ
17.5.3
SQLプロファイルの変更
17.5.4
SQLプロファイルの削除
17.5.5
SQLプロファイルの転送
17.6
SQLチューニング・ビュー
18
SQLアクセス・アドバイザ
18.1
SQLアクセス・アドバイザの概要
18.1.1
SQLアクセス・アドバイザの概要
18.1.1.1
SQLアクセス・アドバイザ・リポジトリ
18.2
SQLアクセス・アドバイザの使用
18.2.1
SQLアクセス・アドバイザの使用手順
18.2.2
SQLアクセス・アドバイザの使用に必要な権限
18.2.3
タスクとテンプレートの設定
18.2.3.1
タスクの作成
18.2.3.2
テンプレートの使用方法
18.2.3.3
テンプレートの作成
18.2.4
SQLアクセス・アドバイザのワークロード
18.2.4.1
SQLチューニング・セットのワークロード
18.2.4.2
SQLチューニング・セットの使用方法
18.2.4.3
タスクとワークロードのリンク
18.2.5
推奨事項の処理
18.2.5.1
推奨事項とアクション
18.2.5.2
推奨オプション
18.2.5.3
評価モード
18.2.5.4
推奨事項分析中の中間結果の表示
18.2.5.5
推奨事項の生成
18.2.5.6
推奨事項の表示
18.2.5.7
推奨プロセスの停止
18.2.5.8
推奨事項のマーキング
18.2.5.9
推奨事項の変更
18.2.5.10
SQLスクリプトの生成
18.2.5.11
スクリプトにパーティション推奨事項が含まれる場合の特別な考慮事項
18.2.5.12
推奨事項が必要なくなった場合
18.2.6
クイック・チューニングの実行
18.2.7
タスクの管理
18.2.7.1
タスク属性の更新
18.2.7.2
タスクの削除
18.2.7.3
DAYS_TO_EXPIREパラメータの設定
18.2.8
SQLアクセス・アドバイザの定数の使用方法
18.2.9
SQLアクセス・アドバイザの使用例
18.2.9.1
ユーザー定義のワークロードの推奨事項
18.2.9.2
タスク・テンプレートを使用した推奨事項の生成
18.2.9.3
索引およびマテリアライズド・ビューの現在の使用状況の評価
18.3
高速リフレッシュとクエリー・リライトのためのマテリアライズド・ビューのチューニング
18.3.1
DBMS_ADVISOR.TUNE_MVIEWプロシージャ
18.3.1.1
TUNE_MVIEWの構文と操作
18.3.1.2
TUNE_MVIEWの出力結果へのアクセス
18.3.1.3
最適化されたサブマテリアライズド・ビューによる高速リフレッシュの有効化
19
オプティマイザ・ヒントの使用方法
19.1
オプティマイザ・ヒントの概要
19.1.1
ヒントの型
19.1.2
カテゴリ別のヒント
19.1.2.1
最適化アプローチと目標のヒント
19.1.2.2
オプティマイザ機能を有効化するヒント
19.1.2.3
アクセス・パスに関するヒント
19.1.2.4
結合順序のヒント
19.1.2.5
結合操作のヒント
19.1.2.6
オンライン・アプリケーション・アップグレードのヒント
19.1.2.7
パラレル実行のヒント
19.1.2.8
問合せの変換に関するヒント
19.1.2.9
その他のヒント
19.2
ヒントの指定方法
19.2.1
ヒント全セットの指定方法
19.2.2
ヒントにおける問合せブロックの指定方法
19.2.3
グローバル表のヒントの指定方法
19.2.4
複合索引ヒントの指定方法
19.3
ビューでのヒントの使用方法
19.3.1
ヒントおよび複合ビュー
19.3.2
ヒントとマージ可能ビュー
19.3.2.1
ビューでの最適化アプローチと目標のヒント
19.3.2.2
ビューに対するアクセス・パスと結合のヒント
19.3.2.3
ビュー内のアクセス・パスと結合のヒント
19.3.3
ヒントとマージ不可能ビュー
20
プラン・スタビリティの使用方法
20.1
実行計画を保持するためのプラン・スタビリティの使用方法
20.1.1
プラン・スタビリティでのヒントの使用方法
20.1.1.1
アウトラインによるヒントの使用方法
20.1.2
アウトラインの格納
20.1.3
プラン・スタビリティの有効化
20.1.4
付属パッケージを使用したストアド・アウトラインの管理
20.1.5
アウトラインの作成
20.1.5.1
ストアド・アウトラインのカテゴリ名の使用方法
20.1.6
ストアド・アウトラインの使用方法
20.1.7
アウトライン・データの表示
20.1.8
アウトライン表の移動
20.2
問合せオプティマイザのアップグレードによるプラン・スタビリティの使用方法
20.2.1
RBOから問合せオプティマイザへの移行
20.2.2
問合せオプティマイザを使用する新規Oracleリリースへの移行
20.2.2.1
テスト・システムでのアップグレード
21
アプリケーション・トレース・ツールの使用方法
21.1
エンドツーエンド・アプリケーションのトレース
21.1.1
エンドツーエンド・トレースにおける統計収集の有効化および無効化
21.1.1.1
クライアント識別子に対する統計収集
21.1.1.2
サービス、モジュールおよびアクションに対する統計収集
21.1.2
エンドツーエンド・アプリケーションのトレースで収集した統計の表示
21.1.3
エンドツーエンド・トレースにおける有効化および無効化
21.1.3.1
クライアント識別子のトレース
21.1.3.2
サービス、モジュールおよびアクションのトレース
21.1.3.3
セッションのトレース
21.1.3.4
インスタンス全体またはデータベース全体のトレース
21.1.4
エンドツーエンド・トレースにおける使用可能なトレースの表示
21.2
trcsessユーティリティの使用方法
21.2.1
trcsessの構文
21.2.2
trcsessの出力例
21.3
SQLトレースとTKPROFについて
21.3.1
SQLトレース機能について
21.3.2
TKPROFについて
21.4
SQLトレース機能とTKPROFの使用方法
21.4.1
手順1: トレース・ファイル管理用の初期化パラメータの設定
21.4.2
手順2: SQLトレース機能を使用可能にする方法
21.4.3
手順3: TKPROFによるトレース・ファイルのフォーマット
21.4.3.1
TKPROFの出力例
21.4.3.2
TKPROFの構文
21.4.3.3
TKPROF文の例
21.4.4
手順4: TKPROF出力の解釈
21.4.4.1
TKPROFの表形式の統計
21.4.4.2
行ソースの操作
21.4.4.3
待機イベント情報
21.4.4.4
統計の精度の解釈
21.4.4.5
再帰的コールについて
21.4.4.6
TKPROFのライブラリ・キャッシュ・ミス
21.4.4.7
SQLトレースでの文の切捨て
21.4.4.8
TKPROFでのSQL文を発行するユーザーの識別
21.4.4.9
TKPROFの実行計画
21.4.4.10
チューニングする文の決定
21.4.5
手順5: SQLトレース機能統計の格納
21.4.5.1
TKPROFによる出力SQLスクリプトの生成
21.4.5.2
TKPROFによる出力SQLスクリプトの編集
21.4.5.3
出力表の問合せ
21.5
TKPROFの解釈における誤りの回避
21.5.1
引数トラップの回避
21.5.2
読取り一貫性トラップの回避
21.5.3
スキーマ・トラップの回避
21.5.4
タイム・トラップの回避
21.6
TKPROFの出力例
21.6.1
TKPROFヘッダーのサンプル
21.6.2
TKPROF本体のサンプル
21.6.3
TKPROFサマリーのサンプル
用語集
索引