※表領域を確認して、ユーザー作成を行う。
- 表領域の確認 (表領域名、状態、CONTENTS)
SQL> SELECT tablespace_name, status, contents FROM dba_tablespaces;
- 表領域とデータ・ファイル情報の取得(ファイル名、領域名)
SQL> SELECT file_name, tablespace_name FROM dba_data_files;
- ユーザーのデフォルト表領域(ユーザー名、デフォルトとなるデータ領域)
SQL> SELECT username, default_tablespace FROM user_users;
- ユーザー一覧(ユーザー名、デフォルトとなるデータ領域)
SQL> SELECT username, default_tablespace FROM dba_users;
- ユーザー作成
CREATE USER ユーザー名
IDENTIFIED BY パスワード
[DEFAULT TABLESPACE デフォルト表領域]
[TEMPORARY TABLESPACE 一時表領域]
[ QUOTA サイズ(K/M) ON 表領域名 ];※補足:
①[ ]で囲んだものは省略が可能。デフォルト表領域(DEFAULT TABLESPACE句で指定)、テンポラリ表領域(TEMPORARY TABLESPACE句で指定)を
指定しなかった場合、SYSTEM表領域が指定されたことになる
② SYSTEM表領域はデータベースに関するすべての情報が格納されているため、
ユーザ・オブジェクトを格納したり、テンポラリ領域として使うべきではない。
③ クォータ(QUOTA句)の指定がない表領域はクォータが0ということになり、ユーザはその表領域にオブジェクトを作成できない。
クォータの指定で
QUOTA "UMLIMITED" ON 表領域名
とした場合、"無制限に使える"という意味になる。
- 権限の付与(ロールの与え)
SQL> GRANT connect, resource TO ユーザー名;
※ この権限を付与しないと、せっかくユーザを作ってもログインさえできない。
ロールとは
ユーザーが権限について色々と組み合わせて名前をつけたものであり、アカウント管理のグループのようなものである。実行結果、作成された新規ユーザの権限を確認したら、下記のような権限があった。
PRIVILEGE
- - - - - - - -
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPEor下記の方法で
権限の付与(細かく指定し、権限を付与する)
SQL> GRANT CREATE SESSION, CREATE TABLE,
CREATE SEQUENCE, CREATE VIEW, CREATE PROCEDURE
TO ユーザー名;
- 権限の確認(自分が持っている権限を確認)
SQL> SELECT * FROM session_privs;
- ユーザーの削除
DROP USER ユーザー名;
ユーザーの所有するスキーマ・オブジェクトも一緒に削除
SQL> DROP USER ユーザー名 CASCADE;
- 誰が何のプロファイルを使用しているか確認
SQL> SELECT username, profile FROM dba_users;