スキーマとは
スキーマとは、データの論理構造の集合であるとマニュアルには記載されている。
( 1 ユーザーは 1 スキーマを所有し、自動的にユーザー名と同じスキーマ名が割り当てられる。)
スキーマを文章で言い換えるなら、Oracle が提供する部品集から ユーザーが組み立てた構造物(オブジェクト)の集合体 ということになるだろうか。
ユーザー=スキーマと覚えてもあまり支障はなさそうであるが(オラクルマスターの資格などを目指すなら別)、
セッションにおいて、以下の SQL でカレントスキーマ(スキーマ名を省略したときのデフォルトのスキーマ)を変更することができたりもするので安心はできない。
ALTER SESSION SET CURRENT_SCHEMA=schema_name ;
またエンジニア同士の会話のなかで「スキーマ」というときは 「スキーマ・オブジェクト」を略して話をしていることが多いと思う。
Oracle におけるスキーマの位置づけ
ユーザーを人間と表現すると、スキーマとは人間がオラクルデータベースというオーナーから賃貸したオフィスの一室のようなものである。
ただ、スキーマはユーザーに属するものなのでテナント募集中の空き室のようなものは存在せず満室になることもない。
賃貸した一室にオブジェを置こうが改装しようが他の住人には影響はない。
権限を与えた同じビルの入居者や信頼できる遠隔地の人を自分の部屋に招待することもでき、部屋のオブジェやデスク(スキーマ・オブジェクト)を使う制限もオブジェクト単位で設定が可能。(見ることすらも許さないという設定も可)
賃貸した人がいなくなるとレンタルしたスペースからすべてのものが無くなるが居住した人が作ったパブリックなもの(非スキーマ)は残される。
エレベータや掲示板などの住人の共有物が非スキーマのみたいなものである。(ロール、パブリックシノニムなど)
スキーマ・オブジェクト一覧
以下のものがスキーマとして分類されている。
名称 | 該当する 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 |
スキーマ 関連事項