一流のDBAだけが知るOracle管理の最重要ポイントをまとめた「門外不出」シリーズの第2弾です。運用時最大の課題であるパフォーマンスについては、実行効率の良いSQLの書き方とチューニング方法のほか、システム規模別のコストベースオプティマイザの使いこなしを紹介。基礎知識となるディスクI/Oの仕組みも解説します。トラブル対応では、障害発生時における問題箇所の切り分けと暫時対応を具体例をもとに体験的に学習。また、文字化けの回避やOracleのアップグレードなど、ほかでは入手しづらいノウハウも収録しました。Oracle管理者には必携の1冊です。
本書は、月刊DB Magazineの特集/連載記事7本を加筆/再編集し、書籍としてまとめたものです。
第1章 パフォーマンスを最優先したSQLの書き方とチューニング
SECTION 1 SQLの実行計画から読み取る索引の効果的な使い方
SQLを処理する流れ
実行計画の取得方法
SQL統計情報の基本的な見方
実行計画の基本的な見方
索引の適切な作成とは
結合と索引
ソートと索引
まとめ
SECTION 2 アクセスブロック数を最小化するSQLチューニングの定石
ハッシュ結合を使う
アンチジョインを使う
何でも1つにまとめない
UNION ALLの削除
副問い合わせの妙
分析関数を知っておこう
型に気を付けよう
関数に気を付けよう
マテリアライズドビューの使用を検討する
性能情報を見る上での注意点
とても長い実行計画と向き合うには
まとめ
第2章 体験的・現場のトラブルシューティング 緊急対応編
SECTION 1 処理の遅延とパフォーマンスに関するトラブルシューティング
はじめに
トラブル 1 システムのどこが遅いのか分からない
トラブル 2 待機イベントが多い
トラブル 3 ロック待ち(enqueue)が発生
トラブル 4 ディスクスペースが足りない:log file switch(archiving needed)待ち
トラブル 5 ディスク性能が足りない:I/Oの遅延
トラブル 6 I/O回数が多くてSQLが遅い
トラブル 7 CPUを多量に消費している
トラブル 8 実行計画が変わってしまう
トラブル 9 CPU使用率などのグラフがおかしい
SECTION 2 DBのダウン時やエラー発生時のトラブルシューティング
トラブル 1 インスタンスが落ちてしまった
トラブル 2 Oracleに接続されていませんというエラーが発生
トラブル 3 データベースに接続できない
トラブル 4 SQLの実行でORA-1555が発生
トラブル 5 TEMP表領域が足りないというエラーが発生
トラブル 6 表領域が足りないというエラーが発生
SECTION 3 DBの破壊や誤ったデータ削除に関するトラブルシューティング
トラブル 1 データを消してしまった
トラブル 2 データベースが立ち上がらない(完全にリカバリする)
トラブル 3 データベースが立ち上がらない(不完全にリカバリする)
トラブル 4 ノーアーカイブログモードのリカバリ
SECTION 4 すべてのトラブルにおいて共通する対応のコツ
トラブル確認のコツと基本的な対応手順
暫定対応と恒久対応
TAR(技術問い合わせ)のコツ
ログやマニュアルの見方
まとめ
第3章 体験的・現場のトラブルシューティング 見える化編
SECTION 1 一時的な処理遅延が発生するトラブル
トラブル 1 CPU使用率は高くないが一時的な処理遅延が発生
トラブル 2 ハングに近いスローダウンが起きた
システム運用の現場で役立つ「見える化」
SECTION 2 Oracleのアーキテクチャと「DBの見える化」に関する基礎知識
OracleのアーキテクチャとDBを見える化するための情報
SECTION 3 V$SESSIONで取得したデータを活用して解決する
トラブル 3 一時的に処理ができなくなったがV$SESSIONとV$SYSSTATを記録済み
トラブル 4 どこかで処理が止まっているがalert.logにはメッセージが出ていない
トラブル 5 夜間バッチの速度が毎日変動する
トラブル 6・7 停止している業務処理をリアルタイムに調査/対処する
おわりに
第4章 Oracleの文字化け徹底対策
SECTION 1 典型的なトラブル事例に見る文字化けの仕組み
DBAに任命!
文字化けが発生!
どうして化けているのか特定しろ!
キャラクタセットの変更だ! しかし・・・
移行失敗だ!
どこで失敗しているかを探せ!
手順を修正し移行を再実行!
文字化けはしなくなったが・・・
SECTION 2 迅速で適切な対策のために文字コード体系の歴史を知る
体系的な知識の大切さ
文字セットとエンコーディングの違い
世界初の文字コード「ASCII」
メインフレームで利用される「EBCDIC」
各言語圏でASCIIを拡張した「ISO 646」
多言語文字の混在表現を実現した「ISO 2022」
漢字とかなを表現する「JIS X 0208」
電子メールで日本語を表現する「ISO-2022-JP」
UNIX上で日本語を表現する「EUC-JP」
標準の日本語文字コード「Shift-JIS」
機種依存文字/外字
文字コードの世界標準「Unicode」
まとめ
SECTION 3 Oracle+Java+Webアプリの文字化け対策
Oracleのデータベースキャラクタセット
OracleとJavaの文字コードの違い
3層構造Webアプリの文字コード変換
どのキャラクタセットを選択すべきか?
文字コードを確認するには
データベースキャラクタセットに関するQ&A
まとめ
第5章 快適!コストベースオプティマイザ操縦術
SECTION 1 オプティマイザの概要と歴史
RBOとCBOの違い
オプティマイザの操作
オプティマイザの歴史
まとめ
SECTION 2 システム規模別の統計情報運用術
3タイプのシステム例
統計情報の運用(自動統計収集)
コスト重視タイプ
バランス重視タイプ
リスク回避重視タイプ
まとめ
SECTION 3 CBOにさらに効率的な実行計画を生成させるワザ
動的サンプリングを使用した対処方法
システムタイプ別動的サンプリング活用方法
初期化パラメーターの運用
SQLの運用で重要なバインド変数とバインドピーク
まとめ
第6章 DBMSから見たストレージ技術の基礎と活用
SECTION 1 アーキテクチャから学ぶストレージの基本と使い方
ディスクのアーキテクチャ
ストレージのインターフェイス
SANとNASはどこがどう違うのか
複数のディスクを組み合わせて信頼性を高めるRAID
ストレージの仮想化が進み物理的な複雑さを隠蔽
ストレージにはどんな障害があるのか
同期I/Oと非同期I/O
書き込みI/Oと同期書き込み(書き込みの保証)
ライトキャッシュが効果的なアプリケーションとは
ファイルシステムとrawデバイス
RDBMSのI/O周りのアーキテクチャ
これからストレージはどうなっていくのか
その他の注目すべき機能など
まとめ
SECTION 2 ディスクを考慮した設計とパフォーマンス分析
キャッシュの存在
スループット(I/O数)重視で考える
ディスクのI/Oネックを避ける設計
表とインデックスの物理ディスクは分けるべきか
ディスクの設計方針「S.A.M.E.」
DBシステムの耐障害性について
ディスクを含めたDBシステムのパフォーマンスについて
DBMS側でしか行なえない性能分析とOracleの待機の分析方法
まとめ
第7章 Oracleの正しいアップグレード指南
SECTION 1 アップグレードの基礎知識
はじめに
アップグレード時に必要な事前確認
SECTION 2 6つのアップグレード手法
(1)アップグレードスクリプトによるアップグレード
(2)Export/Importユーティリティによるアップグレード
(3)データアンロードツール+SQL*Loaderによるアップグレード
(4)トランスポータブル表領域によるアップグレード
(5)DB Link接続によるアップグレード
(6)Pro*Cの移行アプリによるアップグレード
SECTION 3 アップグレード手法の選択基準
アップグレード元DBのバージョン制限
データ量とダウンタイム
索引の再作成時間と統計情報の再収集時間
追加のディスク領域
データベース構成の変更
各手法のまとめ
おわりに
付属データはこちら
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
刷数は奥付(書籍の最終ページ)に記載されています。
書籍の種類:
書籍の刷数:
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
発生刷 | ページ数 | 書籍改訂刷 | 電子書籍訂正 | 内容 | 登録日 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
1刷 | 012 LIST7下から2行目~ |
2刷 | 未 |
|
2007.04.03 | ||||||
1刷 | 026 LIST15 上から1行目 |
2刷 | 未 |
|
2007.04.03 | ||||||
1刷 | 041 LIST3 上から10行目~11行目 |
2刷 | 未 |
|
2007.04.03 | ||||||
1刷 | 046 LIST3 上から7~8行目/17~18行目 |
2刷 | 未 |
|
2007.04.03 | ||||||
1刷 | 048 LIST7 上から1~2行目 |
2刷 | 未 |
|
2007.04.03 | ||||||
1刷 | 053 LIST9 上から8、11、16、19、22行目 |
2刷 | 未 |
|
2007.04.04 | ||||||
1刷 | 069 LIST4欄外 |
2刷 | 未 |
|
2007.04.04 | ||||||
1刷 | 161 LIST3 seswait.sqlの中身(9iR2以前版)リスト前に追記 |
2刷 | 未 |
|
2007.04.04 |