図解が多くてわかりやすいと好評の「絵で見てわかる」シリーズに新刊が登場します。今回のテーマは“高可用性・耐障害性・高性能なシステム”です。現在の情報システムに求められるさまざまな要件を満たすために、DB視点ではどのような設計を行うべきかを各要件に対して解説しています。
Oracleデータベースは、さまざまな要件を満たすための機能が豊富に実装されています。しかし、その豊富さゆえに把握しきれず使いこなせていないエンジニアが多く存在します。そうした機能を使いきるためには、どの要件に対して、どの項目を、どのように設定するのかという設計時の考慮が非常に重要です。
本書では長年Oracleデータベースによるシステム構築に携わってきた精鋭コンサルタント達が自身の経験を踏まえ、各々の得意分野について設計時の考慮事項をわかりやすく解説しています。また、システム構築の流れを一気通貫で見せながら、各フェーズごとに詳しく解説。もちろん図解も多用しているので、実務経験の浅い読者でも読み進められる内容になっています。
CHAPTER 1 システム構築の流れ
1.1 一般的なシステム構築の流れ
1.1.1 ソフトウェア開発プロセス
ウォーターフォール型開発プロセスとその他の開発プロセス
1.1.2 アプリケーション開発とインフラ構築
1.1.3 システム構築の体制
1.2 インフラ構築の流れ
1.2.1 要件定義
1.2.2 基本設計
1.2.3 詳細設計
1.2.4 構築/実装
1.2.5 テスト
1.2.6 移行
1.2.7 運用/保守
CHAPTER 2 要件定義
2.1 要件定義とは
2.2 機能要件と非機能要件
2.3 インフラに影響する非機能要件定義
非機能要件定義は難しい
非機能要件を定義するためのツール群
2.4 主な非機能要件
2.4.1 可用性要件
継続性
運用スケジュール
業務継続性
目標復旧水準
稼働率
回復性
可用性確認
2.4.2 性能/拡張性要件
業務処理量
通常時の業務量
業務量増大度
保管期間
性能目標値
オンラインレスポンス、バッチレスポンス
リソース拡張性
CPU/メモリ拡張性
2.4.3 運用/保守性要件
通常運用
バックアップ
運用監視
保守運用
運用負荷削減
運用環境
開発用環境/試験用環境の設置
マニュアル準備レベル
サポート体制
ライフサイクル期間
2.4.4 移行性要件
移行時期
時間に関する検討事項
並行稼働の有無
移行対象
移行データ量
2.4.5 セキュリティ要件
アクセス/利用制限
認証機能/利用制限
データの秘匿
データ暗号化
不正追跡/監視
不正監視
2.4.6 システム環境/エコロジー要件
CHAPTER 3 基本設計
3.1 基本設計とは
データベース構成
外部連携方式設計
データベース接続方式設計
運用/保守方式設計
移行方式設計
セキュリティ方式設計
環境設計
システム全体構成
3.1.1 基本設計の進め方
3.1.2 基本設計のポイント
方式を選択したことによる運用への影響を分かりやすく示す
以降の工程で作業がしやすいように項目を分割しておく
要件定義の誤りや漏れがあれば修正する
不安材料があれば、机上確認だけでなく実機検証をする
3.2 基本設計の具体例
まずは、要件を整理する
要件を満たすことが可能な案を検討する
各案のメリット・デメリットについて考察する
採用する案を決定する
CHAPTER 4 データベース物理設計
4.1 OS設計
4.1.1 CPU設計
CPU設計の主なポイント
4.1.2 メモリ設計
メモリ設計の主なポイント
4.1.3 ストレージ設計
ディスクの構造
可用性向上技術
RAID 0
RAID 1
RAID 5
RAID 6
RAID 1+0
RAID 方式の特徴比較
接続方式
内蔵ディスク
SAN(Storage Area Network)
NAS(Network Attached Storage)
各方式の比較
サーバとストレージ間の冗長化
ディスク容量の計算
ストレージ設計の主なポイント
4.1.4 ネットワーク設計
IPアドレス
通信経路
回線速度
冗長化
ネットワーク設計の主なポイント
4.1.5 OSユーザ設計
OS ユーザ設計の主なポイント
4.1.6 OSパラメータ設計
OSパラメータ設計の主なポイント
4.1.7 OS環境設計
インストールディレクトリ
環境変数
OSパラメータ設計の主なポイント
4.1.8 その他のOS設計
時刻同期設計
ラージページ
その他のOS設計の主なポイント
4.2 データベース設計
4.2.1 サーバプロセス設計
サーバプロセス設計の主なポイント
4.2.2 インスタンス設計
SGAを構成するコンポーネント
共有プール
データベースバッファキャッシュ
Javaプール
ラージプール
Streamsプール
REDOログバッファ
SGA設計
SGA設計の主なポイント
バックグラウンドプロセス設計
PMON
SMON
DBWn
CKPT
LGWR
ARCH
その他
4.2.3 データベース設計
制御ファイル
データファイル
REDOログファイル
アーカイブREDO ログファイル
初期化パラメータファイル
パスワードファイル
データベース設計の主なポイント
4.2.4 DBパラメータ設計
データベース名
ドメイン名
グローバルデータベース名
インスタンス名
ブロックサイズ
キャラクタセット
ナショナルキャラクタセット
アーカイブログモード
DBパラメータ設計の主なポイント
4.3 表領域設計
4.3.1 データファイル
データファイルの種類
データファイルと表領域のサイズ制限
データファイル追加時の注意点
データファイルの配置に関する注意点
データファイル設計の主なポイント
4.3.2 表領域の管理
表領域管理
セグメント管理
表領域管理設計の主なポイント
4.3.3 表領域の種類
ユーザ表領域
表と索引の表領域は分ける
業務別やサブシステムごとに表領域を分ける
SYSTEM表領域
SYSAUX表領域
一時表領域
UNDO表領域
表領域の種類別設計の主なポイント
4.4 スキーマ設計
4.4.1 ユーザ
ユーザとスキーマ
ユーザの作成
デフォルト表領域
一時表領域
プロファイル
アカウントロック
4.4.2 権限とロール
権限
システム権限
オブジェクト権限
権限の付与方針
ロール
4.4.3 スキーマオブジェクト
ネーミング(名前)について
4.4.4 表
データ型
指定パラメータ
TABLESPACE
PCTFREE
表のサイジング
4.4.5 索引
4.4.6 パーティション
パフォーマンスの向上
管理性の向上
パーティションの種類
レンジパーティション
リストパーティション
ハッシュパーティション
コンポジットパーティション
パーティション索引
パーティションの注意事項
4.4.7 ビュー
ビューを用いるメリット
ビューを用いる際の注意事項
SQLに書くべきロジックが分散されてしまうことがある
必要としない条件が実行されてしまうことがある
4.4.8 トリガー
トリガーを用いる際の注意事項
4.5 Oracleネットワーク設計
4.5.1 Oracle Net
4.5.2 リスナー
リスナーの構成
動的サービス登録と静的サービス登録
4.5.3 接続方法
簡易接続ネーミング
ローカルネーミング
プロファイル構成ファイル(sqlnet.ora)
CHAPTER 5 高可用性設計
5.1 高可用性とは
5.1.1 高可用性システムの特性
5.1.2 高可用性の必要性
5.1.3 高可用性設計の進め方
5.2 高可用性の要件定義
5.2.1 目標を設定する
ビジネス影響分析
可用性目標の設定
稼働率
RPOとRTO
5.2.2 リスクを理解する
計画外停止
計画停止
5.3 高可用性技術のベースになる概念
5.3.1 冗長化
5.3.2 同期レベル
冗長化されていないデータベースでの動作
Data Guard構成のデータベースでの動作
5.4 高可用性技術の方式
5.4.1 クラスタ
5.4.2 スタンバイ
5.4.3 レプリケーション
5.4.4 クラスタ、スタンバイ、レプリケーションの方式比較
5.5 高可用性技術の有効活用
5.5.1 有効活用の具体例
5.6 高可用性アーキテクチャの選定
5.6.1 高可用性技術の組合せによるメリット
5.6.2 高可用性設計時に陥りやすいミス
システムを不要に複雑化し、故障する確率を無駄に上げてしまう
故障を防ぐことばかりに気を取られ、無駄な労力を割いてしまう
CHAPTER 6 クラスタ設計
6.1 クラスタ構成の要素
6.1.1 Oracleデータベースにおけるクラスタ構成
6.1.2 クラスタ構成を実現するソフトウェア
6.2 Oracleクラスタウェア
6.2.1 Oracleクラスタウェアの役割
メンバーシップ管理
リソース管理
6.2.2 想定障害と対策
6.2.3 投票ディスク設計
6.2.4 OCR設計
Oracleクラスタウェアおよびデータベースの自動起動
インスタンスの自動再起動
6.2.5 パブリックネットワーク設計
6.2.6 インターコネクト設計
6.3 RACデータベース設計
6.3.1 RACデータベースの基本構成と特徴
スピードアップとスケールアウト
高可用性
拡張性
キャッシュフュージョン
6.3.2 サービス設計
シングル構成のワークロード
サービス
サービスの作成単位
サービスの設計
6.3.3 接続高可用性設計
RACデータベースにおけるワークロード分散機能
クライアント接続時フェイルオーバー
クライアントサイドロードバランシング
サーバサイドロードバランシング
6.4 ASM設計
6.4.1 ASMの特徴
管理工数の削減
性能と可用性をいつでも確保
6.4.2 ASMの基本構造と管理対象ファイル
管理対象ファイル
6.4.3 ASMインスタンス設計
ASMインスタンス初期化パラメータ設計
INSTANCE_TYPE
ASM_DISKSTRING
ASM_DISKGROUPS
ASM_POWER_LIMIT
ディスクグループ設計
ミラーリング
障害グループ
ストライピング
ストライプサイズ
CHAPTER 7 スタンバイ設計
7.1 Data Guardとは
7.1.1 Data Guardの概要
7.1.2 機能1:データベース全体の複製
フィジカルスタンバイ
ロジカルスタンバイ
7.1.3 機能2:プライマリとスタンバイの切替
7.1.4 機能3:スタンバイデータベースの有効活用
(参考)Snapshot Standby
7.1.5 Data Guardの構成要素
ログ転送
REDOを送受信するプロセス(NSS/NSA/RFS)
受信に使用されるファイル(スタンバイREDOログファイル)
REDO転送の履歴管理
REDO転送に使用する認証方式
ログ適用
適用プロセス(MRPプロセス)
7.1.6 Data Guardの特長
7.2 Data Guardの設計
7.2.1 要件確認と方式設計
スタンバイデータベースのタイプ
スタンバイデータベースの配置場所
接続切替とロール変換
接続切替
ロール変換
7.2.2 転送方式と保護モード
転送方式
確認タイミング
保護モード
最大保護モード
最大パフォーマンスモード
最大可用性モード
7.2.3 スタンバイデータベースの構成パターン
7.2.4 適用方式
REDO Apply(フィジカルスタンバイのみで使用される方式)
SQL Apply(ロジカルスタンバイのみで使用される方式)
7.2.5 パラメータ設計
7.2.6 ファイル設計
スタンバイREDO ログファイル
グループ数
メンバ数
サイズ
配置
アーカイブREDO ログファイル
配置
フラッシュバックログ
利用ケース
配置
(参考)フェイルバックの効率化
7.3 Data Guard の構築
7.3.1 バックアップ取得と配置の方式
CHAPTER 8 運用設計
データベースの管理を担うDBAとは?
なぜ運用設計が必要なのか?
運用設計の全体像
8.1 監視
システムを構成しているもの
8.1.1 しきい値監視
CPUのしきい値監視
確認ポイント1:CPU使用率
確認ポイント2:ランキュー
しきい値を超えた際の対応例
メモリのしきい値監視
確認ポイント1:メモリ使用率
確認ポイント2:スワップ使用率(スワップアウト/スワップインの量)
しきい値を超えた際の対応例
ストレージのしきい値監視
確認ポイント:ディスク使用率
しきい値を超えた際の対応例
I/O待ちキュー数
読込み量、書込み量(I/O量)
読込み速度、書込み速度(I/O速度)
I/O関連項目がしきい値を超えた際(ストレージへの負荷が高い場合)の対応例
表領域の監視
確認ポイント
しきい値を超えたときの対応案
オブジェクトの断片化
表オブジェクトの断片化
確認ポイント:行移行/行連鎖の確認
表オブジェクトの断片化に対する対応方法
索引オブジェクトの断片化
確認ポイント
索引の断片化確認方法
索引の断片化に対する対応方法
使用されていない索引の確認方法
使用されていない索引に対する対応方法
共有プールの断片化
確認項目1:AWRまたはSTATSPACKのInstance Efficiency(Library Hit%)
確認項目2:AWRまたはSTATSPAC のShared Pool Advisory
8.1.2 死活監視
OSの稼働監視
確認すべき項目
データベースのプロセス監視
確認すべき項目
データベースのサービス監視
確認すべき項目:データベースインスタンスへ定期的に接続確認を行う
8.1.3 エラー監視
OSのログ監視
確認すべき項目
データベースログの監視
確認すべき項目:アラートログの中に出力されるORAエラー
8.2 運用状況レポート
8.2.1 Oracleデータベースの分析/評価
運用状況レポートで実施する分析の観点
分析作業を行うときの注意点
分析情報(AWR/STATSPACK)収集タイミングの考え方
AWR/STATSPACKレポートとは
取得間隔の注意点
スナップショットの取得間隔の考え方
8.3 定期メンテナンス
8.3.1 オプティマイザ統計情報
実行計画を決めるときに必要な統計情報
統計情報の取得タイミングを考える
8.3.2 断片化の解消
8.3.3 ログメンテナンス
STATSPACK用のデータ領域
STATSPACK用のデータを削除するコマンド
8.4 バックアップ/リカバリ
8.4.1 データベースバックアップ
バックアップ方法とリカバリ要件
アーカイブログモード
バックアップの方式を考える
全体バックアップ
差分増分バックアップ
累積増分バックアップ
増分更新バックアップ
要件に合うバックアップ方法を見極める
8.4.2 システムバックアップ
8.4.3 リモートバックアップ
8.4.4 リカバリ手順の準備
8.5 パッチ適用
8.5.1 パッチリリース管理
8.5.2 パッチ適用方針
パッチ適用方針の例
8.5.3 パッチ適用設計(手順作成)
8.5.4 回帰テスト(リグレッションテスト)
8.6 障害発生時の対応
8.6.1 サービス時間とメンテナンス時間
8.6.2 連絡体制の整備
8.6.3 Oracleデータベース障害時の対処
障害時の状況を整理する
事象の切り分け
障害における対応例
オンライン性能劣化の報告を受けたときの対応例
情報収集するもの
取得した情報を利用して、障害の箇所を特定する
障害の範囲を特定する
原因の追求
状況の整理
8.7 キャパシティ管理
8.7.1 キャパシティプランニング
DBAが担うSLAやリソース利用の現状と予測
SLAやリソース利用の現状で具体的に確認すること
8.8 構成管理
8.8.1 構成管理を行うべきもの
8.8.2 データベースの構成管理
8.9 統合管理
8.9.1 統合管理の必要性
8.9.2 専属の運用チームを作るのは難しい
8.9.3 製品やツールを利用して、運用負荷を軽減する
CHAPTER 9 テスト計画、テスト設計
9.1 テストとは
9.1.1 テストの流れ
9.1.2 テストの全体像
9.2 テスト計画とテスト設計
9.2.1 テスト計画
目的
対象範囲
実施方法
開始基準/完了基準
体制
テスト環境
期間/スケジュール
9.2.2 テスト設計
単体テスト
単体テストのテスト内容
単体テストのテストケースの作成方法
結合テスト
結合テストのテスト内容
テストケースの作成方法
総合テスト
総合テストのテスト内容
総合テストのテスト設計の注意点
索引
TTakeshi さん
2012-04-27
タイトルで言うほど絵はありませんが、常に手元に置きたい本です。
tarosukeFz さん
2012-03-17
我流な設計しかしたことのないoracle素人でもわかりやすいとは思えた。入門書として勧めやすい気がする。
t04894ty さん
2012-03-08
とりあえず斜め読み。非常に分かりやすくoracleを解説してくれている。手元に置いておきたい本。後でじっくり読み込もう。