01.新規ユーザー作成時に最低限割り当てるべき権限
CREATE SESSIONシステム権限
CREATE SESSION権限は、データベースに接続を許可するシステム権限です。
CREATE SESSION権限が付与されていないと、SQLを実行するどころか、データベースに接続すらできません。
なお、CREATE SESSION権限は、事前定義済みのロールであるCONNECTロールとDBAロールに含まれているため、これらのロールを付与することでもデータベースへの接続ができるように構成できます。
表領域割当制限
Oracle Databaseにおいて、表などのオブジェクトの保存先は表領域になりますが、ユーザーに対して表領域割当制限を付与しないと、表領域にオブジェクト保存用の領域を確保することはできません。領域を確保できないと、オブジェクトを作成することができません。
表領域割当制限を付与するには以下の2つの方法があります。
- QUOTA句を用いて表領域毎に表領域割当制限を付与する
- UNLIMITED TABLESPACEシステム権限を付与して、全ての表領域に対するサイズ無制限の表領域割当制限を付与する
QUOTA句を用いた表領域割当制限
ALTER USER [ユーザー名] QUOTA [サイズ] ON [表領域名];
を実行して、指定ユーザーに対して表領域割当制限を付与できます。
以下に、ユーザーTESTに対して、表領域 TEST_TBS における 10Mバイトの表領域割当制限を付与する例を示します。
SQL> ALTER USER TEST QUOTA 10M ON TEST_TBS;
ユーザーが変更されました。
QUOTA句を用いる表領域割当制限では、表領域単位で割当可能サイズを設定できるため、詳細な表領域割当制限を実現できます。
UNLIMITED TABLESPACEシステム権限
GRANT UNLIMITED TABLESPACE TO [ユーザー名];
を実行して、指定ユーザーに対して 全ての表領域に対する無制限の表領域割当制限を付与できます。
CREATE xxxx システム権限
ユーザーは、自分が所有するオブジェクトへのオブジェクト権限を持ちますが、オブジェクトに対応するCREATE xxxx システム権限が付与されていないと、オブジェクトの所有者が自分であっても作成できません。
例をあげると、自分が所有する作成済みテーブルに対して、SELECT, UDPATE, DELETEなどの操作を実行することはできますが、新規にテーブルを作成することはできません。テーブルを作成するためにはCREATE TABLEシステム権限が必要です。同様に、CREATE VIEWシステム権限がないと、新規にビューを作成することができません。
02.その他指定すべき項目
上記以外に新規ユーザー作成時に最低限割り当てるべき設定をまとめます。
デフォルト表領域の指定
デフォルト表領域は、格納先表領域を明示的に指定しないでテーブルなどのオブジェクトを作成したときの格納先表領域です。
ユーザーに対してデフォルト表領域が指定されていない場合、データベースのデフォルト表領域に格納されます。また、データベースのデフォルト表領域が指定されていない場合、SYSTEM表領域に格納されます。
デフォルト一時表領域の指定
デフォルト一時表領域は、大量のデータをソートする際に使用される一時表領域です。
ユーザーに対してデフォルト一時表領域が指定されていない場合、データベースのデフォルト一時表領域に格納されます。また、データベースのデフォルト一時表領域が指定されていない場合、SYSTEM表領域に格納されます。
03.まとめ
新規ユーザー作成時には、以下の権限および項目を構成すべきです。
- CREATE SESSIONシステム権限
- CREATE xxxx システム権限
- 表領域割当制限
- デフォルト一時表領域の指定
- デフォルト表領域の指定
- QUOTA句を用いた表領域割当制限
- UNLIMITED TABLESPACEシステム権限