Oracle 使いなら手元におきたい! - 書評 - 詳解Oracle アーキテクチャ
久々に図書館で借りた本ネタです。最近は図書館通いの頻度も減り、ネットで読みたい本を読む方向に変わってきました。まぁそのせいで普段読まないジャンルの本に出会う頻度は極端に減りましたけど。
さて今回読んだ本は詳解 Oracle アーキテクチャというオラクル本です。前々から気になってたけど図書館で借りられるとは思いもしていなかった。この手の本は一読してからじゃないとスペースの無駄になるだけって本が結構あるので一読してみたかった。
でいきなり結論。Oracle マスター GOLD 相当の参考書数冊を実務に必要な部分のみこの1冊に凝縮した感じ。逆に言うと Oracle マスターとるための参考書としては情報不足です。ただコレから Oracle を運用して行かなくちゃならないという人にとっては、いつも手元においておきたい一冊です。
以下、個人的備忘録。この辺も覚えていたはずなのにどんどん忘れていく自分が悲しいです。
P40. SQLの実行アーキテクチャ
フェッチ→領域解放
P41. 解析処理では以下の7つの処理が行われる。初めて実行されるSQLは下記の全てのフェーズが処理(ハード解析)され、過去に解析済みのSQLは(x)の部分は処理されない(ソフト解析)ため高速。
P56. PL/SQLのネイティブコンパイル
Oracle ではストアドプロシージャの実行においてインタプリタ型とネイティブコード型の2つのモードが存在する。create procedure/function 文の定義時に実行可能な形式でDBに登録される際に、前者はmコードと呼ばれる中間言語に変換される。後者はcコンパイラでマシン語にコンパイルされて変換される。したがって、当然の事ながら後者の方が圧倒的にパフォーマンスが良い。
インタープリタ型での実行フェーズ
ネイティブコード型での実行フェーズ
初期化パラメータにおけるネイティブコンパイルの設定
PLSQL_NATIVE_LIBRARY_SUBDIR_COUNT = "サブディレクトリを作成してファイル検索の処理分散をする場合に、数値を設定。通常0のままでOK。"
PLSQL_CODE_TYPE = "NATIVE"
モードの確認方法
P90. ロックの種類
Oracle ではDML文やDDL文を実行したときに必要とされるロックが自動的に取得されます。またロックの粒度としてはテーブルロックと行ロックの2に種類が存在します。いつもコードの値とロック名称の対応を忘れてしまうのでメモ。
モード名称 | 略称コード | コード | 説明 |
行共有テーブルロック | RS | 2 | for update句を含むselectによるロック |
行排他テーブルロック | RX | 3 | 変更したレコードに対してcommit/rollbackされるまでの排他ロック |
共有テーブルロック | S | 4 | テーブルに対する共有可能なロック |
共有行排他テーブルロック | SRX | 5 | 行共有テーブルロック以外のロックとは共有できないロック |
排他テーブルロック | X | 6 | テーブル単位での排他ロック |
排他行ロック | TX | 6 | 追加・変更・削除されたレコードに対する排他ロック |
またどんなDML文を発行した際にどんなロックがかかるかもふと忘れてしまうときがあるのでメモ。
DML文 | 行ロック | テーブルロック |
select | - | - |
insert into | TX | RX |
update | TX | RX |
delete | TX | RX |
select...for update | TX | RX |
lock table...in row share mode | - | RS |
lock table...in row exclusive mode | - | RX |
lock table...in share mode | - | S |
lock table...in share row exclusive mode | - | SRX |
lock table...in exclusive mode | - | X |
P134. PCTFREEとPTCUSEDの設定基準値
updateが頻繁に実行され、レコードサイズが大きくなりがちなテーブルの推奨値は
insert / delete が頻繁に実行され、レコードサイズに変更がすくないupdateも実行されるテーブルの推奨値
主に検索用途のselectが頻繁に実行されるテーブル
ちょっと疲れてきたので、後は気になる目次とメモのみ
P159. 代表的バックグラウンドプロセスの種類
プロセス名称 | 略称 | 役割 |
データベースライター | DBWn | データベースキャッシュの内容をデータファイルに書き込む。 |
ログライター | LGWR | REDOログバッファからREDOログファイルへ書き込む。 |
チェックポイント | CKPT | チェックポイントが発生した際にデータファイルのヘッダへ更新情報を記録する。 |
システムモニター | SMON | インスタンスの起動時に必要に応じてリカバリを実行する、 |
プロセスモニター | PMON | データベースバッファキャッシュをクリーンナップしたり、ユーザプロセスが使用していたリソースを解放する。 |
リカバラ | RECO | 分散データベースで使用され、分散トランザクションに関連する障害を自動的に解決する。 |
メモリマネージャ | MMAN | 自動共有メモリチューニングを行うプロセス。その他データベース管理の内部的な処理を行う。 |
アーカイバ | ARCn | アーカイブログモードの際に動作するプロセス。ログスイッチ発生時にREDOログファイルの内容を指定の領域にアーカイブログファイルとしてコピーする。 |
プロセススポーンナー | PSP0 | オラクル関連プロセスの生成とクリーンナップの処理を行う。 |
P165. その他のバックグラウンドプロセスの種類
P258. オプティマイザヒント一覧
P310. 書くパーティション方式のメリットとデメリット
レンジパーティション
デメリット:基本的に増加していく列値を基準に分割するため、定期的なパーティションのメンテナンス作業が発生する。
ハッシュパーティション
デメリット:どのパーティションにどんなレコードが含まれるかが不明確・予測不能。
リストパーティション
デメリット:変動しやすいコード値で分割すると、頻繁にパーティションのメンテナンス作業が発生する。
と内容が非常に濃いぃーです。
Oracle アーキテクチャ目次
CHAPTER 1. Oracle概要 1.1 - Oracleアーキテクチャの概要 1.1.1 - Oralceの基本構造 1.1.2 - データベースの論理領域管理 1.1.3 - スキーマ 1.1.4 - Oracleグリッド・コンピューティング 1.2 - Oracle 10gの新機能 1.2.1 - データベース・リソース・マネージャ 1.2.2 - Data Guard 1.2.3 - フラッシュバック機能 1.2.4 - ファイングレイン監査 1.2.5 - Virtual Private Database 1.2.6 - Automatic Woakload Repository 1.2.7 - Automatic Database Diagnostic Monitor 1.2.8 - スケジューラ CHAPTER 2. プログラム開発 2.1 - SQLとPL/SQLの解析 2.1.1 - SQLとPL/SQLの概要 2.1.2 - SQL 2.1.3 - PL/SQL 2.1.4 - 再解析防止の極意 2.1.5 - ハード解析防止の極意 2.1.6 - ストアドプロシージャの活用方法 2.1.7 - ストアドプロシージャの高速化 2.2 - トランザクション管理 2.2.1 - トランザクションとACID特性 2.2.2 - トランザクションの操作方法 2.2.3 - トランザクション制御 2.3 - 分離レベル 2.3.1 - 分離レベルの概要 2.3.2 - 分離レベルの構成 2.3.3 - Oracleの分離レベル 2.3.4 - 「コミット読み取り」分離レベルの活用術 2.3.5 - データベースの静止による究極の分離レベル 2.4 - ロッキングシステム 2.4.1 - ロックの概要 2.4.2 - ロックの種類 2.4.3 - ロック待ちのトラブル解消 2.4.4 - デッドロックを防ぐ CHAPTER 3. データベース管理 3.1 - メモリ管理 3.1.1 - メモリ管理機能の進化 3.1.2 - 自動共有メモリ・チューニング機能 3.1.3 - 自動PGA管理 3.1.4 - メモリ管理パラメータ 3.1.5 - メモリ監視 3.2 - 領域管理 3.2.1 - 領域管理の概要 3.2.2 - オブジェクトの領域管理 3.2.3 - 表領域の管理 3.3 - インスタンス 3.3.1 - SGAの構成要素 3.3.2 - バックグラウンド・プロセスの構成要素 3.3.3 - バックグラウンド・プロセスの詳細 3.3.4 - メモリ領域と物理ファイルの連動 3.4 - ネットワーク 3.4.1 - ネットワークの概要 3.4.2 - Oracleの通信アーキテクチャ 3.4.3 - クライアントとOracleサーバ間の文字コード変換 3.5 - バックアップ/リカバリ 3.5.1 - バックアップ計画の立案 3.5.2 - バックアップの取得方法 3.5.3 - メディア・リカバリの実施方法 3.5.4 - OSコマンド 3.5.5 - Oracle Recovery Manager 3.5.6 - フラッシュバック 3.6 - 解析手法(ログ解析) 3.6.1 - ログファイルの種類 3.6.2 - アラートログファイル 3.6.3 - バックグラウンド・トレースファイル 3.6.4 - ユーザー・トレースファイル 3.6.5 - リスナーログファイル 3.6.6 - ログファイルを利用した障害原因の解析 |
CHAPTER 4. パフォーマンス・チューニング 4.1 - オプティマイザ 4.1.1 - オプティマイザとは 4.1.2 - 最適な実行計画の生成 4.1.3 - オプティマイザ統計の詳細 4.1.4 - オプティマイザ動作の制御方法 4.2 - アプリケーション・チューニング 4.2.1 - SQLチューニングの手順 4.2.2 - SQL標準化 4.2.3 - AUTOTRACEの活用 4.2.4 - オプティマイザヒントの活用 4.2.5 - プログラム開発に置けるリソース再利用の考慮 4.1.6 - オブジェクトのメンテナンス CHAPTER 5. エンタープライズ・アーキテクチャ 5.1 - クラスタリング・アーキテクチャ 5.1.1 - クラスタリング概要 5.1.2 - RACのアーキテクチャ 5.1.3 - RACの機能 5.1.4 - クラスタ運用 5.1.5 - RACのパフォーマンス・チューニング 5.2 - パーティショニング 5.2.1 - パーティションとは 5.2.2 - パーティションの分割方式 5.2.3 - レンジパーティション 5.2.4 - ハッシュパーティション 5.2.5 - リストパーティション 5.2.6 - 各パーティション方式のメリットとデメリット 5.2.7 - 組み合わせパーティション 5.2.8 - パーティション索引 5.2.9 - パーティションのメンテナンス 5.2.10 - パーティショニングとストレージ装置によるRAIDの組み合わせ 5.2.11 - 既存テーブルのパーティショニング 5.3 - マイグレーション 5.3.1 - マイグレーションの概要 5.3.2 - マイグレーションの計画 5.3.3 - Export,Import(Data Pump) 5.3.4 - Data Pumpのアーキテクチャとパフォーマンス 5.3.5 - トランスポータブル表領域機能 5.3.6 - SQL*Loader 5.3.7 - SQL*Loaderのデータアクセス方法とパフォーマンス 5.3.8 - Oracle以外のDBからのマイグレーションを簡略化するためのツール 5.3.9 - Oracleアップグレード 5.4 - セキュリティ 5.4.1 - データベースにおける背きぃりてぃ対策 5.4.2 - Oracleにおけるセキュリティ対策 5.4.3 - セキュリティ対策のソリューション 5.4.4 - セキュリティ対策の罠 5.4.5 - セキュリティチェックリスト 5.5 - データガード 5.5.1 - Oracleのデータ保護ソリューション 5.5.2 - データ保護ソリューションの使い分け 5.5.3 - Data Guard 5.5.4 - Data Guardの保護モード 5.5.5 - データベースの役割の入れ替え 5.5.6 - 耐障害のレプリケーション |
コメントやシェアをお願いします!