Oracleにはシステム権限とオブジェクト権限の2種類あります。
権限をロールとしてひとまとめにすることもでき、ロールにロールを付与することもできます。
注意として、権限だけではデフォルト表領域以外は、
スキーマの表領域へのアクセス制限を確認する設定が必要です。
また、grantはロールと権限を混在して記述できません。
もっとも注意しなければならないのは、ストアド内部ではロールの権限は無視されることです。
スキーマやロールに付与したシステム権限を確認します。
set pages 10000
set lines 100
col grantee for a20
col privilege for a30
select grantee,privilege from dba_sys_privs
where grantee='SSS01DBUSER'
order by grantee,privilege;
GRANTEE PRIVILEGE
-------------------- ------------------------------
SSS01DBUSER ALTER ANY TABLE
SSS01DBUSER CREATE ANY INDEX
SSS01DBUSER CREATE ANY MATERIALIZED VIEW
SSS01DBUSER CREATE ANY PROCEDURE
SSS01DBUSER CREATE ANY SEQUENCE
SSS01DBUSER CREATE ANY TABLE
SSS01DBUSER CREATE ANY TRIGGER
SSS01DBUSER CREATE ANY VIEW
SSS01DBUSER CREATE PROCEDURE
SSS01DBUSER CREATE SEQUENCE
SSS01DBUSER CREATE SESSION
SSS01DBUSER CREATE TABLE
SSS01DBUSER CREATE TRIGGER
SSS01DBUSER DELETE ANY TABLE
SSS01DBUSER DROP ANY INDEX
SSS01DBUSER DROP ANY MATERIALIZED VIEW
SSS01DBUSER DROP ANY PROCEDURE
SSS01DBUSER DROP ANY SEQUENCE
SSS01DBUSER DROP ANY TABLE
SSS01DBUSER DROP ANY TRIGGER
SSS01DBUSER DROP ANY VIEW
SSS01DBUSER EXECUTE ANY PROCEDURE
SSS01DBUSER GLOBAL QUERY REWRITE
SSS01DBUSER INSERT ANY TABLE
SSS01DBUSER RESUMABLE
SSS01DBUSER SELECT ANY SEQUENCE
SSS01DBUSER SELECT ANY TABLE
SSS01DBUSER UPDATE ANY TABLE
スキーマやロールに付与したロールを確認します。
set pages 10000
set lines 100
col grantee for a20
col granted_role for a20
select grantee,granted_role from dba_role_privs
where grantee='SSS01DBUSER'
order by grantee,granted_role;
GRANTEE GRANTED_ROLE
-------------------- --------------------
SSS01DBUSER SSS01APP
SSS01DBUSER CONNECT
スキーマやロールに付与したオブジェクト権限を確認します。
set pages 10000
set lines 100
col grantee for a20
col owner for a10
col table_name for a30
col privilege for a20
select grantee,owner,table_name,privilege from dba_tab_privs
where grantee like 'SSS01DBUSER'
order by grantee,table_name,privilege;
GRANTEE OWNER TABLE_NAME PRIVILEGE
------------ ---------- --------------- -----------
SSS01DBUSER SYS DBMS_LOCK EXECUTE
ログインしているスキーマのシステム権限を確認します。
set pages 10000
set lines 100
col privilege for a30
select privilege from user_sys_privs order by privilege;