スキーマとは
スキーマとは、データの論理構造の集合であるとマニュアルには記載されている。
( 1 ユーザーは 1 スキーマを所有し、自動的にユーザー名と同じスキーマ名が割り当てられる。)
スキーマを文章で言い換えるなら、Oracle が提供する部品集からユーザーが組み立てた構造物(オブジェクト)の集合ということになるだろうか。
ユーザー=スキーマと覚えても特に支障はなさそうであるが(オラクルマスターの資格などを目指すなら別)、
セッションにおいて、以下の SQL でカレントスキーマ(スキーマ名を省略したときのデフォルトのスキーマ)を変更することができたりもするので安心はできない。
ALTER SESSION SET CURRENT_SCHEMA=schema_name ;
また、エンジニア同士の会話のなかで「スキーマ」というときは 「スキーマ・オブジェクト」全般 を略して話をしていることが多いと思う。
スキーマの位置づけ
ユーザーを人間と表現すると、スキーマはその人がオラクルという巨大なオフィスビルから賃貸しているオフィスの一室のようなものである。
ただスキーマはユーザーに属するものなのでテナント募集中の空き室は存在しないし、満室になるようなこともない。
レンタルしたオフィスにオブジェを置こうと改装しようと他の住人には影響がない。(工事の騒音がうるさいという苦情を除いて
)
権限を与えた他の住人に自分の部屋に招待することもでき、部屋のオブジェやデスク(スキーマ・オブジェクト)を使う制限もオブジェクト単位で設定可能。(見ることすらも許さないという設定も可)
賃貸した人がいなくなるとレンタルしたスペースからは、すべてのものが無くなるがパブリックなもの(非スキーマ)は残される。
反対にエレベータなどの住人の共有物は非スキーマになる。(ロール、パブリックシノニムなど)
スキーマ・オブジェクト一覧
以下のものがスキーマとして分類されている。
| 名称 | 該当する DDL |
| 表 および 索引構成表 | CREATE TABLE |
| インデックス、インデックスタイプ | CREATE INDEX |
| ビュー | CREATE VIEW |
| トリガー | CREATE TRIGGER |
| ストアドプロシージャ関連 | CREATE PROCEDURE,FUNCTION,PACKAGE など |
| マテリアライズド・ビュー関連 | CREATE METERIALIZED VIEW ,〜 LOG |
| オブジェクト型、表、ビュー | CREATE OBJECT など |
| 演算子 | CREATE OPERATOR |
| 順序・シーケンス | CREATE SEQUENCE |
| シノニム | CREATE SYNONYM |
| ディメンション | CREATE DIMENSION |
| 外部プロシージャ | CREATE LIBRARY |
| Java クラス関連 | CREATE JAVA |
| クラスタ | CREATE CLUSTER |
| プライベート・データベースリンク | CREATE DATABASE LINK |
ユーザーの所有するスキーマオブジェクトの一覧
SELECT OBJECT_TYPE, OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = type_name
ORDER BY OBJECT_TYPE, OBJECT_NAME ;
非スキーマ・オブジェクト一覧
ユーザーが作成できるが、スキーマに分類されていないもの
(論理構造でない、または、共有物?ということだろうか)
| 名称 | 該当する DDL |
| ユーザー | CREATE USER |
| プロファイル | CREATE PROFILE |
| ロール | CREATE ROLE |
| 表領域 | CREATE TABLESPACE |
| コンテキスト | CREATE CONTEXT |
| ディレクトリ | CREATE DIRECTORY |
| パブリック・シノニム | CREATE PUBLIC SYNONYM |
| パブリック・データベースリンク | CREATE PUBLIC DATABASE LINK |
スキーマ 関連事項