ユーザーとは?
Oracleデータベースへログインするアカウント
・ ユーザ名
・ パスワード
・ 表領域
・ 表領域サイズ
・ プロファイル
を設定できる。
作成
CREATE USER (ユーザー名) IDENTIFIED BY (パスワード)
オブジェクト作成先表領域
[ DEFAULT TABLESPACE (デフォルト表領域名) ]
※省略した場合、SYSTEM表領域に作成される
使用する一時表領域
[ TEMPORARY TABLESPACE (一時表領域名) ]
※省略した場合、SYSTEM表領域が使用される
表領域割当制限
[ QUOTA (サイズ) ON (表領域名) ]
※省略した場合、割り当てサイズ=0=ユーザはオブジェクトを作成できない
[ PROFILE (プロファイル名) ]
※省略した場合、DEFAULT プロファイルが割り当てられる
;
デフォルトで作成されるユーザー
「Oracle DBCA使用方法/デフォルトで作成されるユーザー一覧」参照
削除
DROP USER (ユーザー名)
ログイン中のユーザーは削除できない
ユーザーが所有している(=スキーマ内の)オブジェクトも削除される
権限
オブジェクト権限
他スキーマのオブジェクトに対する操作権限
他スキーマの所有者が、別スキーマユーザーに対して付与
オブジェクト権限名 |
表 |
ビュー |
順序 |
プロシージャ |
内容 |
SELECT |
○ |
○ |
○ |
|
|
INSERT |
○ |
○ |
|
|
|
UPDATE |
○ |
○ |
|
|
|
DELETE |
○ |
○ |
|
|
|
ALTER |
○ |
|
○ |
|
|
INDEX |
○ |
|
|
|
|
REFERENCES |
○ |
|
|
|
参照整合性制約を作成 |
EXECUTE |
|
|
|
○ |
PL/SQLプログラムを実行 |
READ WRITE |
|
|
|
|
ディレクトリオブジェクト |
GRANT (権限名) ON (オブジェクト名) TO ユーザー名/ロール名
SQL> Grant Select, Insert, Update, Delete On tbl_test To user_test;
※ユーザー:user_testに対して、テーブル:tbl_testに関するSELECT~の権限を付与
SQL> Grant Execute On func_test To user_test;
※ユーザー:user_testに対して、関数:func_testに関する実行権限を付与
オブジェクト(表やビュー)作成(CREATE)時はそのオブジェクトの権限が全て付与される
システム権限
DBMSに対する操作権限
DBAがユーザーに権限を付与する
システム権限名 |
CREATE |
ALTER |
DROP |
他 |
説明 |
ANY INDEX
| ○ |
○ |
○ |
|
任意のスキーマ内の索引 |
ANY PROCEDURE
| ○ |
|
|
|
任意のスキーマ内のプロシージャ |
ANY SEQUENCE
| ○ |
|
|
|
任意のスキーマ内の順序 |
ANY SYNONYM
| ○ |
|
|
|
任意のスキーマ内の別名 |
ANY TABLE
| ○ |
|
|
|
任意のスキーマの表 |
ANY TRIGGER
| ○ |
|
|
|
任意のスキーマ内のトリガー |
ANY VIEW
| ○ |
|
|
|
任意のスキーマのビュー |
CLUSTER
| ○ |
○ |
○ |
|
任意のスキーマ内のクラスタ |
DATABASE LINK
| ○ |
|
|
|
プライベートデータベースリンク |
PROCEDURE
| ○ |
○ |
○ |
EXECUTE |
自スキーマ内のプロシージャ |
PROFILE
| ○ |
○ |
○ |
|
プロファイル |
PUBLIC SYNONYM
| ○ |
|
|
|
パブリックシノニム |
ROLE
| ○ |
○ |
○ |
|
ロール |
SEQUENCE
| ○ |
○ |
○ |
SELECT |
自スキーマ内の順序 |
SYNONYM
| ○ |
|
○ |
|
自スキーマ内の別名 |
PUBLIC SYNONYM
| |
|
○ |
|
パブリックシノニム |
TABLE
| ○ |
○ |
○ |
SELECT INSERT UPDATE DELETE LOCK COMMENT
| 自スキーマの表
SELECT~DELETE はVIEWにも有効
|
VIEW
| ○ |
|
○ |
|
自スキーマのビュー |
TABLESPACE
| ○ |
○ |
○ |
|
表領域 |
TRIGGER
| ○ |
|
○ |
|
自スキーマのトリガー |
USER
| ○ |
○ |
○ |
|
ユーザ |
SESSION
| |
○ |
|
|
セッションのパラメータ |
ANALYZE ANY
| |
|
|
|
表・索引を分析する権限 |
AUDIT ANY
| |
|
|
|
スキーマオブジェクトを監査する権限 |
管理ユーザー |
SYSDBA
| |
|
|
|
SYSOPER + オブジェクトの作成など何でも出来る権限 |
SYSOPER
| |
|
|
|
DBの起動・停止。データディクショナリへはアクセス不可 |
・INSERT ANY/SELECT ANY/UPDATE ANY/DELETE ANY
・CREATE/CREATE ANY/DROP
・ROCK
・SYSDBA/SYSOPER データベースの起動/停止
GRANT (権限名) TO ユーザー名/ロール名
SQL> Grant Select Any Table To user_test;
※ユーザー:user_testに対して、全テーブルに関するSELECT権限を付与
SQL> Grant Execute Any Procedure To user_test;
※ユーザー:user_testに対して、全関数の実行権限を付与
権限削除
REVOKE 権限 FROM 相手;
SQL> Revoke Select, Insert, Update, Delete On tbl_test To user_test;
※ユーザー:user_testに対して、テーブル:tbl_testに関するSELECT~の権限を削除
フラッシュバック表実行権限
・FLASHBACK TABLEシステム権限
or
・FLASHBACK ANY TABLEシステム権限
・対照の表へのSELECT、ALTER、INSERT、DELETEオブジェクト権限
役割
権限をグループ化したもの
ロールに割り当てた権限はPL/SQL実行時には適用されない
ROLE
ユーザーに対して権限の集合を付与
OSのアカウントグループ
ユーザーの集合に対して権限を付与
定義済みロール
ロール名 |
説明 |
権限 |
CONNECT |
一般ユーザ用
DB接続、表やビューの作成等 |
・CREATE SESSION
|
RESOURCE |
開発者用
プロシージャやトリガの作成等
CONNECTロールも別途必要 |
・CREATE CLUSTER
・CRETAE INDEX TYPE
・CREATE SEQUENCE
・CREATE PROCEDURE
・CREATE TRIGGER
・CREATE TABLE
|
DBA |
管理者用
ADMIN OPTION付きの全てのシステム権限 |
|
EXP_FULL_DATABASE |
全データベースエクスポート実行権限 |
|
IMP_FULL_DATABASE |
全データベースインポート実行権限 |
|
RECOVERY_CATALOG_OWNER |
リカバリカタログのメンテナンスができる権限
CONNECT、RESOURCEロールも別途必要 |
|
MGMT_USER |
EM利用 |
|
定義
Create Role role_test;
※ロール:role_test作成(権限無し)
Grant Select, Insert, Update, Delete On tbl_test To role_test;
※ロール:role_testに対して、テーブル:tbl_testに関するSELECT~の権限を付与
Grant role_test To user_test;
※ユーザー:user_testに対して、ロール:role_testの権限を付与
Grant (権限) To (ユーザー/ロール) WITH GRANT OPTION
オブジェクト権限の付与
付与された権限を付与できる権限の付与
Grant (権限) To (ユーザー/ロール) WITH ADMIN OPTION
システム権限の付与
付与された権限を付与できる権限の付与