ネームスペース
オラクルのネームスペースは以下でグループ化されている。
あるネームスペース(名前空間)においては同じ名前は 2 つ存在しないということである。
逆からいうとネームスペースが異なれば同じ名前が使用できるということになるが、スキーマ・オブジェクトに同じ名前を使用すると
混乱を招くことがあるので要注意である。
スキーマオブジェクト(グループ1)
次のスキーマ・オブジェクトは、1つのネームスペースを共有している。
表、ビュー、順序、プライベート・シノニム
スタンドアロン・プロシージャと同ファンクション
パッケージ マテリアライズド・ビュー、ユーザー定義型
同一ネームスペースでは、タイプが異なっても同じ名前は使用できない。
スキーマオブジェクト(それぞれ独立したグループ)
次の各スキーマ・オブジェクトは、別々のネームスペースである。
- 索引
- 制約
- クラスタ
- データベース・トリガー
- プライベート・データベース・リンク
- ディメンション
テーブル名と主キーは同じ名前が使用できるが人為的ミスを起こすかもしれない。
構文は違うもののインデックスとテーブルを間違えて DROP したら冷や汗ものです。
非スキーマ・オブジェクト
次の各非スキーマ・オブジェクトも、別々のネームスペースである。
- ユーザー・ロール
- パブリック・シノニム
- パブリック・データベース・リンク
- 表領域
- プロファイル
- パラメータ・ファイル(PFILE)およびサーバー・パラメータ・ファイル
(SPFILE)
これらのネームスペース内のオブジェクトはスキーマに含まれないため
データベース全体で使用されるネームスペースになっている。
USERENV ネームスペースで利用しそうな定義のピックアップ
SYS_CONTEXT または USERENV ファンクションで使用する。
定義名 | 内容 |
AUTHENTICATION_TYPE | 認証方法(DATABASE|OS|NETWORK|PROXY) |
DB_UNIQUE_NAME | DB_UNIQUE_NAME |
HOST | クライアント |
IP_ADDRESS | クライアントIPアドレス |
ISDBA | DBA権限の有無 |
MODULE | モジュール名 (SQLPLUS など) |
OS_USER | クライアントユーザー名 |
SESSION_USER | 接続ユーザー名 |
TERMINAL | ターミナルの情報 |
SERVER_HOST | DB サーバーの HOSTNAME |
NLS_DATE_FORMAT | 日付フォーマット(セッションパラメータ) |