どこよりも詳しいOracleデータベースサーバーのアーキテクチャ
Sal
sql

どこよりも詳しいOracleデータベースサーバーのアーキテクチャ

  1. OracleインスタンスとOracleデータベース
  2. データベースとは
  3. インスタンスとは
  4. Oracleインスタンスについての詳しい特徴
  5. SGA(システムグローバル領域)
  6. Oracleバックグランドプロセス
  7. ユーザープロセスとサーバープロセス
  8. ユーザープロセスとは
  9. サーバープロセスとは
  10. PGAとは
  11. インスタンスの起動/停止
  12. データベースに接続するまでの手順
  13. インスタンスが停止するまでの流れ
  14. 停止モード
  15. データベースの動作と停止モード
  16. インスタンスの起動/停止をできる権限
  17. SQL*Plusによるインスタンスの起動
  18. 初期化パラメータファイル
  19. パラメータの種類
  20. パラメータファイルの種類
  21. SQL文による初期化パラメータの設定
## OracleインスタンスとOracleデータベース
Oracleデータベースシステムは次の二つの構成要素から成る。 - Oracleインスタンス - Oracleデータベース  
## データベースとは
データベースとはつまるところ、 さまざまなデータが格納されている

答え

ファイル郡

である。
## インスタンスとは
データベースに対するさまざまな管理を行うための

答え

プロセス郡

と それが使用する

答え

共有メモリー構造

の総称で、Oracleデータベースのエンジン部分でもある。 インスタンスが停止している状態ではユーザーはデータベースにアクセスできない また、基本構造としてはインスタンス一つに対してデータベース一つ
## Oracleインスタンスについての詳しい特徴
インスタンスは一台のコンピューターに複数のインスタンスを同時に動かすこともできる インスタンスはコンピューター上で

答え

システム識別子(SID)

で区別される この名前は環境変数

答え

ORACLE_SID

に設定される インスタンスは共有メモリー構造である

答え

SGA

答え

Oracleバックグラウンドプロセス

で構成される
## SGA(システムグローバル領域)
SGAは「OSの共有メモリー」内に確保される領域 ここに保存することで複数のプロセスからアクセスでき、キャッシュ化することでパフォーマンスを保つことができる。 SGAは以下の6要素からなり、REDOログバッファ以外はインスタンスを起動したままサイズを変更できる - 「データベース・バッファ・キャッシュ」

答え

データ用の作業領域

ディスクから取り出されたデータがキャッシュされる。 各ユーザーはこの領域にアクセスしてデータの参照と変更を行う。

データベース・バッファ・キャッシュにデータがない場合はディスクから読み込まれる。 - 「REDOログバッファ」

答え

データベースに加えられた変更履歴情報を一時的に蓄えておく領域。

REDO情報がログファイルに書き込まれる間、ここに保存される

- 「共有プール」 SQL文が解析された時に、

答え

解析ずみのSQLやPL/QSLのコード、実行計画、データディレクショナり情報

などが蓄積される場所。 SQL文実行の際に必要な情報を多数のユーザーが共有し、再利用できるようにキャッシュすることでメモリの節約やディスクアクセス/CPUの浪費を防いでいる - ラージプール データベースで共有サーバー構成を使用する場合 パラレル問い合わせを使用する場合 RMAN(Recovery Manager)を使用してバックアップ/リストアを行う場合など - javaプール JVM内部のセッション固有のjavaコードやデータのために使用される - Streamsプール Oracle Streamによって使用される領域
## Oracleバックグランドプロセス
Oracleバックグランドプロセスとはインスタンスの起動時に自動的に起動するプロセス郡 このプロセス軍は、ユーザー個別の処理ではなく、 OSと連携してメモリーを管理したり、ディスクI/Oを行う。

答え

Oracleデータベースシステムがスムーズに動作するために必要な全体管理を行っている。

Oralceデータベースの裏でさまざまなメンテナンスを行っている

- 「SMON」 システムモニター 障害などによってインスタンスを再起動した際に

答え

インスタンス/リカバリを実行する

これはインスタンスの以上終了によって失われたデータを直前のトランザクションのコミット時まで回復すること

- 「PMON」 プロセスモニター ユーザープロセうsの障害時に、使用していたプロセスを開放して

答え

クリーンアップを行う。

- DBWn(nは数字) データベースライター

答え

データベースバッファキャッシュで変更されたデータをデータファイルに書き込む

- CKPT 全てのバッファのDBWnによる書き込みを「チェックポイント」という。 CKPTがDBWnを呼び出し、メモリーとディスクの同期情報を制御アイルとデータファイルに書き込む。 この情報により、障害の発生時でも@デコまでディスクによる書き込みが終了しているか」がわかるため、発生後の復旧が実行できる。 - 「LGWR」 ログライター

答え

REDOログエントリをREDOログファイルに書き込む

- ARCn アーカイバ

答え

REDOログファイルをアーカイブログファイルとしてコピーする

- MMON 管理性に関するタスクを実行する
## ユーザープロセスとサーバープロセス
バックグランドプロセスだけではユーザー固有のリクエストに対応できない それに対応するのが「ユーザープロセス」と「サーバープロセス」である。
## ユーザープロセスとは
ユーザープロセスはユーザーのアプリケーションのプロセス - SQL*Plus - Enterprise Manager など、 クライアント側のプロセスのこと
## サーバープロセスとは
サーバープロセスとは

答え

ユーザープロセスから送信されたSQLのリクエストを処理するためのプロセス

一つのユーザープロセスに対して、一つのサーバープロセスがある。
## PGAとは
プログラムグローバル領域とは 各サーバープロセスやバックグラウンドプロセスが個々にデータを保存している

答え

非共有メモリー領域のこと

SGAとは違い、PGAのデータにアクセスするのは一つのプロセスに限られる

SQL文の処理時の作業領域や、ログイン及びそのほかのセッション情報、セッションで使用する変数などを保存すつための領域 - 「セッションメモリー」(ログイン情報とセッションに関連する情報) - 「プライベートSQL領域」(バインド変数値、問い合わせ実行状況の情報、及び問い合わせ実行作業領域など) 一つのSGAに対して、 - 複数の(PGA-サーバープロセス) - 一つの(PGA-バックグラウンドプロセス) が含まれる
## インスタンスの起動/停止
インスタンスは次のいずれかのタイミングで起動される - SQL*Plusからs「startup」コマンド(or「shutdown」コマンド)を実行する - windowsサービスプログラムを使用する その他のタイミングでは - SQL Developer - Enterprise Manager Cloud Control を使用したタイミング
## データベースに接続するまでの手順
1. インスタンスの起動(UnMount状態) 1. インスタンスが起動していない状態でstartupコマンドを使用する 2. インスタンスを構成するためのパラメータが記載されているため、その値によってSGAが割り当てられ、バックグランドプロセスが起動 3. この状態を「UnMount状態」と呼ぶ 1. データベースのマウント(Mount状態) 1. 初期化パラメータに記述してある「CONTROL_FILES」初期化パラメータにしたがって「制御ファイル」がオープンされる 2. 制御ファイルがオープンされたことにより、インスタンスとデータベスが関連付けられる状態を(Mount状態と呼ぶ) 1. データベースのオープン状態 1. 全ての「データファイルとREDOログファイル」がオープン(作成?)される。 2. この状態をOPEN状態と呼ぶ。 3. この状態では一般のユーザーが接続できる。
## インスタンスが停止するまでの流れ
1. データベースのクローズ(OPEN→CLOSED状態) 1. チェックポイントが発生。 2. SGAのデータが「データファイル及びオンラインREDOログファイル」に書き込まれる。その後クローズ 3. 制御ファイルはオープンしたまま 2. データベースのアンマウント(CLOSED状態⇨DISMOUNT状態) 1. データベースがアンマウントされてインスタンスから切り離される。 2. 制御ファイルもクローズされている 3. インスタンスは起動されたまま 3. インスタンスの停止(DISMOUNT⇨SHUTDOWN状態) 1. バックグランドプロセスが停止する 2. SGAが使用している共有メモリーの割り当ても解除される
## 停止モード
インスタンスを停止する際は、停止動作を決定するモードを指定できる。 デフォルトはNORMAL - NORMAL - TRANSACTIONAL - IMMEDIATE はチェックポイントが発生し、正常にクローズする処理が行われる。 一方、「ABORT」は以上終了のモードであり、チェックポイントが実行されないため、データファイいるの整合性が保たれない。 この場合はインスタンスを再起動して データベースを再オープンする前に「インスタンス・リカバリ」を実行する必要がある。
## データベースの動作と停止モード
1. チェックポイントを実行し、オープン状態のファイルをクローズする 1. NORMAL 2. TRANSCATION 3. IMMEDIATE 2. 現行トランザクションが終了するまで待機する 1. NORMAL 2. TRANSCATION 3. 現行セッションが終了するまで待機する 3. NORMAL 4. 新しい接続の許可 1. 全て不許可 abortは全て不許可
## インスタンスの起動/停止をできる権限
次の権限を付与されているユーザーでなければならない - SYSDBA(データベースを完全に制御できる) - SYSOPER(インスタンスの起動と停止ができるが、ユーザーオブジェクトへのアクセス権は持たない) その時のコマンドは次のように入力する

connect ユーザー名/パスワード AS {SYSOPER | SYSDBA}
## SQL*Plusによるインスタンスの起動
次のコマンドを使用する

> sqlplus /nolog
> connect sys as sysdba
> startup
## 初期化パラメータファイル
インスタンスの起動時に読み込まれる オプションのバックグラウンドプロセスの追加起動など インスタンスの基本動作に影響を与えるパラメータ このパラメータは「初期化パラメータ」と呼ばれる - データベース・バッファ・キャッシュ - 共有プールなどのSGAのメモリー領域のサイズなど 大きくは30の「基本パラメータと拡張パラメータ」に分類できる 全てのパラメータを設定する必要はなく、デフォルトの値が存在する
## パラメータの種類
- 動的パラメータ インスタンスの稼働中に設定を変更可能 - 静的パラメータ 設定の変更時にはインスタンスの再起動が必要
## パラメータファイルの種類
- サーバーパラメータファイル(SPFILE) インスタンスの読み取りと書き込みが可能な「バイナリファイル」 このパラメータはSQLの「ALTER SYSTEM」文で編集可能 Oracleデータベースによる自己チューニングの基礎にもなるためこちらが優先される - テキスト初期化パラメータファイル テキストファイルであり、インスタンスによる読み取りのみが可能 テキストエディタでこのテキストを編集し、インスタンスの再起動が必要になる。
## SQL文による初期化パラメータの設定
1. SQL*Plusを起動してください 1. 次のコマンドでパラメータを確認 1. 「SHOW PARAMETERS パラメータ名」を実行すると、現行のパラメータ名を確認できる。 1. ALTER SYSTEM文を使用

「ALTER SYSTEM SET パラメータ名 = 値 [SCOPE ={ MEMORY | SPFILE | BOTH }]」
SCOPEのしては次の適用範囲を示す - MEMORY 現行のインスタンスに対して行われる。 - SPFILE サーバーパラメータファイルのみに行われ、インスタンスの再起動で反映される - BOTH 現行インスタンスとサーバーパラメータファイルの両方が変更される デフォルトは「サーバーパラメータファイルを使用しているときは」BOTH テキスト初期化パラメータファイルはMEMORYがデフォルト title:どこよりも詳しいOracleデータベースサーバーのアーキテクチャ descriptin:Oracleインスタンス,データベース,SGA,PGA,初期化パラメータ,ALTER SYSTEM文など、Oracleデータベースのアーキテクチャの基礎から実践までを網羅しました。 category_script:page_name.startswith("6")

答え