■データベースを使用するユーザを定義し、管理する。
- Oracleデータベースを使用するには、必ずログインしなければならない。ログインするためのアカウントがユーザであり、ユーザにはさまざまな制限をかけることができる。
- ユーザを作成するにはCREATE USER権限が、変更にはALTER USER権限が必要。
■各ユーザごとに管理する項目
- 1.ユーザ名
- ユーザ作成時に指定する。作成後に変更することはできない。
- 2.パスワード
- ユーザ作成時又は作成後に指定する。ユーザは自分のパスワードを変更できるが、他のユーザのパスワードを変更するにはALTER USER権限が必要。
- 3.表領域
制限- ユーザが使える表領域および表領域内で使える容量を指定する。ユーザ作成時又は作成後に指定する。ユーザは自分が使える表領域を変更することはできない。変更にはALTER USER権限が必要。
- 4.権限付与
- 権限付与はユーザ作成後に行う。ユーザがどのオブジェクトを使えるようにするか(オブジェクト権限)、またはどんな作業ができるようにするか(システム権限)を指定する。
■
上記の1〜3はCREATE USERコマンドで定義し、ユーザ名はCREATE USERコマンドで定義し、パスワード、表領域制限はCREATE USER又はALTER USERコマンドで定義し、権限付与はGRANTコマンドを使用する。
■ユーザ作成手順
- データベース管理者用ユーザでログインする。
(例)「SYS」ユーザ又は「SYSTEM」ユーザ又はDBA権限を持つユーザ- ユーザを作成する
(CREATE USER 〜)
ユーザ名とパスワードを決める。
(必要に応じて、表領域を定義する)- ユーザに
各々適した権限を与える。(GRANT 〜)■「SYS」や「SYSTEM」ユーザは〜
データベースそのものを管理するデータディクショナリ。の所有者でもあります。はSYSユーザが所有しているSYSやSYSTEMユーザはOracleシステム自体に関わる重要なデータの所有者であるため、初期作業以外では使用するべきではない。
管理用のユーザを作成し、そのユーザにDBA権限を与えて使用するべきである。
すべて重要!!
[構文]
CREATE USER ユーザ名
IDENTIFIED BY パスワード
[ DEFAULT TABLESPACE デフォルト表領域名 ]
[ TEMPORARY TABLESPACE テンポラリ表領域名 ]
[ QUOTA サイズ(K/M) ON 表領域名 ];※QUOTAは一度に複数指定できる
[補足]
- デフォルト表領域(DEFAULT TABLESPACE句で指定)、テンポラリ表領域(TEMPORARY TABLESPACE句で指定)を指定しなかった場合、SYSTEM表領域が指定されたことになる。
SYSTEM表領域はデータベースに関するすべての情報が格納されているため、ユーザ・オブジェクトを格納したり、テンポラリ領域として使うべきではない。- クォータ(QUOTA句)の指定がない表領域はクォータが0ということになり、ユーザはその表領域にオブジェクトを作成できない。
- クォータの指定で
とした場合、
QUOTA UMLIMITEDON 表領域名無制限に使えるという意味になる。
すべて重要!!
■
クォータの指定を省略した場合でも、テンポラリ表領域はシステムが適宣割り当ててくれるので、ソートなどの作業は可能です。
テンポラリ表領域はクォータの指定は必要ない!!
すべて重要!!
■ユーザに関するデータ・ディクショナリで見れる情報
- user_users
名前 NULL? 型 USERNAME NOT NULL VARCHAR2(30) USER_ID NOT NULL NUMBER ACCOUNT_STATUS NOT NULL VARCHAR2(32) LOCK_DATE DATE EXPIRY_DATE DATE DEFAULT_TABLESPACE NOT NULL VARCHAR2(30) TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30) CREATED NOT NULL DATE INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30) EXTERNAL_NAME VARCHAR2(4000) - all_users
名前 NULL? 型 USERNAME NOT NULL VARCHAR2(30) USER_ID NOT NULL NUMBER CREATED NOT NULL DATE - dba_users
名前 NULL? 型 USERNAME NOT NULL VARCHAR2(30) USER_ID NOT NULL NUMBER PASSWORD VARCHAR2(30) ACCOUNT_STATUS NOT NULL VARCHAR2(32) LOCK_DATE DATE EXPIRY_DATE DATE DEFAULT_TABLESPACE NOT NULL VARCHAR2(30) TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30) CREATED NOT NULL DATE PROFILE NOT NULL VARCHAR2(30) INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30) EXTERNAL_NAME VARCHAR2(4000)
操作例で確認!!
ただし自分のユーザでログインする。また、dba_usersは参照できない。
すべて重要!!
■BLOCKとは〜
ブロックサイズ(2から16k2k,4k,8k,16kのいずれか)の倍数で定義する。■クォータに関するデータ・ディクショナリで見れる情報
- user_ts_quotas
名前 NULL? 型 TABLESPACE_NAME NOT NULL VARCHAR2(30) BYTES NUMBER MAX_BYTES NUMBER BLOCKS NOT NULL NUMBER MAX_BLOCKS NUMBER - dba_ts_quotas
名前 NULL? 型 TABLESPACE_NAME NOT NULL VARCHAR2(30) USERNAME NOT NULL VARCHAR2(30) BYTES NUMBER MAX_BYTES NUMBER BLOCKS NOT NULL NUMBER MAX_BLOCKS NUMBER
操作例で確認!!
ただし自分のユーザでログインする。また、dba_ts_quotasは参照できないため、user_ts_quotasで確認する。
[構文]
ALTER USER ユーザ名
[ IDENTIFIED BY パスワード ]
[ DEFAULT TABLESPACE デフォルト表領域名 ]
[ TEMPORARY TABLESPACE テンポラリ表領域名 ]
[ QUOTA サイズ(K/M) ON 表領域名 ];※CREATEがALTERになっただけで、中身はまったく同じ!!
■変更できるユーザの設定情報は次の通り。
- パスワード
(IDETIFIED BY パスワード)- デフォルト表領域
(DEFAULT TABLESPACE 表領域名)- テンポラリ表領域
(TEMPORARY TABLESPACE 表領域名)- 容量制限
(QUOTA サイズ ON 表領域名)ユーザ名以外のすべてを変更できる!!
■パスワードは管理者ユーザ(DBA権限を持つユーザ)だけでなく、
ユーザ自身も自分のパスワードを変更できる。[操作確認]
自分のパスワードを変更し、ログインしなおしてみよう。
[構文]
DROP USER ユーザ名 [ CASCADE ]; [まとめ]
- ユーザを削除するにはDROP USERコマンドを使う。
DROP USER ユーザ名; - 削除予定のユーザがオブジェクトを持っている場合、削除コマンドを発行してもエラーとなり、削除できない。
- オブジェクトを持つユーザを削除するには、まずそのユーザの持つオブジェクトをすべて削除し、その後削除コマンドを実行する。または、ユーザ削除コマンドに
CASCADEオプションをつける。
DROP USER ユーザ名 CASCADE; [補足]
自分がどんなオブジェクトを持っているかを確認するには、データ・ディクショナリ
user_objectsを参照する。
SELECT object_name, object_type, status
FROM user_objects;また、管理者が特定のユーザのオブジェクトを確認するには、データ・ディクショナリ
dba_objectsを参照する。
SELECT object_name, object_type, status
FROM dba_objects
WHERE owner = 'ユーザ名';