2013年12月25日水曜日

インスタンスについて

Oracleデータベースサーバーは、以下のコンポーネントによって、構成される。

 ・Oracleインスタンス
 ・Oracleデータベース
 ・ユーザープロセス
 ・サーバープロセス
 ・PGA

■Oracleインスタンス
OracleインスタンスはSGAとオラクルバックグラウンドプロセスから構成される。

 ◇SGA(システムグローバル領域)
  メモリー上の作業領域。複数のプロセスにより共有される。
  よく使用するデータをSGA上に読み込み、共有化することで各ユーザーによるディスクアクセス  の繰り返しを防ぎ、パフォーマンス悪化を防ぐ。

  SGAは、インスタンスを起動するとOracleによって初期化パラメータファイルに設定されたサイズで確保される。


  SGAは用途別に以下の領域に分かれる。

  ①データベースバッファキャッシュ
   データベースから取り出されたデータブロックを保管するためのメモリ領域。
   同じデータを何回も繰り返し読み込まないようにするための「キャッシュ」の役割と、
   データベースにまとめて書き込むための「バッファ」の役割をもつ。

   ※データブロックとはOracleでのデータの読み書きを行う固定サイズのデータ

  ②REDOログバッファ
   データベースに加えられた変更履歴情報が書き込まれる。
   ***いつまでログバッファにキャッシュされるのか?***

  ③共有プール
   データブロック以外の共有可能なデータを一時的に保管するためのメモリ領域。
   共有プールは以下の3つの領域で構成される。
    ・ライブラリキャッシュ
     解析済みのSQL情報とコンパイル済みのPL/SQLコード

    ・ディクショナリキャッシュ
     データディクショナリから参照されたデータ

    ・結果キャッシュ  
     問い合わせの結果とPL/SQLファンクションの結果

  ④ラージプール
   大きなサイズのデータをプロセス間でやり取りするために利用するメモリ領域
  
  ⑤Javaプール
   Javaストアド・プロシージャを実行するためのJava VMに使用されるメモリ領域

  ⑥Streamsプール
   Oracle Streamsと呼ばれるメッセージング機能を実現するために、メッセージデータを格納する際に使用されるメモリ領域。

  REDOログバッファ領域を除き、各領域は動的にサイズを変更することがてきる。
  ※REDOログバッファサイズは初期化パラメータファイルのLOG_BUFFERパラメータにて設定。


 ◇SGA情報の確認
  SQL*Plusの「SHOW SGA」コマンドでSGA情報を確認することが可能。
  以下、コマンドの表示項目説明。

   ・Total System Global Area:SGAの全体サイズ
   ・Fixed Size:SGAの管理情報が格納される固定領域のサイズ
   ・Variable Size:共有プール、ラージプール、Javaプール、Streamsプールの合計サイズ
   ・Database Buffers:データベースバッファキャッシュのサイズ
   ・Redo Buffers:REDOログバッファのサイズ


 ◇バックグラウンドプロセス
  バックグラウンドプロセスは、インスタンスを起動すると自動的に起動する一組のプロセス群。
  オラクルシステムの裏で全体管理を行っている。

  ①SMON(システムモニター)
   
  ②PMON(プロセスモニター)

  ③DBWn(データベースライター)

  ④CKPT(チェックポイント)

  ⑤LGWR(ログライター)

  ⑥ARCn(アーカイバ)

  ⑦MMON(管理モニター)

2013年12月18日水曜日

スキーマについて

■スキーマとは

スキーマとは、各ユーザーが作成したデータベースオブジェクトを格納する論理的な領域。
スキーマは、ユーザーアカウントによって所有される。

■スキーマオブジェクトとは?
表やビュー、順序、索引、シノニムなど。
上記に記載してある通り、スキーマはユーザーアカウントによって所有される。
そのため、ユーザーはスキーマオブジェクトではない。

■スキーマの作成方法
スキーマはユーザーアカウントを作成すると同時に作成される。

***[メモ]ユーザーアカウントは複数のスキーマを所有できないのか?***
できない。オラクルでは「ユーザー=スキーマ」ということ。
※OTN掲示板より
******

ユーザーアカウントの作成方法は以下の2通り

 ①Oracle Enterprise Managerからの作成
 
 ②SQL*Plusからの作成
 以下、SQL*Plusからユーザーアカウントを作成する際の構文です。
 
  ◇ユーザ作成(スキーマ作成)構文
   SQL> create user ユーザー名
       identified by パスワード
       default tablespace デフォルト表領域
       temporary tablespace デフォルトテンポラリー表領域;
 
 以下、構文内で指定する項目の内容です。
 
  ◇各項目の内容
   ・ユーザ名
    作成するユーザ名(スキーマ名)。
   
   ・パスワード
    作成するユーザがデータベースとの接続確立時に用いるパスワード。
   
   ・デフォルト表領域
    ユーザがオブジェクトを作成する際、そのオブジェクトをどの表領域に格納するか
    指定しなかった場合に使用される領域。
   
   ・デフォルトテンポラリー表領域(一時表領域?)
    ユーザが一時セグメントの作成を必要とするSQL文(ソート処理、索引の作成など)を
    実行するときに、使用される表領域。

■別のユーザーによるスキーマオブジェクトの使用方法
SQL*Plusでは、以下の構文によって他のユーザーが所有するスキーマオブジェクトへアクセスできる。

スキーマ名.オブジェクト名
例) ora01.employees



■別々のスキーマで同名のオブジェクトを作成することは可能
 
 名前が同じでも異なるスキーマ内のオブジェクトは別のオブジェクトとして扱われます。
 (プロとしてのOracleアーキテクチャ入門より抜粋)

 上記の文言の通りならば、スキーマが異なれば、同名のオブジェクトを作成することが可能と言うこととなる。