株式会社コーソル

KNOWLEDGE

コーソルの技術情報

コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。

KNOWLEDGE検索人気のキーワード

Oracle DB ベストプラクティス

新規ユーザー作成時に最低限割り当てるべき権限

CREATE USER文を実行することで新規にユーザーを作成できますが、単に作成しただけでは、権限不足のためデータベースに接続すらできません。新規ユーザー作成時に最低限割り当てるべき権限を整理します。

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システム権限