五十嵐 建平 著
大塚 信男 著
小田 圭二 著
鈴木 博貴 著
村方 仁 著
管理者を悩ます、Oracleデータベースのパフォーマンス不足や突然の稼働停止。本書では、「なぜ、そうしたトラブルは発生するのか」をOracleの機能と動作から明らかにし、問題解決への具体的なノウハウを紹介します。パフォーマンス分析から、障害を回避するDB設計と監視/テストの方法、DBアクセスを効率化するコネクションプーリングの選択、SQLオプティマイザの仕組みと管理までの幅広いテーマに対し、実践的なアプローチで解説。毎日現場でトラブルと向き合う日本オラクルのOracleコンサルタントだから伝えたい、本物の知識と技術を伝授します。
本書は月刊DBマガジンの特集記事5本を加筆/再編集し、書籍としてまとめたものです。
第1章 目からウロコのパフォーマンス分析テクニック
PART 1 間違いだらけのOracleパフォーマンス分析
待機イベントは「アク」か?
Oracleの3つの基本操作モデル
パフォーマンスの測定方法と平均値/合計値
サーバープロセスとバックグラウンドプロセス
待機イベントとは
世間で一般的なOracleパフォーマンス分析方法の問題点(1)―合計と平均のマジック
世間で一般的なOracleパフォーマンス分析方法の問題点(2)―瞬間的な待ち行列のマジック
世間で一般的なOracleパフォーマンス分析方法の問題点(3)―計測ポイントのマジック
PART 2 標準ツールでOracleの状態を正確に知る方法
遅延の瞬間とその状態を捉える方法
STATSPACKの効果
SQLトレースの機能
Oracle Netのトレース
PART 3 OSとI/Oはパフォーマンス低下にどう影響するか
OracleとI/O・ネットワーク・OSの関係
OSの稼働状態とOracleへの影響
DBの性能とディスクI/O
まとめ
第2章 データベース管理 転ばぬ先の杖~監視/テスト編
PART 1 運用時の大トラブルを防ぐ監視/検知/対応のポイント
障害の積極的な予防
障害発生の早期検出と初動対応
パフォーマンス障害の原因の切り分け
バックアップ/リカバリのトラブルとその解決策
システムの重要性に応じた運用計画を
PART 2 パフォーマンステストにおける環境作りと統計情報の分析
パフォーマンステストの本質を見極める
転ばぬ先のデータ収集
絶対オススメ!テスト前に行なう2つの儀式
テスト環境でのジレンマ
本番環境をイメージできるかが勝負
PART 3 障害テストにおける注意点と障害箇所別テスト方法
どんな点に注意してテストすべきか
どのようにテストするべきか
まとめ
第3章 データベース管理 転ばぬ先の杖~設計編
PART 1 業務アプリケーション開発チーム編
トラブルは業務要件のヒアリングから始まる
ER設計のポイント
アプリケーション側で実装すべきこと
そのほかの検討事項
PART 2 インフラ設計チーム編
方式設計を甘く見てはいけない
インフラ設計の盲点
ストレージの設計とトラブル
ネットワークのトラブル
まとめ
第4章 Oracleの頭脳を探れ オプティマイザ徹底研究
PART 1 コストベースオプティマイザの基本機能
RBOとCBOのメリット/デメリット
SQL文の処理におけるオプティマイザの役割
オプティマイザを理解するためのポイント
PART 2 CBOは何を見てどう判断するのか
CBOのアクセスパス選択方法
CBOとヒストグラム
CBOとバインド変数
バインドピーク
CURSOR_SHARING
I/O+CPUコストモデル
CBOとフルテーブルスキャン
CBOとキャッシュ効率
CBOとパラメータ
CBOと結合順序
PART 3 オプティマイザ統計の管理
自動統計収集
統計再収集のリスクと統計履歴の保存
動的サンプリング
PART 4 実行計画の固定と自動チューニングオプティマイザの活用方法
オプティマイザヒント
プランスタビリティ
自動チューニングオプティマイザ
CBOを使いこなすためには
まとめ
第5章 性能が跳ね上がる秘伝のコネクションプーリング
PART 1 コネクションプーリングの仕組み
コネクションとは?
コネクションプーリングの実装技術
コネクションプーリングに付随する技術
PART 2 Javaと.NETで使うコネクションプーリングの選択
Javaにおけるコネクションプーリング
コネクションプーリングの選択基準
Javaアプリケーションとコネクションプーリング
コネクションプーリングの切り替え
.NETのコネクションプーリング
おわりに
TIP
DBへの接続について
ログを取得するときのコツ
パフォーマンス情報取得時の注意事項
パフォーマンス情報はきちんと取ること
oraperf.com
パフォーマンス分析に便利なOracle 10gの機能
パフォーマンス情報の取得は日ごろから
DBMS_STATSによる統計情報の取得
リファレンスマニュアル
KROWNを活用した予防保守
ローリングアップグレード
製品保守期限とバージョンアップ計画
dump_destについて
手順書のメンテナンス
STATSPACKの自動取得
AWRとSTATSPACK
パフォーマンス監視を活用したキャパシティプランニング
Oracleのキャッシュヒット率とは?
ランダム関数
理想のデータと負荷
スナップショットの負荷と間隔
トレースファイルの削除とメンテナンス
リカバリしながら業務を運用する方法について
アプリケーションのログがボトルネックにならないように注意
最適ではない実行計画が選ばれることがあるのはなぜか?
“できるだけ早く回復”の“できるだけ”って??
ユーザーの誤操作やアプリケーションのバグによるデータ不整合をデータベースのリカバリで復旧すべきか
障害検知がエンドユーザーからの通報で良いのか?
ハードパスとソフトパス
EVENT10046
高さ調整とヒストグラムの読み取り方
バインドピークがOFFの場合のデフォルトの選択率
バインド変数とEXPLAIN PLAN
CPU_COST + IO_COST
オプティマイザとキャッシュ効率
オプティマイザが参照するパラメータ
統計が「古く」なった表
自動統計収集の無効化
ANALYZEコマンドと統計履歴
オプティマイザ統計のテスト環境への移行
OPTIMIZER_DYNAMIC_SAMPLINGパラメータ
定期的にSQLを発行するシェルを作成するには?
障害を検知するSQL文として最も適切なのは?
空コミットはしないほうが良い?
物理接続および論理接続のエラーハンドリング
Oracle Connection Cacheの柔軟なコネクション管理機能
Fillメソッドの魔力
コネクション生存期間と.NET
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。