COL: CSS:



DB ユーザ・アカウント

DB ユーザ・アカウント権限とロール

スキーマ

スキーマとは,表 / ビュー / 索引などのオブジェクトの集合に付ける名前のことで,Oracle Database では “ユーザ名” と “スキーマ名” は同一のものである。また,スキーマは論理的に構成されており,例えば,“同一表領域内のオブジェクト集合”でなくても構わない。

/* ex1: スキーマの概念 */

┌─ foo 表領域 ─┐  ┌─ hog 表領域 ─┐
|                |  |                |
|┌───────┼─┼────────┼──┐
||    a 表      |  |     c 表       |    bar1 スキーマ
||    b 表      |  |     d 索引     |    | (⇔ bar1 ユーザ)
|└───────┼─┼────────┼──┘
|┌───────┼─┼────────┼──┐
||              |  |     e 表       |    bar2 スキーマ
||              |  |     f 表       |    | (⇔ bar2 ユーザ)
|└───────┼─┼────────┼──┘
|                |  |                |
└────────┘  └────────┘

ユーザ作成の基本

ユーザを作成するための基本構文は以下の通り。

/* ex1: ユーザを作成する (入力必須パラメータ) */

CREATE USER ユーザ名
 IDENTIFIED { BY パスワード           ← パスワード認証
               | EXTERNALLYOS 認証
               | GLOBALLY AS 外部名   ← グローバル認証
            }

各種認証方式は以下の通り。

IDENTIFIED認証方式名詳細
BY passwordパスワード認証Oracle Database 上でパスワード管理を行う。パスワードに関する命名規約等の設定は,プロファイルで行う。
EXTERNALLYOS 認証OS またはサードパーティーが提供している認証サービスでパスワード管理を行う。
GLOBALLY AS
directory_DN
グローバル認証Oracle Advanced Security を使用した認証方式。ユーザ関連情報を LDAP ベースのディレクトリ・サービスで集中管理することなどが可能になる。

表領域 / 割り当て

オブジェクトを作成したとき,そのオブジェクトを格納するための表領域が必要になる。オブジェクト作成時にどこの表領域にオブジェクトを作成するのか,明示的に指示することもできる。

/* ex1: foo 表領域へのオブジェクト格納を指示した表の作成 */

CREATE TABLE hoge ( column1 NUMBER
                  , column2 VARCHAR2(10))
  TABLESPACE foo;                          ← 格納先表領域 "foo" への明示化

上記のように明示的に格納先を指定しなかった場合,ユーザ作成時に定義する表領域へ格納されることになる。表領域を定義していなかった場合は,表領域の使用許可が得られていないため,オブジェクトを作成できない。

ユーザ作成時に表領域を割り当てる構文は以下の通り。

/* ex2: 作成ユーザに表領域を割り当てる */

 CREATE USER ユーザ名
   :
   [   DEFAULT TABLESPACE 表領域名 ]        ← デフォルト表領域の定義
   [ TEMPORARY TABLESPACE 一時表領域名 ]    ← 一時表領域の定義
   [ QUOTA { サイズ | UNLIMITED } ON 表領域名 ]
                                          └← 表領域のサイズ割当て

使用する表領域を定義するだけではその表領域を利用することはできず,QUOTA キーワードを定義して使用領域を割り当てる必要がある。

一時表領域は,ソートやグループ化して表示する際,前段階のデータ抽出時に一時的に蓄えられ,そのデータを元にソートやグループ化をして表示する領域で,この一時表領域に関しては QUOTA キーワードを使って使用領域を割り当てる必要はない (制限なく使える)。

データベース単位でデフォルト表領域 / 一時表領域を定義することもでき,その場合はユーザ作成時に表領域を定義していなくても,データベース単位で定義された表領域が割り当てられる。

データベースレベルで定義された永続プロパティは,DATABASE_PROPERTIES 静的データ・ディクショナリ・ビューにて確認できる。

DATABASE_PROPERTIES 静的データ・ディクショナリ・ビュー
カラム詳細
PROPERTY_NAME永続プロパティの名前
PROPERTY_VALUE永続プロパティの値
DESCRIPTION永続プロパティの説明
/* ex1: デフォルト表領域 / 一時表領域の永続設定確認 */

SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE
       FROM DATABASE_PROPERTIES;

PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ --------------------
  :
DEFAULT_PERMANENT_TABLESPACE   USERS       ← デフォルト表領域
DEFAULT_TEMP_TABLESPACE        TEMP        ← 一時表領域
  :

プロファイル

プロファイルとは,データベース / インスタンスに対するリソース制限の設定をセットとし,名前を付けたもの。

作成したプロファイルは,複数のユーザに割り当てることができる。ただし,1 ユーザに割り当てられるプロファイルは 1 つのみ。

初期化パラメータファイル RESOURCE_LIMIT 初期化パラメータの値を TRUE にすることで,ユーザに対応させたプロファイルの設定が有効になる。無効 (FALSE) のままでは割り当てたプロファイルの設定は反映されない。

/* ex2: プロファイルの設定 */

 CREATE USER ユーザ名
   :
   [ PROFILE プロファイル名 ]    ← 指定のプロファイルで定義されたリソース制限の適用

ユーザ作成時に明示的にプロファイルの割り当てを行わなかった場合,DEFAULT プロファイルが割り当てられる。

アカウントの有効 / 無効設定

ユーザを作成するものの,すぐにはそのアカウントを使用しない場合など,アカウントにロック (LOCK) をかけておくことができる。明示的に指定しなかった場合は,デフォルトでロックは解除 (UNLOCK) される。

/* ex1: アカウントロック */

 CREATE USER ユーザ名
   :
   [ ACCOUNT { LOCK | UNLOCK } ]
        └← アカウントをロック (LOCK) / ロック解除 (UNLOCK) の状態で初期化

ユーザ作成後にアカウントのロック / ロック解除を行うには,ALTER USER 文を用いる。