【初心者向け】_【スーパーユーザ理解‗第一回】oracle DBAロールとは

早速だが、
oracleデータベースを使用していて、なんとなく下記のユーザやコマンド
を当たり前のように使用していないだろうか？

- sysユーザ
- sqlplus / as sysdba
- Systemユーザ etc


上記をなんとなく使用ているのは、きわめて危険である。
上記を理解するために、全4回に分けて、理解を深めてほしい。


第一回のトピックは、『DBAロール』についてである。


# 目次
1. oracle ロールとは
1. DBAロールの内容
1. まとめ


## 1. oracle ロールとは
DBAロールのお話をする前に、oracleにおけるロールという用語を復習しよう。
(ロールについて理解できている人は読み飛ばしてください)

MySQLやPostgreSQL、各種RDBMSを使用していると **『ロール』** という用語は、度々聞くと思う。
それぞれのRDBMSでの **『ロール』** は、少し意味が違ってくる。
oracleにおける **『ロール』** は、一言でいうと
- 権限の詰め合わせセットである。


oracleでは、何をするにしても権限が必要になってくる。
- インスタンスへのアクセス権限
- 別スキーマへアクセスする際にオブジェクト権限
- V$ビューへのアクセス権限
- インデックスを作成するための権限 etc

毎回ユーザを管理する側としては、毎回一つ一つの権限を各ユーザに付与するのは、とてもめんどくさい。。
そこで、役に立つのが、ロールである。

イメージ図を下記に示す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3477632/5a34de19-aae3-958b-5714-003458e8efa1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3477632/ba8ae341-b2a6-dfd1-bebc-9d74dc7332a2.png)


上記のように、複数の権限をまとめて付与したいといったときにロールは便利である。


## 2. DBAロールの内容
DBAロールは、基本的にDBのすべてのオブジェクトに対してなんでもできるロールである。
実際のロールの中身(詰め込まれている権限)は、以下の通りである。
``` SQL
select ROLE,PRIVILEGE from role_sys_privs  where role = 'DBA' order by 2

ROLE                           PRIVILEGE
------------------------------ ----------------------------------------
DBA                            ADMINISTER ANY SQL TUNING SET
DBA                            ADMINISTER DATABASE TRIGGER
DBA                            ADMINISTER RESOURCE MANAGER
DBA                            ADMINISTER SQL MANAGEMENT OBJECT
DBA                            ADMINISTER SQL TUNING SET
DBA                            ADVISOR
DBA                            ALTER ANY ANALYTIC VIEW
DBA                            ALTER ANY ASSEMBLY
DBA                            ALTER ANY ATTRIBUTE DIMENSION
DBA                            ALTER ANY CLUSTER
DBA                            ALTER ANY CUBE
DBA                            ALTER ANY CUBE BUILD PROCESS
DBA                            ALTER ANY CUBE DIMENSION
DBA                            ALTER ANY DIMENSION
DBA                            ALTER ANY EDITION
DBA                            ALTER ANY EVALUATION CONTEXT
DBA                            ALTER ANY HIERARCHY
DBA                            ALTER ANY INDEX
DBA                            ALTER ANY INDEXTYPE
DBA                            ALTER ANY LIBRARY
DBA                            ALTER ANY MATERIALIZED VIEW
DBA                            ALTER ANY MEASURE FOLDER
DBA                            ALTER ANY MINING MODEL
DBA                            ALTER ANY OPERATOR
DBA                            ALTER ANY OUTLINE
DBA                            ALTER ANY PROCEDURE
DBA                            ALTER ANY ROLE
DBA                            ALTER ANY RULE
DBA                            ALTER ANY RULE SET
DBA                            ALTER ANY SEQUENCE
DBA                            ALTER ANY SQL PROFILE
DBA                            ALTER ANY SQL TRANSLATION PROFILE
DBA                            ALTER ANY TABLE
DBA                            ALTER ANY TRIGGER
DBA                            ALTER ANY TYPE
DBA                            ALTER DATABASE
DBA                            ALTER LOCKDOWN PROFILE
DBA                            ALTER PROFILE
DBA                            ALTER RESOURCE COST
DBA                            ALTER ROLLBACK SEGMENT
DBA                            ALTER SESSION
DBA                            ALTER SYSTEM
DBA                            ALTER TABLESPACE
DBA                            ALTER USER
DBA                            ANALYZE ANY
DBA                            ANALYZE ANY DICTIONARY
DBA                            AUDIT ANY
DBA                            AUDIT SYSTEM
DBA                            BACKUP ANY TABLE
DBA                            BECOME USER
DBA                            CHANGE NOTIFICATION
DBA                            COMMENT ANY MINING MODEL
DBA                            COMMENT ANY TABLE
DBA                            CREATE ANALYTIC VIEW
DBA                            CREATE ANY ANALYTIC VIEW
DBA                            CREATE ANY ASSEMBLY
DBA                            CREATE ANY ATTRIBUTE DIMENSION
DBA                            CREATE ANY CLUSTER
DBA                            CREATE ANY CONTEXT
DBA                            CREATE ANY CREDENTIAL
DBA                            CREATE ANY CUBE
DBA                            CREATE ANY CUBE BUILD PROCESS
DBA                            CREATE ANY CUBE DIMENSION
DBA                            CREATE ANY DIMENSION
DBA                            CREATE ANY DIRECTORY
DBA                            CREATE ANY EDITION
DBA                            CREATE ANY EVALUATION CONTEXT
DBA                            CREATE ANY HIERARCHY
DBA                            CREATE ANY INDEX
DBA                            CREATE ANY INDEXTYPE
DBA                            CREATE ANY JOB
DBA                            CREATE ANY LIBRARY
DBA                            CREATE ANY MATERIALIZED VIEW
DBA                            CREATE ANY MEASURE FOLDER
DBA                            CREATE ANY MINING MODEL
DBA                            CREATE ANY OPERATOR
DBA                            CREATE ANY OUTLINE
DBA                            CREATE ANY PROCEDURE
DBA                            CREATE ANY RULE
DBA                            CREATE ANY RULE SET
DBA                            CREATE ANY SEQUENCE
DBA                            CREATE ANY SQL PROFILE
DBA                            CREATE ANY SQL TRANSLATION PROFILE
DBA                            CREATE ANY SYNONYM
DBA                            CREATE ANY TABLE
DBA                            CREATE ANY TRIGGER
DBA                            CREATE ANY TYPE
DBA                            CREATE ANY VIEW
DBA                            CREATE ASSEMBLY
DBA                            CREATE ATTRIBUTE DIMENSION
DBA                            CREATE CLUSTER
DBA                            CREATE CREDENTIAL
DBA                            CREATE CUBE
DBA                            CREATE CUBE BUILD PROCESS
DBA                            CREATE CUBE DIMENSION
DBA                            CREATE DATABASE LINK
DBA                            CREATE DIMENSION
DBA                            CREATE EVALUATION CONTEXT
DBA                            CREATE EXTERNAL JOB
DBA                            CREATE HIERARCHY
DBA                            CREATE INDEXTYPE
DBA                            CREATE JOB
DBA                            CREATE LIBRARY
DBA                            CREATE LOCKDOWN PROFILE
DBA                            CREATE MATERIALIZED VIEW
DBA                            CREATE MEASURE FOLDER
DBA                            CREATE MINING MODEL
DBA                            CREATE OPERATOR
DBA                            CREATE PLUGGABLE DATABASE
DBA                            CREATE PROCEDURE
DBA                            CREATE PROFILE
DBA                            CREATE PUBLIC DATABASE LINK
DBA                            CREATE PUBLIC SYNONYM
DBA                            CREATE ROLE
DBA                            CREATE ROLLBACK SEGMENT
DBA                            CREATE RULE
DBA                            CREATE RULE SET
DBA                            CREATE SEQUENCE
DBA                            CREATE SESSION
DBA                            CREATE SQL TRANSLATION PROFILE
DBA                            CREATE SYNONYM
DBA                            CREATE TABLE
DBA                            CREATE TABLESPACE
DBA                            CREATE TRIGGER
DBA                            CREATE TYPE
DBA                            CREATE USER
DBA                            CREATE VIEW
DBA                            DEBUG ANY PROCEDURE
DBA                            DEBUG CONNECT ANY
DBA                            DEBUG CONNECT SESSION
DBA                            DELETE ANY CUBE DIMENSION
DBA                            DELETE ANY MEASURE FOLDER
DBA                            DELETE ANY TABLE
DBA                            DEQUEUE ANY QUEUE
DBA                            DROP ANY ANALYTIC VIEW
DBA                            DROP ANY ASSEMBLY
DBA                            DROP ANY ATTRIBUTE DIMENSION
DBA                            DROP ANY CLUSTER
DBA                            DROP ANY CONTEXT
DBA                            DROP ANY CUBE
DBA                            DROP ANY CUBE BUILD PROCESS
DBA                            DROP ANY CUBE DIMENSION
DBA                            DROP ANY DIMENSION
DBA                            DROP ANY DIRECTORY
DBA                            DROP ANY EDITION
DBA                            DROP ANY EVALUATION CONTEXT
DBA                            DROP ANY HIERARCHY
DBA                            DROP ANY INDEX
DBA                            DROP ANY INDEXTYPE
DBA                            DROP ANY LIBRARY
DBA                            DROP ANY MATERIALIZED VIEW
DBA                            DROP ANY MEASURE FOLDER
DBA                            DROP ANY MINING MODEL
DBA                            DROP ANY OPERATOR
DBA                            DROP ANY OUTLINE
DBA                            DROP ANY PROCEDURE
DBA                            DROP ANY ROLE
DBA                            DROP ANY RULE
DBA                            DROP ANY RULE SET
DBA                            DROP ANY SEQUENCE
DBA                            DROP ANY SQL PROFILE
DBA                            DROP ANY SQL TRANSLATION PROFILE
DBA                            DROP ANY SYNONYM
DBA                            DROP ANY TABLE
DBA                            DROP ANY TRIGGER
DBA                            DROP ANY TYPE
DBA                            DROP ANY VIEW
DBA                            DROP LOCKDOWN PROFILE
DBA                            DROP PROFILE
DBA                            DROP PUBLIC DATABASE LINK
DBA                            DROP PUBLIC SYNONYM
DBA                            DROP ROLLBACK SEGMENT
DBA                            DROP TABLESPACE
DBA                            DROP USER
DBA                            EM EXPRESS CONNECT
DBA                            ENQUEUE ANY QUEUE
DBA                            EXECUTE ANY ASSEMBLY
DBA                            EXECUTE ANY CLASS
DBA                            EXECUTE ANY EVALUATION CONTEXT
DBA                            EXECUTE ANY INDEXTYPE
DBA                            EXECUTE ANY LIBRARY
DBA                            EXECUTE ANY OPERATOR
DBA                            EXECUTE ANY PROCEDURE
DBA                            EXECUTE ANY PROGRAM
DBA                            EXECUTE ANY RULE
DBA                            EXECUTE ANY RULE SET
DBA                            EXECUTE ANY TYPE
DBA                            EXECUTE ASSEMBLY
DBA                            EXPORT FULL DATABASE
DBA                            FLASHBACK ANY TABLE
DBA                            FLASHBACK ARCHIVE ADMINISTER
DBA                            FORCE ANY TRANSACTION
DBA                            FORCE TRANSACTION
DBA                            GLOBAL QUERY REWRITE
DBA                            GRANT ANY OBJECT PRIVILEGE
DBA                            GRANT ANY PRIVILEGE
DBA                            GRANT ANY ROLE
DBA                            IMPORT FULL DATABASE
DBA                            INSERT ANY CUBE DIMENSION
DBA                            INSERT ANY MEASURE FOLDER
DBA                            INSERT ANY TABLE
DBA                            LOCK ANY TABLE
DBA                            LOGMINING
DBA                            MANAGE ANY FILE GROUP
DBA                            MANAGE ANY QUEUE
DBA                            MANAGE FILE GROUP
DBA                            MANAGE SCHEDULER
DBA                            MANAGE TABLESPACE
DBA                            MERGE ANY VIEW
DBA                            ON COMMIT REFRESH
DBA                            QUERY REWRITE
DBA                            READ ANY FILE GROUP
DBA                            READ ANY TABLE
DBA                            REDEFINE ANY TABLE
DBA                            RESTRICTED SESSION
DBA                            RESUMABLE
DBA                            SELECT ANY CUBE
DBA                            SELECT ANY CUBE BUILD PROCESS
DBA                            SELECT ANY CUBE DIMENSION
DBA                            SELECT ANY DICTIONARY
DBA                            SELECT ANY MEASURE FOLDER
DBA                            SELECT ANY MINING MODEL
DBA                            SELECT ANY SEQUENCE
DBA                            SELECT ANY TABLE
DBA                            SELECT ANY TRANSACTION
DBA                            SET CONTAINER
DBA                            UNDER ANY TABLE
DBA                            UNDER ANY TYPE
DBA                            UNDER ANY VIEW
DBA                            UPDATE ANY CUBE
DBA                            UPDATE ANY CUBE BUILD PROCESS
DBA                            UPDATE ANY CUBE DIMENSION
DBA                            UPDATE ANY TABLE
DBA                            USE ANY JOB RESOURCE
DBA                            USE ANY SQL TRANSLATION PROFILE

235行が選択されました。
```



DBA(DBの管理者)は、基本運用を行う上で、DBAロールが付与されているユーザを使用する。


## 3．まとめ

本投稿をまとめると以下の通りである。
- oracleにおけるロールとは、権限の詰め合わせである
- DBAロールは、様々な権限が詰め込まれている
- DBAロールを付与されたユーザは、oracle内のすべてのオブジェクトに対してアクセス可能である