2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第一回では、oracleのDBAロールについて説明した。

今回の内容は、oracleの中でスーパーユーザと呼ばれている
sysユーザについて
を説明していく。

目次

  1. sysユーザとは
  2. sysdba権限について
  3. 類似するsystemユーザについて
  4. まとめ

1. sysユーザとは

Oracleでのsysユーザとは、データベースの最高管理者である。
→何でもできるユーザである。
(sysユーザは、Linuxでいうところのrootユーザに近い。)

rootユーザは、すべてのオブジェクトにアクセスできるDBAロールが付与されている。
第一回参照

ちなみに、SYSユーザに与えられている各種ロールは以下の通りである。

  1  select GRANTEE,GRANTED_ROLE from dba_ROLE_PRIVS
  2  where GRANTEE='SYS'
  3* order by 2

GRANTEE                        GRANTED_ROLE
------------------------------ ------------------------------
SYS                            ADM_PARALLEL_EXECUTE_TASK
SYS                            APPLICATION_TRACE_VIEWER
SYS                            AQ_ADMINISTRATOR_ROLE
SYS                            AQ_USER_ROLE
SYS                            AUDIT_ADMIN
SYS                            AUDIT_VIEWER
SYS                            AUTHENTICATEDUSER
SYS                            BDSQL_ADMIN
SYS                            BDSQL_USER
SYS                            CAPTURE_ADMIN
SYS                            CDB_DBA
SYS                            CONNECT
SYS                            DATAPATCH_ROLE
SYS                            DATAPUMP_EXP_FULL_DATABASE
SYS                            DATAPUMP_IMP_FULL_DATABASE
SYS                            DBA
SYS                            DBFS_ROLE
SYS                            DBMS_MDX_INTERNAL
SYS                            EM_EXPRESS_ALL
SYS                            EM_EXPRESS_BASIC
SYS                            EXECUTE_CATALOG_ROLE
SYS                            EXP_FULL_DATABASE
SYS                            GATHER_SYSTEM_STATISTICS
SYS                            GDS_CATALOG_SELECT
SYS                            GGSYS_ROLE
SYS                            GSMADMIN_ROLE
SYS                            GSMROOTUSER_ROLE
SYS                            GSMUSER_ROLE
SYS                            GSM_POOLADMIN_ROLE
SYS                            HS_ADMIN_EXECUTE_ROLE
SYS                            HS_ADMIN_ROLE
SYS                            HS_ADMIN_SELECT_ROLE
SYS                            IMP_FULL_DATABASE
SYS                            LOGSTDBY_ADMINISTRATOR
SYS                            OEM_ADVISOR
SYS                            OEM_MONITOR
SYS                            OPTIMIZER_PROCESSING_RATE
SYS                            PDB_DBA
SYS                            PROVISIONER
SYS                            RECOVERY_CATALOG_OWNER
SYS                            RECOVERY_CATALOG_OWNER_VPD
SYS                            RECOVERY_CATALOG_USER
SYS                            RESOURCE
SYS                            SCHEDULER_ADMIN
SYS                            SELECT_CATALOG_ROLE
SYS                            SODA_APP
SYS                            SYSUMF_ROLE
SYS                            XDBADMIN
SYS                            XDB_SET_INVOKER
SYS                            XDB_WEBSERVICES
SYS                            XDB_WEBSERVICES_OVER_HTTP
SYS                            XDB_WEBSERVICES_WITH_PUBLIC
SYS                            XS_CACHE_ADMIN
SYS                            XS_CONNECT
SYS                            XS_NAMESPACE_ADMIN
SYS                            XS_SESSION_ADMIN

56行が選択されました。

DBAロールがあることも確認できるかと思う。
その他にも、oracleインストール時に、作成されるロールのほとんどが、付与されていることがわかる。
詳しく確認したい方は、以下のトグルを開いて確認してほしい。

oracle自動作成ロールとSYSユーザの関係

ORACLE_MAINTAINED=Y ロールが、oracleインストール時にoracleが内部的に作成するロールである。

SQL> select DR.ROLE,
  2  case
  3  when sys.GRANTED_ROLE is not null then 'SYSユーザに付与されている'
  4  else '付与されていない'
  5  end
  6  ,ORACLE_MAINTAINED
  7  from DBA_ROLES DR
  8  left join  (select GRANTEE,GRANTED_ROLE from dba_ROLE_PRIVS where GRANTEE='SYS') SYS
  9  on sys.GRANTED_ROLE=DR.ROLE
 10  where ORACLE_MAINTAINED='Y'
 11  order by 1;

ROLE                           CASEWHENSYS.GRANTED_ROLEISNOTNULLTHE O
------------------------------ ------------------------------------ -
ADM_PARALLEL_EXECUTE_TASK      SYSユーザに付与されている            Y
APPLICATION_TRACE_VIEWER       SYSユーザに付与されている            Y
AQ_ADMINISTRATOR_ROLE          SYSユーザに付与されている            Y
AQ_USER_ROLE                   SYSユーザに付与されている            Y
AUDIT_ADMIN                    SYSユーザに付与されている            Y
AUDIT_VIEWER                   SYSユーザに付与されている            Y
AUTHENTICATEDUSER              SYSユーザに付与されている            Y
BDSQL_ADMIN                    SYSユーザに付与されている            Y
BDSQL_USER                     SYSユーザに付与されている            Y
CAPTURE_ADMIN                  SYSユーザに付与されている            Y
CDB_DBA                        SYSユーザに付与されている            Y
CONNECT                        SYSユーザに付与されている            Y
DATAPATCH_ROLE                 SYSユーザに付与されている            Y
DATAPUMP_EXP_FULL_DATABASE     SYSユーザに付与されている            Y
DATAPUMP_IMP_FULL_DATABASE     SYSユーザに付与されている            Y
DBA                            SYSユーザに付与されている            Y
DBFS_ROLE                      SYSユーザに付与されている            Y
DBMS_MDX_INTERNAL              SYSユーザに付与されている            Y
EM_EXPRESS_ALL                 SYSユーザに付与されている            Y
EM_EXPRESS_BASIC               SYSユーザに付与されている            Y
EXECUTE_CATALOG_ROLE           SYSユーザに付与されている            Y
EXP_FULL_DATABASE              SYSユーザに付与されている            Y
GATHER_SYSTEM_STATISTICS       SYSユーザに付与されている            Y
GDS_CATALOG_SELECT             SYSユーザに付与されている            Y
GGSYS_ROLE                     SYSユーザに付与されている            Y
GLOBAL_AQ_USER_ROLE            付与されていない                     Y
GSMADMIN_ROLE                  SYSユーザに付与されている            Y
GSMROOTUSER_ROLE               SYSユーザに付与されている            Y
GSMUSER_ROLE                   SYSユーザに付与されている            Y
GSM_POOLADMIN_ROLE             SYSユーザに付与されている            Y
HS_ADMIN_EXECUTE_ROLE          SYSユーザに付与されている            Y
HS_ADMIN_ROLE                  SYSユーザに付与されている            Y
HS_ADMIN_SELECT_ROLE           SYSユーザに付与されている            Y
IMP_FULL_DATABASE              SYSユーザに付与されている            Y
LOGSTDBY_ADMINISTRATOR         SYSユーザに付与されている            Y
OEM_ADVISOR                    SYSユーザに付与されている            Y
OEM_MONITOR                    SYSユーザに付与されている            Y
OPTIMIZER_PROCESSING_RATE      SYSユーザに付与されている            Y
PDB_DBA                        SYSユーザに付与されている            Y
PROVISIONER                    SYSユーザに付与されている            Y
RECOVERY_CATALOG_OWNER         SYSユーザに付与されている            Y
RECOVERY_CATALOG_OWNER_VPD     SYSユーザに付与されている            Y
RECOVERY_CATALOG_USER          SYSユーザに付与されている            Y
RESOURCE                       SYSユーザに付与されている            Y
SCHEDULER_ADMIN                SYSユーザに付与されている            Y
SELECT_CATALOG_ROLE            SYSユーザに付与されている            Y
SODA_APP                       SYSユーザに付与されている            Y
SYSUMF_ROLE                    SYSユーザに付与されている            Y
WM_ADMIN_ROLE                  付与されていない                     Y
XDBADMIN                       SYSユーザに付与されている            Y
XDB_SET_INVOKER                SYSユーザに付与されている            Y
XDB_WEBSERVICES                SYSユーザに付与されている            Y
XDB_WEBSERVICES_OVER_HTTP      SYSユーザに付与されている            Y
XDB_WEBSERVICES_WITH_PUBLIC    SYSユーザに付与されている            Y
XS_CACHE_ADMIN                 SYSユーザに付与されている            Y
XS_CONNECT                     SYSユーザに付与されている            Y
XS_NAMESPACE_ADMIN             SYSユーザに付与されている            Y
XS_SESSION_ADMIN               SYSユーザに付与されている            Y

58行が選択されました。

このことから、SYSユーザは、oracleが自動作成するすべてのロールを持っており、極めて強い権限を持っていることがわかる。
それに加えて、sysdba権限という、権限の中で異質かつ最強の権限も保持している。

2. sysdba権限について

今まで触れてきたロールや権限は、あくまでもオブジェクトに対する権限である
ということである。
それに対して、sysdba権限はDBの全体管理に関わる権限である
イメージ図を下記に示す。

image.png

DBAロールを所有しているユーザは、DB内のすべてのオブジェクトに対してのアクセス権限やCreate権限を持っているため、DBのオブジェクトに関しては、なんでもできる。
しかし、DBを起動・停止するにはDBAロールではできない。
そこで、登場するのが、sysdba権限である。

image.png
sysdba権限を持っているユーザは、DB村の起動・停止を行うことができる。

その他にもsysdba権限のような権限は、複数存在する。
簡易的だが、紹介する。

  • SYSDBA(DBの起動・停止やバックアップ・リカバリができる権限)
  • SYSOPER(DBの起動・停止を行う権限)
  • SYSASM(ASM全体を管理する権限)
  • SYSBACKUP(RMANを使用したDBのバックアップができる権限)
  • SYSDG(データガードに関するフェイルオーバー等ができる権限)
  • SYSKM(キーの暗号化ができる権限)

上記の特別な権限が付与されているかは、 V$PWFILE_USERS ビューで確認することができる。
こちらについての詳細な話は、第三回に詳しく話す。

3. 類似するsystemユーザについて

systemユーザは、一言でいうと
oracle社が用意した毎日の保守運用作業・データの管理を行う際に使用するユーザ
である。
sysユーザは、強力な権限がある便利な反面、危険を伴うユーザでもある。
そのことから、基本的にほとんど使用しないことが推奨されている。

そこで、基本的な毎日の業務で使用を推奨されているのが、systemユーザである。
systemユーザは、sysdba権限などの特別な権限は付与されてない。
しかし、DBAロールが付与されている


SQL> select GRANTEE,GRANTED_ROLE from dba_ROLE_PRIVS where GRANTEE='SYSTEM'
  2  ;

GRANTEE                        GRANTED_ROLE
------------------------------ ------------------------------
SYSTEM                         DBA
SYSTEM                         AQ_ADMINISTRATOR_ROLE

SQL> select * from V$PWFILE_USERS where USERNAME='SYSTEM';

レコードが選択されませんでした。

SQL>

このことから、基本的な保守運用作業はsystemユーザで実施するのが基本的である。

4. まとめ

  • sysユーザは、DBAロールだけでなく、oracleが内部的に作成したほぼすべてのロールの権限が付与されている。
  • 上記に加えて、sysdba権限という特別な権限も持っている
  • 特別な権限は、sysdba権限のほかにも複数存在する
  • systemユーザは、DBAロールが付与されているoracleが提供する作業用ユーザである
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?