
スキーマとは?
ユーザーが所有するテーブル、索引等のオブジェクトを含む論理的なコンテナです。
オブジェクトを格納する表領域とはまた別の概念になるので注意です。
ユーザーとの関連
ユーザーとは、想像通りのOracleにログインできるユーザーになります。
スキーマの所有者は、そのオブジェクトを作成したユーザーです。ユーザーと、同名のスキーマになります。
「表領域」と、「スキーマ」の違いは?
「表領域」も「スキーマ」もどちらも、テーブルや索引等のオブジェクトを含む論理的な概念であり、違いが分かりにくいですよね。
違い1:データ(テーブル、インデックス等)の共有範囲が異なる。
「表領域」は、単にテーブルの中身が格納される領域として、複数ユーザーで共有できます。
それに対して、「スキーマ」はあくまでユーザーに1:1で紐づくので、複数ユーザーで共有できません。
違い2:バックアップの単位が違う。
Oracleのバックアップや、リカバリは「表領域単位」で行います。
なので、スキーマを別々の表領域に格納した方が、別々にバックアップやリカバリができて便利です。
なお、スキーマ単位でもバックアップは取れますが、通常のバックアップというよりは、エクスポートという扱いになります。
ユーザー
Oracleでユーザーを作成する際の設定項目としては下記があります。
- ユーザー名
- パスワード
- デフォルト表領域
- デフォルト一時表領域
- 権限
- ロール
- クオータ
- ユーザープロファイル
ユーザー名、パスワード
これは、説明するまでもないでしょう。割愛します。
デフォルト表領域
オブジェクトを作成する際に、格納先の表領域を指定しなかった場合に、格納される表領域です。
ユーザー作成時に「DEFAULT TABLESPACE句」を使用します。
デフォルト一時表領域
SQL実行時に、一時セグメントが必要になった際に、一時セグメントが格納される領域です。
権限
特定の操作を実行するための権限で、下記三つに分類できます。
オブジェクト権限
特定のオブジェクトに対する権限です。
オブジェクト権限の一例
権限 | 説明 |
---|---|
SELECT | テーブルに問い合わせることができる権限 |
UPDATE | テーブルデータを更新することができる権限 |
INSERT | テーブルデータを挿入することができる権限 |
ALTER | テーブル定義変更権限 |
システム権限
システムに対する権限です。
システム権限の一例
権限 | 説明 |
---|---|
ALTER DATABASE | データベースの変更ができる。 |
CREATE TABLE | 権限を付与したスキーマ内でのテーブル作成 |
CREATE USER | ユーザーの作成 |
強力なシステム権限
下記二つの権限は、システム権限の中でも、DB作成、起動、停止、バックアップ、リカバリ等のDB管理の強力なシステム権限を持ちます。
- SYSDBA権限(より強力)
- SYSOPER権限(SYSDBAよりは権限が弱い)
なお、デフォルトでSYSユーザーは、SYSDBA権限を持っています。
ロール
複数の権限をまとめたものです。
クオータ(表領域割り当て制限)
ある表領域内で、ユーザーが使用できる上限のサイズです。
複数ユーザーで表領域を共有する場合に、特定ユーザーが表領域を使いすぎてしまうのを避けるためです。
ユーザー作成時に「QUOTA句」を使用します。
ユーザープロファイル
ユーザーが使用できる各種リソースに制限を課すことができます。
この記事へのコメントはありません。