本書は好評既刊『門外不出のOracle現場ワザ』『続・門外不出のOracle現場ワザ』を再編・加筆した新刊です。現代のDBエンジニアが必要とするパートを厳選し、最近の情報を加筆・修正して構成。Oracleデータベースのエキスパート達が執筆しており、現場で培ったノウハウを惜しみなく解説しています。DBエンジニアには、効率の良い運用と、万が一の際の迅速なトラブル対応/回避が求められます。本書ではそれを実現するために、Oracleが備えている機能が、どのような思想のもとに実装されているのかを紹介し、それを踏まえた運用・管理のノウハウを解説しています。これにより、Oracleの本質的な理解が得られ、未経験のトラブルにも戦略的に対処することができるようになるでしょう。
待機イベントは「悪」か?
Oracle の3 つの基本動作モデル
パフォーマンスの測定方法と平均値/合計値
サーバープロセスとバックグラウンドプロセス
待機イベントとは
待機イベントと統計値の関係
待機イベントのカテゴリが待機クラス
真の待機イベントとは
世間で一般的なOracle パフォーマンス分析方法の問題点①
──合計と平均のマジック
世間で一般的なOracle パフォーマンス分析方法の問題点②
──瞬間的な待ち行列のマジック
待ち行列で探るパフォーマンス劣化の原因
高負荷な状態のほうが処理が速い謎
世間で一般的なOracle パフォーマンス分析方法の問題点③
──計測ポイントのマジック
セッション数が多くてもスループットは同じ
待ち時間が多くてもスループットは同じ
レスポンスタイムが短くてもスループットは同じ
見方によって変わるパフォーマンス
遅延の瞬間とその状態を捉える方法
遅延の発生箇所を探る
遅延している瞬間のOracle の状態は?
Automatic Workload Repository(あるいは、STATSPACK)の
効果
遅延原因がDB にあるかどうかを判断する方法
問題をどう切り分けるか
SQL 文の処理時間を減らすチューニング
AWR やSTATSPACK の使いどころ
SQL トレースの機能
SQL リアルタイム監視の機能
Oracle Net のトレース
CHAPTER3 OSとI/Oはパフォーマンス低下にどう影響するか
Oracle とI/O・ネットワーク・OS の関係
ディスクアクセスまで含めたOracle の動作モデル
ネットワークまで含めたOracle の動作モデル
ネットワークの冗長化とキャパシティ
OS まで含めたOracle の動作モデル
OS の稼動状態とOracle への影響
OS の3 つの状態とCPU リソース不足
run キューのデータの見方
低使用率でもCPU がボトルネックのケース
CPU リソースを大量消費するSQL 文
OS メモリの枯渇
Oracle のPGA 管理
最近のOracle はPGA を可能な限り利用し高速化を図っている
OS から見たOracle のメモリ利用状況
DB の性能とディスクI/O
I/O の遅延によりOracle が待たされるケース
I/O 性能の計測方法
時折発生する待機の計測方法
性能不足のディスクを計測する方法
OS のコマンドによるシステムの計測
wait I/O が大きい= I/O ボトルネック?
I/O データの例
少し難しいI/O パフォーマンストラブル
まとめ
RBO とCBO のメリット/デメリット
SQL 文の処理におけるオプティマイザの役割
SQL 文の処理の流れ
オプティマイザが行なう処理
オプティマイザを理解するためのポイント
CBO のアクセスパス選択方法
CBO とヒストグラム
頻度分布ヒストグラム
高さ調整ヒストグラム
ヒストグラムを使用する場合の注意点
CBO とヒストグラムのまとめ
CBO とバインド変数
バインドピーク
CURSOR_SHARING
CPU+I/O コストモデル
ワークロード下のシステム統計
CPU コスト統計の有無によるフルテーブルスキャンの評価
CBO とフルテーブルスキャン
CBO とキャッシュ効率
CBO とパラメータ
OPTIMIZER_MODE
CBO と結合順序
自動統計収集
GATHER_STATS_JOB
DBMS_STATS
自動統計収集の使い方
統計再収集のリスクと統計履歴の保存
動的サンプリング
動的サンプリングの用途
オプティマイザヒント
プランスタビリティ
自動チューニングオプティマイザ
SQL Tuning Advisor
CBO を使いこなすためには
まとめ
コネクションとは?
専用サーバー接続
サーバープロセス生成のコスト
サーバープロセス保持のコスト
コネクションのマイナス要因
接続のタイミング
コネクションプーリングの実装技術
物理接続数のコントロール
最小物理接続数までの接続の生成方法
最小物理接続数から最大物理接続数までの接続の生成方法
最大物理接続数を超える要求の処理方法
アイドル接続の奪取と切断
アイドル論理接続の奪取と切断
アイドル物理接続の切断
アイドル論理接続の奪取
障害時の挙動
アプリケーション側の対処
コネクションプーリングに付随する技術
文キャッシュ
共有サーバー構成
OCI コネクションプーリング
DRCP
JAVA におけるコネクションプーリング
DRIVERMANAGER クラスとデータソース
JNDI 定義部分
監視部分
コネクションプーリングの選択基準
接続時の応答時間
アイドル状態のコネクション
文キャッシュ
監視
机上の検証
JAVAアプリケーションとコネクションプーリング
ORACLE UNIVERSAL CONNECTION POOL FOR JDBC
DBCP
商用AP サーバー
コネクションプーリングの切り替え
Tomcat の場合
Struts の場合
WebLogic/WebSphere の場合
.NETのコンクションプーリング ODBC
大規模なWEB アプリケーションとIIS
おわりに
実システムでの経験
もしEM がなかったら
EM の使いどころ
Database Control とGrid Control
AWR(自動ワークロード・リポジトリ)
ADDM(自動データベース診断モニタ)
アドバイザ
SQL チューニング・アドバイザ
設計・開発フェーズからのDBA 参画の重要性
単体テスト時のSQL チューニング・アドバイザによる品質チェック
サンプル・スクリプト(sqltune
実行例1(索引を使用できないSQL 記法)
実行例2(無駄に複雑なSQL)
性能テスト時のADDM による分析・評価の利用
実行例1(バインド変数を使用していないSQL の問題)
実行例2(「採番テーブル」方式の問題)
まとめ
DBA に任命!
文字化けが発生!
どうして化けているのか特定しろ!
キャラクタセットの変更だ! しかし
移行失敗だ!
どこで失敗しているかを探せ!
手順を修正し移行を再実行!
文字化けはしなくなったが
体系的な知識の大切さ
文字セットとエンコーディングの違い
文字セット
エンコーディング
世界初の文字コード「ASCII」
メインフレームで利用される「EBCDIC」
各言語圏でASCII を拡張した「ISO 646」
多言語文字の混在表現を実現した「ISO 2022」
漢字とかなを表現する「JIS X 0208」
電子メールで日本語を表現する「ISO-2022-JP」
標準の日本語文字コード「Shift-JIS」
機種依存文字/外字
EUC-JP
Shift-JIS
文字コードの世界標準「Unicode」
世界標準の必要性
Unicode の誕生
Unicode の拡張
Unicode の文字セット
Unicode のエンコーディング
まとめ
Oracle のデータベースキャラクタセット
Oracle のUnicode
Oracle 文字変換の仕組み
Oracle で当初起きた問題
Oracle とJava の文字コードの違い
JDBC ドライバのType
Oracle JDBC ドライバの文字変換
3 層構造Web アプリの文字コード変換
JA16SJISTILDE の登場
どのキャラクタセットを選択すべきか?
日本語以外のマルチバイト文字を格納する場合
日本語とASCII だけを格納する場合
JDBC ドライバ(Thin)のパフォーマンスを最優先する場合
外字や機種依存文字を利用する場合
文字コードを確認するには
文字コード変換では拡張係数にも注意
データベースキャラクタセットに関するQ&A
NCHAR って何?
文字変換にパフォーマンスの違いはあるの?
何回変換が起こる?
データベースキャラクタセットを変更できる?
まとめ
はじめに
アップグレードを考えるタイミング
製品のサポート期間
現行システムの課題解決
新機能の活用
アップグレードに必要なタスク
アップグレードのメリット
アップグレードに対する意識
アップグレードを運用に組み込もう!
Oracle のサポート期間とアップグレード
システム計画段階からアップグレードを考えよう!
システムライフサイクルを意識しよう!
DBUA によるアップグレード
コマンドラインとDBUA のどちらを選ぶか
アップグレード前情報ツールの実行
アップグレードスクリプト実行後に必要なタスク
Data Pump ユーティリティによるアップグレード
データアンロードツール+ SQL*Loader によるアップグレード
DB Link 接続によるアップグレード
Oracle GoldenGate によるアップグレード
ダウンタイム
GoldenGate でのダウンタイム
アップグレードスクリプトでのダウンタイム
残りの3 手法におけるデータ量とダウンタイム
コスト
新規ハードウェア・ソフトウェア購入
追加のディスク領域
アップグレード時に必要となるSQL やスクリプト、および移行用ツールの コスト
アップグレードを手順として確立する際のコスト
データベース構成の変更
アップグレードと同時にDB の構成を変更できる手法
アップグレードと同時にDB の構成を変更できない手法
考えるべき制約事項
移行対象データに含まれるデータ型
アップグレード元DB のバージョン制限
各手法のまとめ