【ORACLE】ロールを作成・変更・削除するSQL


ここではORACLEデータベースで、ロールを作成・変更・削除するSQLを紹介しています。

ロールの一覧を確認する方法は↓で紹介しています。
>>【ORACLE】ロールの一覧を確認するSQL

ロールとは

ロールとは複数の権限をグループにまとめたものです。

ロールには、システム権限やオブジェクト権限、さらにロールもまとめることが出来ます。

ユーザーに権限を割り当てる際、複数の権限を1つ1つ付与するのは大変ですが、ロールを使うことで、グループ化された権限を1度で付与することが出来ます。

権限には非常にたくさんの種類があります。オブジェクト権限やシステム権限については↓で紹介していますのでぜひ参考にしてください。
>>【ORACLE】オブジェクト権限を付与・取消するSQL
>>【ORACLE】システム権限の一覧

ロールを作成するSQL

ロールの作成はCREATE SEQUENCE文を使います。

ロールの作成や変更、削除には↓の権限が必要です。
 作成:CREATE ROLE
 変更:ALTER ANY ROLE
 削除:DROP ANY ROLE
 付与:GRANT ANY ROLE

システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL

CREATE ROLE文の基本構文

CREATE SEQUENCEの基本構文は次の通りです。

CREATE ROLE ロール名
[NOT IDENTIFIED | IDENTIFIED BY パスワード];

・[NOT IDENTIFIED]を指定することでパスワードを入力しなくてもロールを使用可能に出来ます。

・[IDENTIFIED BY パスワード]を指定することで、ロールを使用するときに入力するパスワードを登録します。

CREATE ROLE文のSQLサンプル

CREATE ROLE文のサンプルです。

次のSQLでは、1行目でTEST_ROLE1ロールを作成しています。2行目でSELECT ANE TABLE権限を付与しています。

CREATE CREATE test_role1;
GRANT SELECT ANY TABLE TO test_role1;

ロールは作成した時点では一切権限が付与されていないので、GRANT文を使って権限を付与する必要があります。

ロールに権限を付与する方法は↓で詳しく紹介していますのでぜひ参考にしてください。
>>【ORACLE】ロールを付与・取消するSQL

ロールを変更するSQL

ALTER文を使うことで、ロールを使用するための認可を変更することが出来ます。

ALTER ROLE ロール名
[NOT IDENTIFIED | IDENTIFIED BY パスワード];

ロールを削除するSQL

ロールを削除するときはDROP文を使います。

DROP ROLE test_role1;

ORACLEで定義されたデフォルトロール

ロール名 説明
CONNECT ・一般ユーザ用のシステム権限をまとめたロール
・CREATE SESSIONシステム権限が付与されています。
RESOURCE ・開発者用のシステム権限をまとめたロール
・テーブルやクラスタ、プロシージャ、シーケンス PROCEDURE、トリガーなどを作成する権限が付与されています。
DBA ・データベース管理者用のシステム権限をまとめたロール
・ADMINオプション付きのた全てのシステム権限が付与されています。
EXP_FULL_DATABASE データベースのエクスポートと増分エクスポート実行用のロール
IMP_FULL_DATABASE エクスポートされたオブジェクトのインポート実行用のロール
SELECT_CATALOG_ROLE データ・ディクショナリ内のオブジェクトに対するSELECT権限
EXECUTE_CATALOG_ROLE データ・ディクショナリ内のオブジェクトに対するEXECUTE権限
DELETE_CATALOG_ROLE システム監査表(AUD$)に対するDELETE権限
RECOVERY_CATALOG_OWNER リカバリ・カタログの所有者の権限

まとめ

ロールの作成はCREATE ROLE、変更はALTER文、削除はDROP文を使います。

ロールの作成や変更、削除には↓の権限が必要です。
 作成:CREATE ROLE
 変更:ALTER ANY ROLE
 削除:DROP ANY ROLE
 付与:GRANT ANY ROLE

システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL