ロール とは役割を意味します。オブジェクト権限やシステム権限を個別のユーザに与えるのではなく、ロールに与えることができます。 ロールをユーザに与えることによって、ユーザをグループごとに管理できます。 ロールは複数のユーザに与えることができます。また、ユーザは複数のロールを与えられることがあります。
ロールとは、ユーザの役割を示すデータベース・オブジェクトである。システム権限やオブジェクト権限を直接ユーザに付与すると権限管理が煩雑になるため、ロールを介して権限を付与できる。
たとえば、権限をユーザに直接付与したときの関連は次のようになる。
権限をロールに付与して、そのロールをユーザに付与すると次のようになる。
ロールにロールを付与すると次のようになる。
ロールは非スキーマオブジェクトである。
Oracleデータベースには、次に示す事前定義済みのロールがある。
これらの定義済みのロールは互換性のために残されているだけで、使用は推奨されていません。
CONNECT は、エンドユーザー向けのロールです。CREATE SESSIONやCREATE TABLE、CREATE VIEWなどのシステム権限が与えられています。
RESOURCE は、開発者向けのロールです。CREATE TRIGGERやCREATE PROCEDUREなどのシステム権限が与えられています。CONNECTロールに含まれているシステム権限は含まれていません。
DBA は、データベース管理者向けのロールです。すべてのシステム権限がWITH ADMIN OPTION付きで与えられています。
ロールに関するデータ・ディクショナリ・ビューを以下に示す。
ALL_ROLES や USER_ROLES という名前のデータ・ディクショナリ・ビューは存在しない。
DBA_ROLE_PRIVS は、Oracleデータベース内のすべてのユーザーおよびロールに付与されたロールを示すデータ・ディクショナリ・ビューである。
DBA_ROLES は、データベース内のすべてのロールを示すデータ・ディクショナリ・ビューである。
ROLE_ROLE_PRIVS は、別のロールに付与されたロールを示すデータ・ディクショナリ・ビューである。
USER_ROLE_PRIVS は、現在のユーザーに付与されたロールを示すデータ・ディクショナリ・ビューである。
ロールに関するSQL文を以下に示す。
CREATE ROLE は、ロールを作成するSQL文である。
ALTER ROLE は、ロールを変更するSQL文である。
GRANT は、ロールに権限を付与したり、ユーザにロールを付与するSQL文である。
REVOKE は、ロールから権限を剥奪したり、ユーザからロールを剥奪するSQL文である。
ロールに関するシステム権限を以下に示す。
CREATE ROLE は、自分のスキーマにロールを作成できるシステム権限である。なお、自分のスキーマにあるロールの変更や削除もできる。
ALTER ANY ROLE は、任意のスキーマにあるロールを変更できるシステム権限である。
DROP ANY ROLE は、任意のスキーマにあるロールを削除できるシステム権限である。
GRANT ANY ROLE は、任意のロールを付与できるシステム権限である。