2015年1月1日木曜日

RAC概要

■RAC(Real Application Clusters)とは

Oracle database でいうRAC構成とは、下図1のように、複数のサーバにそれぞれインスタンスを稼動させ、データベースを共有させたロードバランス型のクラスタリング構成のことです。

シングル構成は、インスタンスとデータベースが1対1の関係にありますが、RAC構成は多対1の関係となります。


図1





















■シングル構成と比較した場合のメリット

①可溶性が高い
 ノード障害が起こった場合、ノード障害が起こっていないサーバへフェイルオーバーして処理を継続することが可能。

②負荷分散が可能
 複数のサーバへランダム、または低負荷のサーバへ接続を振り分けることにより、負荷分散が可能です。

③拡張が容易
 インスタンスを追加することで、システム全体の処理速度を向上させることが可能です。

2014年1月4日土曜日

Oracle Database Instant Client について

■Oracle Database Instant Client とは
 Oracleのページでは、以下のように記述されております。

 Instant Clientを使用すると、標準のOracleクライアントをインストールしたりORACLE_HOMEを作成したりすることなく、アプリケーションを実行できます。 またOCI、OCCI、Pro*C、ODBC、JDBCを使用するアプリケーションを変更せずに実行できる上に、使用するディスク領域を大幅に削減できます。 SQL*PlusとInstant Clientの併用も可能であり、 再コンパイルなしで問題なく動作します。


■ダウンロード先
 こちらのページよりダウンロードが可能です。
 (無償での利用可能)


■インストール方法
 以下、当方にて試した結果です。
 
 目的:SQL*PLUSを利用して別マシンのデータベースに接続する。
 クライアントPC(インストール先)のOS:WindowsXP Professional Version 2002 Service Pack 3
 接続するOracleデータベースのバージョン:11gR2
 
 ①上記ダウンロード先より、環境に適したダウンロードページを選択
  ・ Instant Client for Microsoft Windows (32-bit) を選択

 ②以下のZIPファイルをダウンロード
  ・instantclient-basic-nt-12.1.0.1.0.zip
  ・instantclient-sqlplus-nt-12.1.0.1.0.zip

 ③以下のフォルダを新規作成
  ・C:\Program Files\instantclient

 ④作成したフォルダに②でダウンロードしたZIPファイルを展開
 
 ⑤以下の環境変数を新規作成
  <システム環境変数>
   変数名:PATH
   値:C:\Program Files\instantclient\instantclient_12_1

 ※注意(1)
 環境変数PATHを設定する際、パスに「全角文字」が含まれていると上手く動きません。
 例) C:\Documents and Settings\Administrator\デスクトップ\instantclient\instantclient_12_1

 ※注意(2)
 パスは、C:\Program Files\instantclientではなく、ZIPファイルを展開して自動作成された「instantclient_12_1」のフォルダまで含めたパスとすること。


■SQL*PLUSの設定確認

 コマンドプロンプトを開き、以下のコマンドを入力
  ・sqlplus /nolog

 "SQL>"となることを確認。
 

2014年1月3日金曜日

権限について

■権限とは

 ユーザーアカウントを新規作成しても、そのままではデータベースの操作は行えない。
 なぜならば、新規ユーザーにデータベースの操作を行うための権限が付与されていないからである。

 Oracleデータベースでは、データベースの操作を行う上で、ユーザーに対して操作ごとに「権限」が付与されていなければならない。
 Oracleデータベースには権限の種類が数多くあり、それぞれユーザーに付与できる仕組みとなっている。


■デフォルトの権限設定

 ユーザーをEnterprise Manager、SQL*PLUSで新規作成する場合、以下のような権限構成となる。

 ・Enterprise Manager・・・・CONNECTロールの付与
  ※CONNECTロールには、「CREATE SESSION」システム権限が付与されている。ロールについては、下記参照。

 ・SQL*PLUS・・・・なし


■ロールとは

 ロールとは、権限、または他のロールをグルーピングしたものである。

 なぜロールを作成するのか。
 
 それは上述したように、権限には数多くの種類が存在する。
 管理者が1つ1つのユーザーにこれらの権限を付与するのは大変な作業である。
 そのため、ロールというものを予め作成しておき、同様の権限であれば、複数の権限を一度に付与できるようにしておくと作業が容易になる。

2014年1月2日木曜日

Oracleデータベース11gR2 アンインストール方法

「Oracleデータベース 11g R2」 ソフトウェアのアンインストール方法をまとめる


▼以下のサイトを参考
参考サイト①
http://rina.jpn.ph/rance/index.php?Oracle11g%20for%20Windows%20%E3%82%A2%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%89%8B%E9%A0%86

参考サイト②
http://hatahuri.blogspot.jp/2013/05/oracle11g.html


▼アンインストール手順

①DBCAでデータベースを削除

②OUIにて11gを削除
 このとき、以下のように言われるのでコマンドプロンプトより、言われたコマンドをたたいて実行する。

 コマンド'C:\app\****\product\11.2.0\dbhome_2\deinstall\deinstall'を実行して、このOracleホームを案インストールしてください。

 ※****:PCのユーザー名

 
 どうやら「deinstall」というツールがあって、それを実行させてOracleデータベースソフトウェアを削除させるのが一般的な模様。

 実行すると、以下のことを聞かれる。
  

  ・構成解除するすべての単一インスタンス・リスナーを指定してください[LISTENER]:
    ⇒LISTENERと入力してEnter

  ・このOracleホームで構成されているデータベース名のリストを指定してください []:
    ⇒何も入力しないでEnter
    ※上記①を行っていない場合、データベース名が[ ]に表示されるため、それを入力してもよし。

  ・CCR check is finished 続行しますか (y - はい、n - いいえ)[n]:
    ⇒yを入力してEnter


③ゴミフォルダの削除
 以下のフォルダを削除。
 尚、上記②の作業後すぐに行うと、ロックされているようなので一度再起動してから行う。

  C:\app\****
  C:\Program Files\Oracle

 ※****:PCのユーザー名


④レジストリの削除
 regeditより、以下のレジストリを削除
  
  ・\HKEY_LOCALMACHINE\SOFTWARE\ORACLE

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アーキテクチャ入門より抜粋)

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