■Oracleをインストールすると、
ディレクトリ構造が作成される。他のアプリケーション(Microsoft Officeなど)と同様に、パソコンにインストールして初めて利用できる。
例えばインストール先にCドライブ(c:\)を選んだ場合、WindowsNTではC:\にORANTというフォルダができ、その中にbin,databaseなどのフォルダが作成される。
このC:\ORANTをOracleホームディレクトリと呼ぶ。■Oracleホームディレクトリの下には、主に下記のようなディレクトリが作成される。
- 1.実行モジュール用ディレクトリ
- 全ての実行モジュール
(OracleDBに必要なexeファイルなど)が格納される。- 2.初期データベース用ディレクトリ
- 初期データベースを構成するファイル
(データファイル、制御ファイルなど)が格納される。
データベース作成時、格納場所を別の場所へ設定できる。- 3.管理用ディレクトリ
- データベース管理用の様々なファイルが格納される。
- 4.管理用ディレクトリの下のadmin
- データベース管理に使用されるSQLスクリプトが格納される。
- 5.その他の製品
- それぞれの製品ごとの管理ディレクトリ。
Oracleに接続して作業を行う場合、クライアントパソコンに環境変数の設定が必要である。(通常はクライアントソフトインストール時に設定される)
- ORACLE_HOME ・・・ Oracleホームディレクトリ
- ORACLE_SID ・・・ OracleシステムID
- PATH
- NLS_LANG
この中で特に重要なのが2と4である。
- ORACLE_SID
- Oracleデータベースの識別名。1つのサーバマシンで複数のOracleデータベースを運用している場合、各Oracleを判別するために使用する。
- NLS_LANG
- メッセージ、数値・日付書式、通貨書式などを設定する場合に使用する。
例)、NLS_LANG=Japanese_Japan.JA16JIS
■Orale
データベースを使用するには、その前にOracleが起動されている必要がある。
WindowsNTやWindows2000にインストールした場合、Oracleはサーバ起動時にサービスとして自動起動される。■データベースの起動と停止は、3段階の手順で行う
【
サーバマネージャの場合】〜
サーバマネージャやINTERNALユーザは廃止される予定であり、 SQL*Plusを使用するのが望ましい。【
SQL*Plusの場合】
- SQL*Plusを起動する
DOSプロンプト> sqlplus /nolog
SQL>- セキュリティ・チェックを行う
SQL> connect / as sysdba- 起動・停止のコマンドを発効する
SQL> startup ・・・ 起動
SQL> shutdown ・・・停止
■
表や索引など、データベースの中で扱われるものを「オブジェクト」 と呼ぶ。
例えば、1つの表が、1つのオブジェクトである。■オブジェクトの種類
- 表
(テーブル)- 索引
(インデックス)- ビュー
(Accessで言うクエリーのようなもの)- シノニム
(オブジェクトの別名、Windowsで言うショートカットのようなもの)- 順序
(連番を発生させるもの) ストアドプログラム(プログラム)
■
オブジェクトは、全てデータベース内に格納されている。
![]()
■
データベースシステムは、複数の人が同時にデータベースに アクセスすることを前提に作られている。
〜
そこで、データベースを使用するには、まずデータベースに登録されている「ユーザ」でデータベースに接続し、 それぞれのオブジェクトにアクセスする。
(Oracleがインストールされているサーバのユーザではない!!)■
表などのオブジェクトは、すべていずれかのユーザの持ち物に なっている。〜
どのオブジェクトが誰の持ち物なのかという情報を表す概念を 「スキーマ」と呼ぶ。〜
![]()
■
オブジェクトは、すべて「スキーマ名.オブジェクト名」という形で 管理されている。オブジェクト名が同じでも、持ち主(スキーマ)が違えば別の物である。 逆に同じユーザ(スキーマ)が同じ名前のオブジェクトを作成することはできない。例)
- ユーザsakuraが、自分のEMP表を見る場合
- SELECT * FROM
emp;- ユーザsakuraが、ユーザizumiが持つEMP表を見る場合
- SELECT * FROM
izumi.emp;
(izumiが持つEMP表のSELECT権限が必要)
■
Oracleでは、オブジェクト単位に物理ファイルを対応させる のではなく、まず、オブジェクトを格納する「領域」を考え、 これにファイルを対応させている。この領域のことを「表領域」と呼ぶ。■
1つの表領域には複数のオブジェクトを格納することができる。表領域や対応するファイルの管理はデータベース管理者が行うため、一般のユーザは物理ファイルを意識する必要がない。
- ユーザsakuraが、自分のEMP表を見る場合
- SELECT * FROM emp;
- ユーザsakuraが、ユーザizumiが持つEMP表を見る場合
- SELECT * FROM izumi.emp;
- ユーザsakuraが、自分のITEM表を見る場合
- SELECT * FROM item;
ユーザは、表がどの表領域にあるのかを意識することなく データを利用できる!!
■初期データベース(データベース作成直後の状態)には、以下のような表領域が存在する。
- SYSTEM表領域 ・・・ データベース全体の情報が格納される
- RBS表領域 ・・・ ロールバック・セグメント用
- USERS表領域 ・・・ ユーザのデフォルト表領域用
- TOOLS表領域 ・・・ Oracleの各種アプリケーション用
- TEMP表領域 ・・・ ユーザのテンポラリ表領域用
■
表領域の名前には、「SYSTEM」表領域以外、特に意味はない。
〜
上記表領域のうち、SYSTEM表領域以外は無くてもデータベースは動く。SYSTEM表領域以外の各表領域は、Oracle社が推奨する領域分割の見本である。■
SYSTEM表領域には、Oracleデータベース全体の情報、データディクショナリが置かれている。これらの情報は、Oracleデータベースが起動している間、自動的に更新されている。
したがって、データベースの安全のため、SYSTEM表領域にはユーザのデータを格納するべきではない!!
表領域は、データベース管理者が必要なだけ任意の名前で作成できる。■
通常、データベースを使用する場合には、表領域をいくつか用意し、それぞれの使用目的別に使い分ける。
表領域を分けることは、以下のような利点がある。
- Oracleでは、
各ユーザへの領域の使用制限(クォータ)が表単位で行える。したがって、表領域を分けておけば、各表領域ごとに各ユーザの領域制限を設定できる。 Oracleでは、データのバックアップ・リカバリ(回復)が表単位で行える。したがって、表領域を分けておけば、ある表領域が壊れても、他に影響を与えないですむ。 異なるデバイス(ハードディスク)に表領域を配置することにより、I/O衝突を減少させ、パフォーマンスを向上することができる。
■データベースの中にどのようなオブジェクトがあるのか?など、
データベース内の様々な情報は、すべて「データ・ディクショナリ」に格納されている。
データ・ディクショナリはSYSTEM表領域に格納されている。■
データ・ディクショナリは、Oracleによって管理され、各ユーザも検索できる。
ただし、ユーザに与えられた権限によって、見れるものと見れないものがある。■ユーザが検索できるデータ・ディクショナリは、以下の4種類に分類される。
- 1. USER_XXX
そのユーザ(現在接続しているユーザ自身)に関する情報- 2. ALL_XXX
そのユーザ(現在接続しているユーザ自身)が アクセス可能なすべての情報- 3. DBA_XXX
データベース全体に関する情報
データベース管理用ユーザ(DBA権限を持つユーザ)のみアクセス可能- 4. その他
■代表的なデータ・ディクショナリ
データ・ディクショナリ名 説明 USER_USERS 自分自身(ユーザ)の設定を確認 USER_TS_QUOTAS 各表領域ごとに設定されているクォータを確認 SESSION_PRIVS 現在のセッションで有効なシステム権限を確認 USER_TAB_PRIVS_MADE 自分が所有するオブジェクトに対して誰(他のユーザ)がアクセスできるかを確認 USER_TAB_PRIVS_RECD 自分は他のユーザが所有するどのオブジェクトにアクセスできるかを確認 USER_COL_PRIVS_MADE 列単位で指定されたオブジェクト権限を確認 USER_COL_PRIVS_RECD 列単位で指定されたオブジェクト権限を確認 SESSION_ROLES 現在のセッションで有効なロールを確認 USER_CONSTRAINTS 制約の名前と種類を確認 USER_CONS_COLUMNS どの制約がどの表のどの列に付加されているかを確認 USER_VIEWS 自分が持つオブジェクトを確認 USER_TABLES 自分が持つテーブルを確認 USER_VIEWS 自分が持つビューを確認 USER_PROCEDURE 自分が持つプロシージャを確認 USER_INDEXES どの索引がどの表に付加されたものかを確認 USER_IND_COLUMNS どの索引がどの表のどの列に付加されてたものかを確認 USER_SYNONYMS プライベート・シノニムを確認 ALL_SYNONYMS パブリック・シノニムを確認 USER_SEQUENCES 自分が持つ順序を確認