Различие между «SYSDBA», «SYSOPER» и «DBA» в базе данных Oracle

Начинающий разработчики часто путают SYSDBA и DBA между собой. Поэтому столь необходимо осветить различие между ними. Вкратце, SYSDBA – это системная привилегия, а DBA – это роль.
SYSDBA и SYSOPER – это специальные привилегии администратора, которые позволяют выполнять базовые задачи администрирования: запуск или остановка истанса; создание, удаление, открытие или монтирования базы и др. Роль DBA не включает SYSDBA или SYSOPER.

О системной привилегии SYSDBA

Привилегии SYSDBA и SYSOPER позволяют получать доступ к базе данных, даже если база не открыта. Контроль этих привилегий находится за пределами компетенции самой базы данных. SYSDBA и SYSOPER могут также быть расценены как тип подключения, который позволяет выполнять определённые операции для которых привилегии не могут быть назначены другим способом.

Обзор возможностей каждой из привилегий:

SYSDBA:
  • Выполнять STARTUP и SHUTDOWN операции
  • ALTER DATABASE: open, mount, back up, or change character set
  • CREATE DATABASE
  • DROP DATABASE
  • CREATE SPFILE
  • ALTER DATABASE ARCHIVELOG
  • ALTER DATABASE RECOVER
  • Включает привилегию RESTRICTED SESSION
  • ALTER DATABASE RECOVER
  • Позволяет подключаться как пользователь SYS
SYSOPER:
  • Выполнять STARTUP и SHUTDOWN операции
  • CREATE SPFILE
  • ALTER DATABASE OPEN/MOUNT/BACKUP
  • ALTER DATABASE ARCHIVELOG
  • ALTER DATABASE RECOVER (Только полное восстановление. Другие формы восстановления, такие как UNTIL TIME|CHANGE|CANCEL|CONTROLFILE требуют SYSDBA.)
  • Включает привелегию RESTRICTED SESSION
  • Позволяет выполнять базовые операции, но без возможности просмотра данных пользователя
Если подключаться с привилегией SYSOPER или SYSDBA, то вы будете ассоциированы со схемой по умолчанию для данной привилегии, а не с той, которая была назначена пользователю.
Схема по умолчанию для SYSDBA: SYS
Схема по умолчанию для SYSOPER: PUBLIC

Выборка пользователей, которые имеют SYSDBA или SYSOPER привилегии:

SQL>column sysdba format a10
SQL>column sysdba format a10
SQL>select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER
———- ——– ———-
SYS TRUE TRUE
SCOTT TRUE FALSE


О DBA роли

Роль DBA – это предопределённая роль, которая автоматически создаётся для каждой базы данных Oracle. Эта роль содержит все системные привилегии, кроме SYSDBA и SYSOPER. Поэтому она очень мощная и должна назначаться только администраторам, которым требуется полный доступ.

Выборка всех ролей с базы данных:

SQL> select role from dba_roles;
ROLE
———–
CONNECT
RESOURCE
DBA
…..


Выборка всех пользователей, которым назначена DBA роль:

SQL>select * from dba_role_privs where granted_role = ‘DBA’
GRANTEE GRANTED_ROLE ADM DEF
———– ——————- —– ——
SYS DBA YES YES
SYSMAN DBA NO YES
LETS DBA NO YES
SYSTEM DBA YES YES


Замечание: вы не можете назначить привелегию SYSDBA для роли. Это приводит к ошибке:
ORA-01931: cannot grant SYSDBA to a role


Для пользователя базы данных могут быть назначены роль DBA и привилегия SYSDBA:

SQL> select * from dba_role_privs where granted_role = ‘DBA’
GRANTEE GRANTED_ROLE ADM DEF
———- ——————- —— —–
SYS DBA YES YES
SCOTT DBA NO YES
SYSMAN DBA NO YES
LETS DBA NO YES
SYSTEM DBA YES YES


Литература: Oracle® Database Administrator's Guide


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.